【发布时间】:2020-05-10 16:29:40
【问题描述】:
我有一系列简单的线性回归,形式为 y ~ x1、y ~x2、y~ x3 等。
我已经能够运行我所有的线性回归并存储了输出,但是我无法以矢量化方式访问汇总统计信息,例如为每个模型调整 R 平方。
我可以通过 for 循环来完成并遍历每个模型,但我认为必须有更简单的方法来使用 lapply(或 sapply?)并更快地获得结果。
一个可重现的例子如下:
library(tidyverse)
library(broom)
set.seed(6)
DF <- data.frame(Y=rnorm(50, 100, 3),
X1=rnorm(50, 100, 3),
X2=rnorm(50, 100, 3),
X3=rnorm(50, 100, 3),
X4=rnorm(50, 100, 3))
DF_longer = pivot_longer(DF, -Y, names_to = "variable", values_to = "value", values_ptypes = list(val = 'numeric'))
lm1 = DF_longer %>% group_by(variable) %>% do(tidy(lm(Y ~ value, data=.)))
lm2 = DF_longer %>% group_by(variable) %>% do(mod = lm(Y ~ value, data=.))
我想优化的部分如下,我想将每个模型的调整后的 R 平方存储在没有 for 循环的向量中。
lm2_data = summary(lm2$mod[[1]])
lm2_data$adj.r.squared
lm2_data = summary(lm2$mod[[2]])
lm2_data$adj.r.squared
lm2_data = summary(lm2$mod[[3]])
lm2_data$adj.r.squared
lm2_data = summary(lm2$mod[[4]])
lm2_data$adj.r.squared
【问题讨论】:
标签: r regression lapply