【问题标题】:Regarding multiple linear models simultaneously同时考虑多个线性模型
【发布时间】:2019-05-10 11:47:56
【问题描述】:

我正在尝试同时运行许多线性回归模型。请帮我为此编写代码。

我正在处理两个数据框。在第一个数据框中有 100 个因变量,在第二个数据框中我有 100 个自变量。现在我想要简单的线性模型,比如

lm1 <- lm(data_frame_1[[1]] ~ data_frame_2[[1]])
lm2 <- lm(data_frame[[2]] ~ data_frame[[2]]) 

等等。这意味着我必须运行 100 个回归模型。我想同时做到这一点。请帮助我制作相应的代码以同时运行这些所有模型。

【问题讨论】:

  • 谢谢瑞巴拉达斯

标签: r


【解决方案1】:

你说的同时是什么意思不是很清楚。但也许在你的情况下做一个循环很好?

model.list = list()
for (i in 1:100){
  model.list[[i]] = lm(data.frame.1[[i]] ~ data.frame2[[i]])
}

【讨论】:

    【解决方案2】:

    使用最后注释中定义的dataframe_1dataframe_2,我们定义了一个函数LM,它接受一个x 名称和y 名称,并使用这些数据帧中的列对x 执行y 回归。结果是lm 对象的列表。请注意,每个输出列表组件的输出中的 Call: 行正确标识了使用了哪些列。

    LM <- function(xname, yname) {
      fo <- formula(paste(yname, "~", xname))
      do.call("lm", list(fo, quote(cbind(dataframe_1, dataframe_2))))
    }
    Map(LM, names(dataframe_1), names(dataframe_2))
    

    给予:

    $x1
    
    Call:
    lm(formula = y1 ~ x1, data = cbind(dataframe_1, dataframe_2))
    
    Coefficients:
    (Intercept)           x1  
         3.0001       0.5001
    
    ... etc ...
    

    注意

    使用内置的anscombe 数据框将dataframe_1 定义为x 列,将data_frame_2 定义为y 列。

    dataframe_1 <- anscombe[grep("x", names(anscombe))]
    dataframe_2 <- anscombe[grep("y", names(anscombe))]
    

    【讨论】:

    • 感谢 G.Grothendieck
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    • 2011-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多