我想向线性回归输出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
我已经找了好一阵子了,但是还没有线索。任何帮助将不胜感激。
这将产生所需的输出:
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")
这是您可以使用的基本工作流程,它使用dplyr
和broom
将您的级别与系数表结合在一起。现在,它要求您知道哪些变量是因素。如果愿意,可以将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