Seite 2 von 2
Re: Mittel von Differenzen
Verfasst: Di Aug 11, 2020 10:35 pm
von bigben
zinbu hat geschrieben: ↑Di Aug 11, 2020 9:19 pmHabt ihr noch einen Tipp wie ich die Werte dann wieder in ein geeignetes Format bekomme, sodass ich sie wieder in einer Tabelle den IDs zuordnen kann?
Wozu willst Du das machen? Aufgabenstellung war, die Steigungen der einen Gruppe mit den Steigungen der anderen Gruppe zu vergleichen. Du kannst meinen Vorschlag einmal auf die eine Gruppe und einmal auf die andere Gruppe anwenden und hast alle Daten für diesen Vergleich.
Wenn Du uns nach weiteren Auswertungsschritten fragen willst, oder die Situation doch komplizierter ist, dann bitte alle auf einmal auf den Tisch legen, damit wir von Anfang an eine gute Strategie verfolgen können, nicht immer wieder in kleinen Häppchen nachlegen. Das ist beliebt, stört aber eher.
LG,
Bernhard
Re: Mittel von Differenzen
Verfasst: Di Aug 11, 2020 10:58 pm
von zinbu
Ja stimmt du hast recht. Ich hatte nicht daran gedacht das ganze einfach 2 mal zu machen.
Zu viel um die Ecke gedacht. Danke für die Hilfe!
Re: Mittel von Differenzen
Verfasst: Mi Aug 12, 2020 5:39 am
von bigben
Im Zweifel sind zwei getrennte Durchgänge schonender für Deinen RAM.
LG, Bernhard
Re: Mittel von Differenzen
Verfasst: So Okt 18, 2020 9:02 pm
von zinbu
Hallo Bernhard,
ich habe mir mittlerweile mehr RAM besorgt und versuche das ganze nochmal mit der ersten Variante
Um also nochmal auf deinen ersten Vorschlag zurückzukommen.
bigben hat geschrieben: ↑Di Aug 11, 2020 3:56 pm
Also, hier mal eine Beispiellösung. Ich habe eine Variable "time" dazu erfunden und manuell ergänzt. Sie zeigt an, wie oft eine ID schon gemessen wurde. Die Variable müsste man automatisch erzeugen, aber erstmal will ich hören, ob das so zum Problem passt:
Code: Alles auswählen
bsp <- data.frame(ID = as.factor(c(1, 1, 2, 2, 2, 2, 3, 3, 3)),
time = c(0, 1, 0, 1, 2, 3, 0, 1, 2),
score =c (13.2, 12.4, 14.7, 14, 13.2, 12.9, 13.6, 13, 12.3))
fit <- lm(score ~ ID:time + ID - 1, data = bsp)
summary(fit)
Das erzeugt für jede ID eine eigene Regressionsgerade mit einer eigenen Steigung und eine eigenen Intercept:
Code: Alles auswählen
> summary(fit)
Call:
lm(formula = score ~ ID:time + ID - 1, data = bsp)
Residuals:
1 2 3 4 5 6 7 8 9
0.00000 0.00000 0.07000 -0.01000 -0.19000 0.13000 -0.01667 0.03333 -0.01667
Coefficients:
Estimate Std. Error t value Pr(>|t|)
ID1 13.20000 0.14103 93.598 2.69e-06 ***
ID2 14.63000 0.11799 123.991 1.16e-06 ***
ID3 13.61667 0.12874 105.768 1.86e-06 ***
ID1:time -0.80000 0.19944 -4.011 0.02780 *
ID2:time -0.62000 0.06307 -9.830 0.00224 **
ID3:time -0.65000 0.09972 -6.518 0.00734 **
Demnach wäre die durchschnittliche Zunahme von ID1 -0,8/Zeit, die von ID2 -0,62/Zeit und die von ID3 wäre -0,65/Zeit. Geht das in die richtige Richtung?
LG,
Bernhard
kann ich mir auch nur die Steigungen der Regressionsgeraden der einzelnen IDs ausgeben lassen? Diese möchte ich ja eigentlich vergleichen mit Mittelwerten und Graphen usw
Re: Mittel von Differenzen
Verfasst: So Okt 18, 2020 9:51 pm
von bigben
Hallo!
Ich verstehe die Frage nicht, denn die Steigungen der einzelnen IDs stehen schon da. Du musst sie nur noch abschreiben. Oder geht es vielleicht darum, wie man auf diese Werte ohne Abschreiben in R einfach weiterverwenden kann?
Dann empfehle ich aus dem Paket
broom die Funktion
tidy oder, wenn das Installieren von
broom zuviel Aufwand macht, einfach die Funktion
coef.
LG,
Bernhard
PS: Als Grafik zu meinem o. g. Beispiel dann z. B. so:
Code: Alles auswählen
library(tidy)
library(ggplot2)
ggplot(tidy(fit)[4:6,]) +
geom_errorbar(aes(x = term,
ymin = estimate - 1.96*std.error,
ymax = estimate + 1.96*std.error),
width=.1, col="darkgrey", lwd=1.5) +
geom_point(aes(x=term, y=estimate), size=4)
Re: Mittel von Differenzen
Verfasst: So Okt 18, 2020 10:54 pm
von zinbu
Genau darum geht es mir, ja. Mein Datensatz ist zu groß um alles abzuschreiben.
Ich werde mich mal mit tidy befassen, danke dir!
Re: Mittel von Differenzen
Verfasst: Mo Okt 19, 2020 6:50 am
von bigben
Sorry, ich sehe gerade den Tippfehler in meinem Code. Die Funktion heißt tidy aber das Paket heißt broom. Nicht auch tidy.
Bernhard