【问题标题】:Running several simple Regression in R在 R 中运行几个简单的回归
【发布时间】:2018-09-30 15:32:25
【问题描述】:

所以我有一个包含 188 行和 65 列的与世界发展指标和出生统计数据相关的数据集。我正在尝试使用有目的的选择方法来创建回归模型。第一步是查看所有单独的简单线性模型。

我的目标是在 R 中针对我的响应针对我的每个变量运行回归模型。我知道我可以运行lm(x$v30 ~ x$v1),这将为其中一个变量提供回归。但是,我希望能够一步完成,并将所有 p 值拉入表格或将它们写入 CSV。

我一直在关注这个,但这并没有很好地给出 P 值:R loop for Regression

【问题讨论】:

  • 如果您提供数据的sample,这将更容易回答

标签: r loops regression


【解决方案1】:

首先,除非您知道自己在做什么,否则我不建议您这样做。另请阅读选择偏差、错误发现率等内容。

在下文中,我使用的是 iris 数据集,并将前三列回归到第四列。您可以轻松地将其更改为您拥有的数据。

使用扫帚包不是强制性的。如果您不希望这样,请删除 tidy`` command in thelapply 函数。

library(broom)

list_out <- lapply(colnames(iris)[1:3], function(i)
             tidy(lm(as.formula(paste("Petal.Width ~", i)), data = iris)))

# [[1]]
# term   estimate  std.error statistic      p.value
# 1  (Intercept) -3.2002150 0.25688579 -12.45773 8.141394e-25
# 2 Sepal.Length  0.7529176 0.04353017  17.29645 2.325498e-37
# 
# [[2]]
# term   estimate std.error statistic      p.value
# 1 (Intercept)  3.1568723 0.4130820  7.642242 2.474053e-12
# 2 Sepal.Width -0.6402766 0.1337683 -4.786461 4.073229e-06
# 
# [[3]]
# term   estimate   std.error statistic      p.value
# 1  (Intercept) -0.3630755 0.039761990 -9.131221 4.699798e-16
# 2 Petal.Length  0.4157554 0.009582436 43.387237 4.675004e-86

将它们放入 data.frame

do.call(rbind, list_out)

#          term   estimate   std.error  statistic      p.value
# 1  (Intercept) -3.2002150 0.256885790 -12.457735 8.141394e-25
# 2 Sepal.Length  0.7529176 0.043530170  17.296454 2.325498e-37
# 3  (Intercept)  3.1568723 0.413081984   7.642242 2.474053e-12
# 4  Sepal.Width -0.6402766 0.133768277  -4.786461 4.073229e-06
# 5  (Intercept) -0.3630755 0.039761990  -9.131221 4.699798e-16
# 6 Petal.Length  0.4157554 0.009582436  43.387237 4.675004e-86

【讨论】:

  • 谢谢。这最终不是我的第一选择,因为我希望能够将 P 值导出到 Excel 中,但我运行了上述内容并将它们手动输入到 Excel 中。谢谢!
  • @Derek 我添加了几行本可以让生活更轻松的内容。
猜你喜欢
  • 2020-05-14
  • 1970-01-01
  • 2019-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多