我使用lapply一次通过一个自变量对一个因变量执行几次glm回归。现在我对每个自变量的Pr(>|z|)
特别感兴趣。但是,我不确定如何使用lapply列表报告Pr(>|z|)
。
如果我一次只运行一个模型:
coef(summary(fit))[,"Pr(>|z|)"]
要么
summary(fit)$coefficients[,4]
可行(如here所述),但尝试与lapply
类似的东西似乎不起作用。我可以使用lapply
和glm
使用访问器方法或直接从模型调用来获取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
答案 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)