glm中灵活,可变数量的回归量

时间:2018-01-18 05:43:04

标签: r variables regression linear

我有一组线性回归(假设为100)我需要在R中运行可变数量的回归量。一些回归量对于所有100个回归模型都是通用的,但其他回归量是可变的并且取决于具体的依赖性变量。例如,这里有三个这样的模型:

Y1~x1 + x2 + x3 + z1 + z2

Y2~x1 + x2 + x3 + z4 + z5 + z6

Y3~x1 + x2 + x3 + z3

您可以注意到,因变量(Y1,Y2和Y3)都是不同的。对于自变量(即回归量),有三个对所有回归模型(x1,x2和x3)都是常数,但是有一些回归量是因变量特定的(z1,z2,z3,z4) ,z5,z6)。

如果我要将所有变量(依赖和独立)存储在一个数据框中,每个数据框中的行对应于每个样本,并且对应于变量的列,是否有一种简单的方法可以通过创建某种循环来运行所有的回归必须分别编写每个回归?随后,我想提取残差并将它们存储在新的数据框中。

1 个答案:

答案 0 :(得分:0)

以下是使用数据集mtcars作为示例的一种方法。

在公式中,~.表示您要使用子集数据的所有变量(在每个lapply迭代中指定子集)

data("mtcars")

# variables: list of vectors with the regressors and the dependent variable
# Note that the DP has to be the first variable of each vector here. 

variables <- list(c(1,2,3,4), c(1,3,5), c(1,4,5,6))
model_list <- lapply(1:length(variables), function(x) { 
              lm(mtcars[,variables[[x]][1]] ~ ., 
              data = mtcars[, variables[[x]][-1]])})

您现在可以使用

获取残差
lapply(model_list, residuals)