首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从glm拟合的lapply列表中提取p值

从glm拟合的lapply列表中提取p值
EN

Stack Overflow用户
提问于 2013-02-06 11:42:34
回答 2查看 6.6K关注 0票数 5

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

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

代码语言:javascript
复制
#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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-06 11:46:49

您想要做的是:

代码语言:javascript
复制
lapply(fits, function(f) summary(f)$coefficients[,4])

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

代码语言:javascript
复制
sapply(fits, function(f) summary(f)$coefficients[,4])
票数 9
EN

Stack Overflow用户

发布于 2013-02-06 11:51:41

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

如果你保存这个

代码语言:javascript
复制
 summaries <- lapply(fits, summary)

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

代码语言:javascript
复制
 coefmat <- lapply(summaries, '[[', 'coefficients')

然后是第四列

代码语言:javascript
复制
 lapply(coefmat, '[', , 4)
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14721096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档