如何显示lm输出的参考水平?

问题描述 投票:0回答:2

我想向线性回归输出lm()的最终输出添加参考水平。例如:

levels(iris$Species)
"setosa"     "versicolor" "virginica" 

summary(lm(Sepal.Length ~ Petal.Width + Species, iris))

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)        4.78044    0.08308  57.543  < 2e-16 ***
Petal.Width        0.91690    0.19386   4.730 5.25e-06 ***
Speciesversicolor -0.06025    0.23041  -0.262    0.794    
Speciesvirginica  -0.05009    0.35823  -0.140    0.889    

我想拥有它:

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)        4.78044    0.08308  57.543  < 2e-16 ***
Petal.Width        0.91690    0.19386   4.730 5.25e-06 ***
Speciessetosa      
Speciesversicolor -0.06025    0.23041  -0.262    0.794    
Speciesvirginica  -0.05009    0.35823  -0.140    0.889    

我已经找了好一阵子了,但是还没有线索。任何帮助将不胜感激。

r linear-regression
2个回答
1
投票

这将产生所需的输出:

res <- capture.output(summary(lm(Sepal.Length ~ Petal.Width + Species, data = iris)))
res[14:22] <- res[13:21]            
res[13] <- "Speciessetosa"
cat(res, sep = "\n")

0
投票

这是您可以使用的基本工作流程,它使用dplyrbroom将您的级别与系数表结合在一起。现在,它要求您知道哪些变量是因素。如果愿意,可以将NA更改为""。它还按字母顺序组织输出,但并不总是将参考组放在第一位。让我知道您是否对此缩放有任何疑问:

library(broom)
library(dplyr)

reg_obj <- lm(Sepal.Length ~ Petal.Width + Species, iris)

factor_levels <- tibble(term = paste0("Species", levels(iris$Species)))

full_join(tidy(reg_obj), factor_levels, by = "term") %>%
  arrange(term)

 term              estimate std.error statistic    p.value
  <chr>                <dbl>     <dbl>     <dbl>      <dbl>
1 (Intercept)         4.78      0.0831    57.5    3.16e-102
2 Petal.Width         0.917     0.194      4.73   5.25e-  6
3 Speciessetosa      NA        NA         NA     NA        
4 Speciesversicolor  -0.0603    0.230     -0.262  7.94e-  1
5 Speciesvirginica   -0.0501    0.358     -0.140  8.89e-  1
© www.soinside.com 2019 - 2024. All rights reserved.