【发布时间】:2016-05-21 06:54:52
【问题描述】:
根据下面的链接,我创建了一个代码来基于变量对我的数据子集运行回归。
Loop linear regression and saving coefficients
在这个例子中,我创建了一个 DUMMY(0 或 1)来创建子集(实际上我有 3000 个子集)
res <- do.call(rbind, lapply(split(mydata, mydata$DUMMY),function(x){
fit <- lm(y~x1 + x2, data=x)
res <- data.frame(DUMMY=unique(x$DUMMY), coeff=coef(fit))
res
}))
这会产生以下数据集
DUMMY coeff
0.(Intercept) 0 22.8419956
0.x1 0 -11.5623064
0.x2 0 2.1006948
1.(Intercept) 1 4.2020874
1.x1 1 -0.4924303
1.x2 1 1.0917668
然而,我想要的是每个回归一行,以及列中的变量。我还需要包含 p 值和标准误差。
DUMMY interceptx1 coeffx1 p-valuex1 SEx1 coeffx2 p-valuex2 SEx2
0 22.84 -11.56 0.04 0.15 2.10 0.80 0.90
1 4.20 -0.49 0.10 0.60 1.09 0.60 1.20
知道怎么做吗?
【问题讨论】:
-
顺便说一句,仅使用 p 值来确定线性模型的有效性并不总是一个好主意
-
要获取 SE 和 p 值,您需要致电
summary.lm。首先由 Heroka 修改该代码,以便它从一个模型的$coefficients组件和rbind这些值构建一个向量。 -
library(nlme); fits <- lmList(y~x1 + x2 | DUMMY, data=mydata); summary(fits)
标签: r dataframe subset do.call