每个独立变量的线性回归循环单独依赖于依赖

run*_*rds 8 statistics r

我想弄清楚如何创建一个循环或使用其中一个应用函数来获取数据集中每个变量对因变量的单个1:1回归信息.

让我们说我正在使用mtcars.我将如何编写R代码来获取数据框中的每个变量并将其针对MPG进行回归?

更好的是获得每个自变量的摘要,并具有某种名称赋值,例如x1 =,x2 =等

summary(lm(mpg~eachvar,data=mtcars))
Run Code Online (Sandbox Code Playgroud)

Joh*_*ohn 11

这将为你做到.

lapply( mtcars[,-1], function(x) summary(lm(mtcars$mpg ~ x)) )
Run Code Online (Sandbox Code Playgroud)

data.frame对象是一个包含其他一些功能的列表,因此这将通过mtcars的每一列(第一列除外)并执行回归.如果将结果列表保存为类似的内容,L则只需使用与原始data.frame中的列相同的名称或编号即可轻松访问每个列表.所以L$cyl给出了回归总结mpgcyl.


Dav*_*urg 7

Johns解决方案的data.table版本

library(data.table)
Fits <- 
    data.table(mtcars)[, 
              .(MyFits = lapply(.SD, function(x) summary(lm(mpg ~ x)))), 
              .SDcols = -1]
Run Code Online (Sandbox Code Playgroud)

代码的一些解释

  • data.table将转换mtcarsdata.table对象
  • .SD也是一个data.table包含想要操作的列的对象
  • .SDcols = -1告诉.SD不要使用第一列(因为我们不想适合lm(mpg ~ mpg)
  • lapply只是在所有列上运行模型.SD(除了我们跳过的列)并返回类的对象list

Fit 将是一个摘要列表,您可以使用它来检查它们

Fits$MyFits
Run Code Online (Sandbox Code Playgroud)

但是你也可以操作它们,例如,coef在每个配合上应用功能

Fits[, lapply(MyFits, coef)]
Run Code Online (Sandbox Code Playgroud)

或者得到 r.squered

Fits[, lapply(MyFits, `[[`, "r.squared")]
Run Code Online (Sandbox Code Playgroud)


Vic*_*orp 3

Hi try something like that :

\n\n
models <- lapply(paste("mpg", names(mtcars)[-1], sep = "~"), formula)\nres.models <- lapply(models, FUN = function(x) {summary(lm(formula = x, data = mtcars))})\nnames(res.models) <- paste("mpg", names(mtcars)[-1], sep = "~")\nres.models[["mpg~disp"]]\n\n\n# Call:\n# lm(formula = x, data = mtcars)\n\n# Residuals:\n#     Min      1Q  Median      3Q     Max \n# -4.8922 -2.2022 -0.9631  1.6272  7.2305 \n\n# Coefficients:\n#              Estimate Std. Error t value Pr(>|t|)    \n# (Intercept) 29.599855   1.229720  24.070  < 2e-16 ***\n# disp        -0.041215   0.004712  -8.747 9.38e-10 ***\n# ---\n# Signif. codes:  0 \xe2\x80\x98***\xe2\x80\x99 0.001 \xe2\x80\x98**\xe2\x80\x99 0.01 \xe2\x80\x98*\xe2\x80\x99 0.05 \xe2\x80\x98.\xe2\x80\x99 0.1 \xe2\x80\x98 \xe2\x80\x99 1\n\n# Residual standard error: 3.251 on 30 degrees of freedom\n# Multiple R-squared:  0.7183,  Adjusted R-squared:  0.709 \n# F-statistic: 76.51 on 1 and 30 DF,  p-value: 9.38e-10\n
Run Code Online (Sandbox Code Playgroud)\n