从glm的lapply列表中提取p值

时间:2013-02-06 03:42:34

标签: r glm lapply

我使用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

2 个答案:

答案 0 :(得分:9)

你想这样做:

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

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

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

答案 1 :(得分:6)

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

如果您保存此

 summaries <- lapply(fits, summary)

然后,您可以浏览并提取系数矩阵

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

然后是第4列

 lapply(coefmat, '[', , 4)