【问题标题】:How to only print (adjusted) R-squared of regression model?如何仅打印(调整后的)回归模型的 R 平方?
【发布时间】:2018-11-06 21:56:14
【问题描述】:

我是 R 的初学者。我有一个关于空气污染的数据集。这些列是站点、测量浓度和可能影响浓度的 80 个变量 (v1-v80)。 我想用我自己的代码制作一个基于 R-squared/adj 的正向逐步回归模型(所以我不想使用 step() 或 regsubset() 之类的东西)。因变量是浓度,变量 v1-v80 作为自变量。第一步我写了如下代码(数据集被简化):

  site concentration         v1         v2         v3
1    1   -0.84085548  1.7114409 -0.2857736 -1.0803926
2    2    1.38435934 -0.6029080  0.1381082 -0.1575344
3    3   -1.25549186 -0.4721664  1.2276303 -1.0717600

for (j in names(df)){
  model <- lm(concentration ~ df[[j]], data = df)
  print(j)
  print(summary(model))
}

这很好用,但我只对 R 平方和调整后的 R 平方感兴趣。我试图只打印(调整后的)R 平方:

for (j in names(df)){
  model <- lm(concentration ~ df[[j]], data = df)
  print(j)
  print(summary(model$r.squared))
  print(summary(model$adj.r.squared))
}

但后来我得到了输出(这只是一部分):

[1] "v1"
Length  Class   Mode 
     0   NULL   NULL 
Length  Class   Mode
     0   NULL   NULL
[1] "v2"
Length  Class   Mode 
     0   NULL   NULL 
Length  Class   Mode
     0   NULL   NULL  

等等。

我如何才能仅将相关变量的名称和(调整后的)R 平方作为 for 循环中生成的每个模型的输出?

谢谢!

【问题讨论】:

    标签: r linear-regression


    【解决方案1】:
    library(broom)
    glance(model)[c(1,2)]
    
    Input = ("site concentration         v1         v2         v3
              1    1   -0.84085548  1.7114409 -0.2857736 -1.0803926
              2    2    1.38435934 -0.6029080  0.1381082 -0.1575344
              3    3   -1.25549186 -0.4721664  1.2276303 -1.0717600")
    
    df = read.table(textConnection(Input),header=TRUE)
    
    for (j in names(df)){
        model <- lm(concentration ~ df[[j]], data = df)
        print(j)
        print(glance(model)[c(1,2)])
    }
    
    [1] "site"
        r.squared adj.r.squared
     1 0.02132635    -0.9573473
    [1] "concentration"
        r.squared adj.r.squared
      1         1             1
    [1] "v1"
      r.squared adj.r.squared
    1 0.1717716    -0.6564568
    [1] "v2"
      r.squared adj.r.squared
    1 0.1482473    -0.7035055
    [1] "v3"
      r.squared adj.r.squared
    1 0.9762587     0.9525174
    Warning message:
      In stats::summary.lm(x) :
      essentially perfect fit: summary may be unreliable
    

    使用基础 R

    summary(model)$adj.r.squared
    summary(model)$r.squared
    

    【讨论】:

      猜你喜欢
      • 2018-12-04
      • 2021-02-15
      • 1970-01-01
      • 1970-01-01
      • 2014-06-23
      • 2021-09-26
      • 2016-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多