将 lm 摘要中的 R 平方保存为数据框
Save R-squared from lm summary as a dataframe
我想将 lm model 的结果保存到数据框中。我生成了一个空数据框 (Startframe),我想在其中保存结果。
在这种情况下,我包含数据的数据框称为测试数据。它在第一列中包含日期,然后在其余列中包含几个站点。
到目前为止,这段代码正在努力获取估计值、标准值。误差、t 值和 Pr(>|t|)。
for(i in 2:ncol(testdata)) {
x <- testdata[,1]
y <- testdata[,i]
mod <- lm(y ~ x)
summary(mod)
Startframe[i,] <- c(i,
summary(mod)[['coefficients']]['(Intercept)','Estimate'],
summary(mod)[['coefficients']]['x','Estimate'],
summary(mod)[['coefficients']]['x','Std. Error'],
summary(mod)[['coefficients']]['x','t value'],
summary(mod)[['coefficients']]['x','Pr(>|t|)'])
但是我怎样才能同时提取 r.squared?
我试图将 summary(mod)[['r.squared']] 添加到列表中,但它给了我错误的数字。
我知道 str(summary(mod)) 给我一个概述,但我不知道如何将它添加到我的循环中。
感谢您的帮助。
在不同数据集上使用相同模型的好方法是使用 tidyverse
方法和 broom
包。
在此示例中,我使用 diamonds
数据集来测试克拉和深度如何影响钻石在不同切工中的价格。
require(tidyverse)
require(broom)
diamonds %>%
nest(-cut) %>%
mutate(model = purrr::map(data, function(x) {
lm(price ~ carat + depth, data = x)}),
values = purrr::map(model, glance),
r.squared = purrr::map_dbl(values, "r.squared"),
pvalue = purrr::map_dbl(values, "p.value")) %>%
select(-data, -model, -values)
cut r.squared pvalue
<ord> <dbl> <dbl>
1 Ideal 0.867 0
2 Premium 0.856 0
3 Good 0.851 0
4 Very Good 0.859 0
5 Fair 0.746 0
我想将 lm model 的结果保存到数据框中。我生成了一个空数据框 (Startframe),我想在其中保存结果。
在这种情况下,我包含数据的数据框称为测试数据。它在第一列中包含日期,然后在其余列中包含几个站点。
到目前为止,这段代码正在努力获取估计值、标准值。误差、t 值和 Pr(>|t|)。
for(i in 2:ncol(testdata)) {
x <- testdata[,1]
y <- testdata[,i]
mod <- lm(y ~ x)
summary(mod)
Startframe[i,] <- c(i,
summary(mod)[['coefficients']]['(Intercept)','Estimate'],
summary(mod)[['coefficients']]['x','Estimate'],
summary(mod)[['coefficients']]['x','Std. Error'],
summary(mod)[['coefficients']]['x','t value'],
summary(mod)[['coefficients']]['x','Pr(>|t|)'])
但是我怎样才能同时提取 r.squared?
我试图将 summary(mod)[['r.squared']] 添加到列表中,但它给了我错误的数字。
我知道 str(summary(mod)) 给我一个概述,但我不知道如何将它添加到我的循环中。
感谢您的帮助。
在不同数据集上使用相同模型的好方法是使用 tidyverse
方法和 broom
包。
在此示例中,我使用 diamonds
数据集来测试克拉和深度如何影响钻石在不同切工中的价格。
require(tidyverse)
require(broom)
diamonds %>%
nest(-cut) %>%
mutate(model = purrr::map(data, function(x) {
lm(price ~ carat + depth, data = x)}),
values = purrr::map(model, glance),
r.squared = purrr::map_dbl(values, "r.squared"),
pvalue = purrr::map_dbl(values, "p.value")) %>%
select(-data, -model, -values)
cut r.squared pvalue
<ord> <dbl> <dbl>
1 Ideal 0.867 0
2 Premium 0.856 0
3 Good 0.851 0
4 Very Good 0.859 0
5 Fair 0.746 0