使用数据子集的线性回归输出 R 平方

Output R-squared using Linear Regression on subsets of data

我有一个数据集,其中 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))

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

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

glance 采用单一线性模型和 returns 汇总统计的单行数据框。