【发布时间】:2018-05-15 19:40:29
【问题描述】:
我有以下回归模型;
models <- lapply(1:25, function(x) lm(Y_df[,x] ~ X1))
在 Y_df 数据框中的 25 列上运行 25 次回归。
其中一个输出可以显示为;
models[15] # Gives me the coefficients for model 15
Call:
lm(formula = Y_df[, x] ~ X1)
Coefficients:
(Intercept) X1
0.1296812 1.0585835
我可以将其存储在单独的 df 中。我遇到的问题是关于 Std。错误、R2、残差等。
我想将这些也存储到单独的数据框中。
我可以运行单个回归并提取摘要,就像正常的 R 回归输出一样。
ls_1 <- summary(models[[1]])
ls_1
ls_1$sigma
但是我希望直接从运行 25 次回归的代码行中获取值。
此代码有效
> (models[[15]]$coefficients)
(Intercept) X1
-0.3643446787 1.0789369642
但是;这段代码没有。
> (models[[15]]$sigma)
NULL
我尝试了各种不同的组合来尝试提取这些结果,但没有成功。
以下内容完全符合我的要求。我曾希望有一种方法可以将单词 coef 替换为 Std Error 或 R2 等,但这不起作用。
models <- lapply(1:25, function(x) lm(Y_df[,x] ~ X1))
# extract just coefficients
coefficients <- sapply(Y_df, coef)
理想情况下,我想存储上述模型中的Std Error
【问题讨论】:
-
非常简单。您需要计算摘要才能获得额外的统计信息。
-
不是重复的。我知道如何单独提取系数、Rsquared 等,但对于这个特定任务,我想提取 25 个回归的值并将它们存储在 df 中
-
在你的 sapply 中使用
summary(不要忘记simplify = FALSE),你应该可以使用sapply-方式获取摘要统计信息。 -
嗨,Ben 我可以接受,我发现大多数搜索答案的新用户在阅读所有 cmets 之前很久就会检查答案。关于如何获得
lm结果的相关但未链接的答案过多,IV 或 DV 的数量有所不同,实际上可以通过循环、应用系列或 purrr。由于某些细微差别,它们可能不是直接重复的,但它们都是相关的
标签: r linear-regression