[英]Using R to create linear models for multiple variables at once but getting summaries per variable
我有一个 dataframe 由 268 个观察值和 21 个自变量( screeningq
)组成。 我还有另一个 dataframe ( firstweekdata
),其中还包括 268 个观察值和各种变量,但我只对一个因变量(V474)感兴趣。 每个观察(行)包括一个人的结果。 screeningq
是firstweekdata
的一个子集。
我正在尝试进行回归分析,将 21 个自变量中的每一个与我感兴趣的因变量一一进行比较。我一直在尝试获得线性 model 摘要,但由于某种原因,我无法获得结果在某种程度上,每个变量都会有一个摘要。
我正在使用的代码如下:
nroscreenq<- ncol(screeningq)
screeninglinearmod <- list()
par(mar=c(1.5,1,1.5,1),mfrow=c(5,5))
for (i in 1:nroscreenq) {
x1 <- screeningq[,i]
scatter.smooth(x1, y=firstweekdata$V474, main=paste("Question", i), xlab="", cex = 0.5)
screeninglinearmod[[i]] <- summary(lm(firstweekdata$V474 ~ screeningq[,i]))
}
我得到以下结果:
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 36.000 21.313 1.689 0.0940
screeningq[, i]1 15.000 30.141 0.498 0.6197
screeningq[, i]100 33.333 22.183 1.503 0.1358
screeningq[, i]17 35.000 30.141 1.161 0.2480
screeningq[, i]23 26.000 30.141 0.863 0.3902
screeningq[, i]25 18.000 30.141 0.597 0.5516
screeningq[, i]29 15.500 26.103 0.594 0.5538
screeningq[, i]32 52.000 30.141 1.725 0.0873
screeningq[, i]35 48.000 30.141 1.593 0.1141
screeningq[, i]37 27.667 24.610 1.124 0.2633
screeningq[, i]38 33.500 26.103 1.283 0.2020
screeningq[, i]44 51.000 30.141 1.692 0.0934
screeningq[, i]46 -9.000 30.141 -0.299 0.7658
screeningq[, i]49 41.667 24.610 1.693 0.0932
screeningq[, i]50 19.667 24.610 0.799 0.4259
screeningq[, i]51 34.250 23.828 1.437 0.1534
screeningq[, i]52 13.333 24.610 0.542 0.5890
screeningq[, i]55 41.000 30.141 1.360 0.1765
screeningq[, i]56 2.333 24.610 0.095 0.9246
screeningq[, i]58 20.333 24.610 0.826 0.4104
screeningq[, i]59 14.667 24.610 0.596 0.5524
screeningq[, i]60 12.333 24.610 0.501 0.6173
screeningq[, i]61 39.000 26.103 1.494 0.1380
screeningq[, i]62 16.667 24.610 0.677 0.4997```
等列表继续更多行
我尝试了多种方法,但最终得到了类似的列表。 我究竟做错了什么?
我已经使用lapply改编了这个建议中的代码。 我认为这就是您要查找的 output,列表中单个自变量 output 的一系列摘要。
# create a toy dataset with one dependent variable and three dependent variables
DV <- rnorm(20, 10, 3)
IV1 <- rnorm(20, 8, 3)
IV2 <- rnorm(20, 9, 3)
IV3 <- rnorm(20, 9, 3)
df <- data.frame(DV, IV1, IV2, IV3)
cols <- list("IV1", "IV2", "IV3")
forms <- paste('DV ~', cols)
forms
#> [1] "DV ~ IV1" "DV ~ IV2" "DV ~ IV3"
a <- lapply(forms, lm, data = df)
a
#> [[1]]
#>
#> Call:
#> FUN(formula = X[[i]], data = ..1)
#>
#> Coefficients:
#> (Intercept) IV1
#> 12.1796 -0.3148
#>
#>
#> [[2]]
#>
#> Call:
#> FUN(formula = X[[i]], data = ..1)
#>
#> Coefficients:
#> (Intercept) IV2
#> 9.8944853 -0.0008378
#>
#>
#> [[3]]
#>
#> Call:
#> FUN(formula = X[[i]], data = ..1)
#>
#> Coefficients:
#> (Intercept) IV3
#> 11.5488 -0.1798
由代表 package (v0.3.0) 于 2021 年 3 月 15 日创建
顺便说一句,我链接的问题和这个答案都是很好的“最小的、可重复的例子”的例子。 我使用了 R package reprex()
来确保示例可重现并将其复制/粘贴到此处。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.