【问题标题】:Extracting p-value from lapply list of glm fits从 glm 拟合的 lapply 列表中提取 p 值
【发布时间】:2016-09-26 03:39:05
【问题描述】:

我正在使用 lapply 一次对一个因变量和一个自变量执行多个 glm 回归。现在我对每个自变量的Pr(>|z|) 特别感兴趣。但是,我不确定如何使用 lapply 的列表仅报告 Pr(>|z|)

如果我一次只运行一个模型: coef(summary(fit))[,"Pr(>|z|)"] 或者 summary(fit)$coefficients[,4] 会工作(如here 所述),但尝试与lapply 类似的东西似乎不起作用。我可以使用带有访问器方法的lapplyglm 或直接从模型中调用来获取p 值吗?

#mtcars dataset
vars <- names(mtcars)[2:8]
fits <- lapply(vars, function(x) {glm(substitute(mpg ~ i, list(i = as.name(x))), family=binomial, data = mtcars)})
lapply(fits,summary) # this works
lapply(fits, coefficients) # this works
#lapply(fits, summary(fits)$coefficients[,4])# this for example does not work

【问题讨论】:

    标签: r glm lapply


    【解决方案1】:

    你想做的:

    lapply(fits, function(f) summary(f)$coefficients[,4])
    

    但是,如果每个项目只是一个 p 值,您可能更愿意使用向量而不是列表,因此您可以使用 sapply 而不是 lapply

    sapply(fits, function(f) summary(f)$coefficients[,4])
    

    【讨论】:

      【解决方案2】:

      当您运行lapply(fits, summary) 时,它会创建一个summary.glm 对象列表,每个对象都使用print.summary.glm 打印

      如果你保存这个

       summaries <- lapply(fits, summary)
      

      然后你可以遍历并提取系数矩阵

       coefmat <- lapply(summaries, '[[', 'coefficients')
      

      然后是第四列

       lapply(coefmat, '[', , 4)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-22
        • 2021-12-10
        • 2014-07-13
        • 2023-04-01
        • 2021-08-03
        相关资源
        最近更新 更多