繁体   English   中英

如何从 R 中的回归 model 列表中提取对象?

[英]How to extract objects from a regression model list in R?

我想编写一个 function my_function ,它将 dataframe 作为输入。 在这个 function 中,我运行了一个逻辑回归来预测影响观察是否被禁止的决定的重要因素。 显着性定义为 p 值小于 0.05 ( p-value < 0.05 )。 我不知道如何提取这些因素。

my_function(data){
   fit <- glm(is_prohibited ~ ., data, family = "binomial")
}

我不知道如何检查重要性的因素并提取我需要的因素,因为我只能提取 model 的系数。

数据:

structure(list(is_prohibited = c("No", "No", "No", "No", "No", 
"No", "No", "No", "No", "No", "No", "No", "No", "No", "No", "Yes", 
"Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes", 
"Yes", "Yes", "Yes", "Yes", "Yes"), weight = c(69L, 79L, 82L, 
81L, 84L, 81L, 64L, 76L, 77L, 88L, 86L, 84L, 89L, 84L, 86L, 82L, 
84L, 88L, 88L, 89L, 86L, 76L, 87L, 67L, 70L, 76L, 71L, 91L, 72L, 
88L), length = c(53L, 52L, 54L, 50L, 48L, 51L, 53L, 52L, 53L, 
52L, 46L, 52L, 52L, 50L, 47L, 54L, 54L, 50L, 49L, 50L, 50L, 57L, 
47L, 50L, 50L, 51L, 52L, 52L, 48L, 54L), width = c(17L, 21L, 
20L, 23L, 19L, 20L, 16L, 20L, 23L, 23L, 19L, 17L, 22L, 23L, 23L, 
24L, 20L, 21L, 20L, 17L, 20L, 18L, 21L, 24L, 21L, 23L, 18L, 21L, 
17L, 20L), type = c("Suitcase", "Bag", "Suitcase", "Bag", "Suitcase", 
"Bag", "Suitcase", "Bag", "Suitcase", "Bag", "Suitcase", "Bag", 
"Suitcase", "Bag", "Suitcase", "Bag", "Suitcase", "Bag", "Suitcase", 
"Bag", "Suitcase", "Bag", "Suitcase", "Bag", "Suitcase", "Bag", 
"Suitcase", "Bag", "Suitcase", "Bag")), row.names = c(NA, 30L
), class = "data.frame")

我相信您正在寻找 broom::tidy:

fit <- glm(as.factor(is_prohibited) ~ ., data, family = "binomial")

library(broom)
tidy(fit)

  term         estimate std.error statistic p.value
  <chr>           <dbl>     <dbl>     <dbl>   <dbl>
1 (Intercept)  -0.798     11.3      -0.0704   0.944
2 weight        0.00713    0.0534    0.133    0.894
3 length        0.0201     0.166     0.121    0.903
4 width        -0.0330     0.174    -0.189    0.850
5 typeSuitcase -0.265      0.822    -0.322    0.747

tidy(fit) 返回一个标准数据框,您可以在其中访问系数、p 值等以进行进一步计算。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM