按 R 中的最小列值对数据框列表进行排序

pgcudahy

作为创建多变量逻辑回归的准备工作,我正在进行单变量回归并希望选择 p < 0.20 的变量以包含在多变量模型中。我可以将所需的变量映射到glm并获得模型的输出,但我正在努力按 p 值的等级对它们进行排序。

这是我到目前为止:

predictor1 <- c(0,1.1,2.4,3.1,4.0,5.9,4.2,3.3,2.2,1.1)
predictor2 <- as.factor(c("yes","no","no","yes","yes","no","no","yes","no","no"))
predictor3 <- as.factor(c("a", "b", "c", "c", "a", "c", "a", "a", "a", "c"))
outcome <- as.factor(c("alive","dead","alive","dead","alive","dead","alive","dead","alive","dead"))
df <- data.frame(pred1 = predictor1, pred2 = predictor2, pred3 = predictor3, outcome = outcome)
predictors <- c("pred1", "pred2", "pred3")
df %>%
    select(predictors) %>%
    map(~ glm(df$outcome ~ .x, data = df, family = "binomial"))  %>%
    #Extract odds ratio, confidence interval lower and upper bounds, and p value
    map(function (x, y) data.frame(OR = exp(coef(x)), 
        lower=exp(confint(x)[,1]), 
        upper=exp(confint(x)[,2]),
        Pval = coef(summary(x))[,4]))

此代码吐出每个模型的摘要

$pred1
                OR   lower          upper           Pval
    (Intercept) 0.711082 0.04841674 8.521697    0.7818212
    .x          1.133085 0.52179227 2.653040    0.7465663
$pred2
                OR   lower          upper           Pval
    (Intercept) 1   0.18507173  5.40331     1
    .xyes   1   0.07220425  13.84960    1
$pred3
                OR   lower          upper           Pval
    (Intercept) 0.25    0.0127798   1.689944    0.2149978
    .xb         170179249.43 0.0000000  NA  0.9961777
    .xc         12.00   0.6908931   542.678010  0.1220957 

但是对于我的真实数据集,有几十个预测变量,所以我需要一种对输出进行排序的方法。最好通过每个模型中的最小(非截距)p 值。也许我为每个模型的摘要选择的数据结构不是最好的,所以任何关于如何在更灵活的数据结构中获取相同信息的建议也会很好。

A. 苏里曼

使用map_dfr而不是map,用截距过滤行然后做arrange使用tidyfrombroom而不是您的自定义函数。

library(broom)    
df %>%
   select(predictors) %>%
   map(~ glm(df$outcome ~ .x, data = df, family = "binomial")) %>%
   map_dfr(tidy, .id='Model') %>% 
   filter(term!="(Intercept)") %>% arrange(p.value)

# A tibble: 4 x 6
Model term   estimate std.error statistic p.value
<chr> <chr>     <dbl>     <dbl>     <dbl>   <dbl>
1 pred3 .xc    2.48e+ 0     1.61   1.55e+ 0   0.122
2 pred1 .x     1.25e- 1     0.387  3.23e- 1   0.747
3 pred3 .xb    1.90e+ 1  3956.     4.79e- 3   0.996
4 pred2 .xyes -5.73e-16     1.29  -4.44e-16   1.000

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

按R中的ALL列对数据框进行排序

如何按R中每列的最后一个值对数据框中的列进行重新排序

如何按R中的列名对数据框进行排序?

R:按列的最常用值对数据进行排序

R:按字母数字列对数据框中的所有列进行排序

按R中的多个列(一组较大的列)对数据框进行排序

按R中的列组长度对数据框进行排序

在 R 中按列对数据框进行分组

如何按R中的另一个数据框对数据框中的列顺序进行排序?

同时按多列对R中的数据框进行排序

在R中按类型对数据进行排序

在R中按特定顺序对数据进行排序

按字母顺序对数据表进行字母排序,然后按R中的数字值排序

按包含特定值R的列对数据框进行分组

按R中的特定顺序对数据帧中的列进行排序

按 R 中的连续值对数据框行进行分组

在R中,如何基于列表元素对数据帧的某些列进行降序排序,而其他列按升序排序?

使用 r 中的 for 循环为列表中的每个数据框按升序对两列进行排序

按列对数据框进行排序

按列值对数据框中的行值进行排序

按列值对数据框中具有相同索引的值进行排序

按列对数据框中的某些行进行排序

按值对R中的键,值列表进行排序

熊猫-按任何列中的最高单个值对数据框进行排序

如何按每个数据框中的列值对列表中的数据框进行排序?

在R中的列表中对数据框进行排序

R在数据帧列表的每个数据帧中按字母顺序对列进行排序

如何在R中按列按降序对数据排序

按日期(包括列标题)对数据框列进行分组,并总结 R 中 1 和 0 的实例