5

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

如果我一次只运行一个模型: coef(summary(fit))[,"Pr(>|z|)"] 或者 summary(fit)$coefficients[,4] 会工作(如此所述),但尝试类似的东西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
4

2 回答 2

9

你想做:

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

但是,如果每个项目都只是一个 p 值,那么您可能宁愿拥有一个向量而不是一个列表,因此您可以使用sapply而不是lapply

sapply(fits, function(f) summary(f)$coefficients[,4])
于 2013-02-06T03:46:48.770 回答
6

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

如果你保存这个

 summaries <- lapply(fits, summary)

然后您可以通过并提取系数矩阵

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

然后是第 4 列

 lapply(coefmat, '[', , 4)
于 2013-02-06T03:51:41.170 回答