将 lmlist 系数和残差保存到数据集
save lmlist coefficients and residuals to dataset
我有 100 个组,每个组有 40 个观察值。我知道可能还有其他合适的模型,但我目前只对以下感兴趣。
reg<-lmList(Y ~ Intercept + a + b + c + d | grp,data=data, pool=F)
为了将残差(来自lmList
)保存到我的table中,我只是这样做
data$residual <- residuals(reg)
现在我也想将 beta 系数保存到原始 table。由于每个组只有一组系数,因此该组系数应该相同但组间不同。
coef <- coef(reg)
给我一个包含组系数的列表。但是 R 将其显示为只有 5 列的列表(不包括组名)。
data$coef<-coef[,c(1) ]
给了我拦截但我丢失了组信息。
我正在考虑创建一个带有组标识的单独 table,这样我就可以合并原始 table 和系数 table。但无法弄清楚如何获得组标识以及系数。
如果有更简单的方法,请帮忙。
如果 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
对象......)
我有 100 个组,每个组有 40 个观察值。我知道可能还有其他合适的模型,但我目前只对以下感兴趣。
reg<-lmList(Y ~ Intercept + a + b + c + d | grp,data=data, pool=F)
为了将残差(来自lmList
)保存到我的table中,我只是这样做
data$residual <- residuals(reg)
现在我也想将 beta 系数保存到原始 table。由于每个组只有一组系数,因此该组系数应该相同但组间不同。
coef <- coef(reg)
给我一个包含组系数的列表。但是 R 将其显示为只有 5 列的列表(不包括组名)。data$coef<-coef[,c(1) ]
给了我拦截但我丢失了组信息。
我正在考虑创建一个带有组标识的单独 table,这样我就可以合并原始 table 和系数 table。但无法弄清楚如何获得组标识以及系数。
如果有更简单的方法,请帮忙。
如果 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
对象......)