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