使用glmulti函数提取p值

时间:2015-09-24 08:20:27

标签: r

我正在使用套餐glmulti来找到最好的"

的模型
mo <- glm(a ~ x + y + z, data=data, family=binomial)
test <- glmulti(mo, family = binomial, level=1, crit="aicc")

但是,我对所有模型中x的p值更感兴趣(找到最佳p值)。如何从所有模型中提取它们?

1 个答案:

答案 0 :(得分:0)

测试输出最佳模型,但gmulti允许您查看所有模型。您可以使用weightable

查看所有其他模型的权重和aicc值
weightable(test)

这是循环结果集,使用as.formula()构建glm模型,并从摘要中提取x的p值(如果存在)。

library(glmulti)

iris2 <- iris
iris2$virginica <- iris$Species == "virginica"

mo = glm(virginica ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, data=iris2, family="binomial")

test <- glmulti(mo, family = binomial, level=1, crit="aicc")

tbl <- weightable(test)
nrows <- nrow(tbl)

for (i in 1:nrows) {
    formulaTest <- as.character(tbl[i,]$model)
    model = glm(as.formula(formulaTest), data=iris2, family="binomial")

    print(paste("Formula: ", formulaTest))
    print(summary(model)$coefficients[,4])
}

[1] "Formula:  virginica ~ 1 + Sepal.Width + Petal.Length + Petal.Width"
 (Intercept)  Sepal.Width Petal.Length  Petal.Width 
  0.03522621   0.07853563   0.04033382   0.04534974 
[1] "Formula:  virginica ~ 1 + Sepal.Length + Sepal.Width + Petal.Length + Petal.Width"
 (Intercept) Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
  0.09720282   0.30318813   0.13585218   0.04653593   0.06052811 
[1] "Formula:  virginica ~ 1 + Sepal.Length + Petal.Length + Petal.Width"
 (Intercept) Sepal.Length Petal.Length  Petal.Width 
  0.02770914   0.07149206   0.02891997   0.02830069 
...

如果您想使用高级模型选择,您甚至可以组合顶级模型,如下所述:http://www.noamross.net/blog/2013/2/20/model-selection-drug.html