我有100个小组,每个小组有40个观察。我知道可能还有其他合适的模型,但我目前只对以下内容感兴趣。
reg<-lmList(Y ~ Intercept + a + b + c + d | grp,data=data, pool=F)
为了将残差(从lmList
)保存到我的桌子,我只是做
data$residual <- residuals(reg)
现在我想将beta系数保存到原始表中。由于每个组只有一组系数,因此对于组而言应该是相同的,但在组之间应该是不同的。
coef <- coef(reg)
给出了一个包含组系数的列表。但是,R将其显示为仅包含5列的列表(不包括组名称)。 data$coef<-coef[,c(1) ]
给了我拦截但我丢失了群组信息。我正在考虑使用组标识创建一个单独的表,以便我只合并原始表和系数表。但无法弄清楚如何获得群体识别以及系数。
如果有更简单的方法可以帮助您。
答案 0 :(得分:0)
如果fm1
是您的拟合lmList
对象,那么我认为只需将行名称添加到其他列中就可以执行您想要的操作:
library(nlme)
fm1 <- lmList(distance ~ age | Subject, Orthodont)
res <- data.frame(Subject=rownames(coef(fm1)),coef(fm1),check.names=FALSE)
rownames(res) <- NULL ## now redundant
head(res)
Subject (Intercept) age
1 M16 16.95 0.550
2 M05 13.65 0.850
...
然后你应该能够merge()
(虽然与Orthodont
对象合并似乎有问题 - 我想这可能是因为它是一个奇怪的groupedData
对象......)