【问题标题】:Output R-squared using Linear Regression on subsets of data使用线性回归对数据子集输出 R 平方
【发布时间】:2018-03-10 22:53:09
【问题描述】:

我有一个以lagpsitvar 作为变量的数据集。

set.seed(560)
df<-data.frame(lag= rep(1:40, each=228), psit= rep(rnorm(228, 20, 
10)),var=rnorm(9120, 50, 10))

对于lag 的每个子集,我想运行一个线性回归,其中psit 由var lm(psit~var, df) 预测。我想将模型的 R 平方值、F 统计量和 p 值输出到数据帧中。

output<-data.frame(lag= rep(1:40, each=1), rsqrd= rep(rnorm(40, .5, 
0.01)),fstat=rnorm(40,5, 0.05), pvalue=rnorm(40,0.01, 0.1))

我试过了:

models <- 
  df %>%
  group_by(lag) %>%
  do(model = lm(psit ~ var,data = .))


rsqrd<- 
  model %>%
  do(data.frame(
   lag = .$lag,
    summary(.)$r.squared, summary(.)$fstatistic,summary(.)$pvalue))

【问题讨论】:

    标签: r linear-regression tidyverse


    【解决方案1】:

    您可以使用 broom 库的glance 函数从一系列线性模型中获取您想要的汇总统计数据:

    library(broom)
    rsqrd <- 
        models %>%
        ungroup() %>% group_by(lag) %>%
        do(glance(.$model[[1]]))
    

    glance 采用单个线性模型并返回汇总统计的单行数据框。

    【讨论】:

      猜你喜欢
      • 2017-11-13
      • 2020-12-14
      • 2020-09-20
      • 2018-08-20
      • 1970-01-01
      • 2015-10-03
      • 2021-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多