将lm摘要中的R平方保存为数据帧

问题描述 投票:1回答:1

我想将lm模型的结果保存到数据帧中。我生成了一个空数据帧(Startframe),我想保存结果。

在这种情况下,包含数据的数据框称为testdata。它包含第一列中的日期,然后是其余列中的几个站。

到目前为止,这段代码正在努力获得Estimate,Std。错误,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))给了我一个概述,但我无法弄清楚如何将它添加到我的循环中。

谢谢你的帮助。

r regression lm summary
1个回答
1
投票

在不同数据集上使用相同模型的好方法是使用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
© www.soinside.com 2019 - 2024. All rights reserved.