我试图在数据表中对变量对重复一组线性回归。我有三个独立变量y1
,y2
,y3
和10个解释变量x1
到x10
。每个系列都缺少一些观察结果。
在下面的示例中,我想为每对ys
和xs
重复第二行命令。
d <- data.table(country=rep(c('a','b','c'),c(10,10,10)),y1=rnorm(30),y2=rnorm(30),x1=runif(30),x2=runif(30))
d[(!is.na(y1) & !is.na(x1)), .(beta1=summary(lm(y1~x1))$coefficients[2,1], p1=summary(lm(y1~x1))$coefficients[2,4]) ,by=country]
答案 0 :(得分:1)
这是一个更基础的方法。您可以使用data.table::CJ
或expand.grid
生成x&s和y的组合。然后浏览每个组合以执行线性回归。
combi <- CJ(grep("^x", names(d), value=TRUE),grep("^y", names(d), value=TRUE))
lmRes <- apply(combi, 1, function(x) {
fml <- as.formula(paste(x["V2"],"~",x["V1"]))
lm(fml, d)
})
lmRes
在加入组合之前,没有从d
所有x和y组合生成大数据集,可能没有更简单的方法可以通过连接表来解决这个问题