将lmlist系数和残差保存到数据集

时间:2016-05-25 21:55:32

标签: r regression nlme

我有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) ]给了我拦截但我丢失了群组信息。

我正在考虑使用组标识创建一个单独的表,以便我只合并原始表和系数表。但无法弄清楚如何获得群体识别以及系数。

如果有更简单的方法可以帮助您。

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对象......)

相关问题