我正在使用套餐glmulti
来找到最好的"
mo <- glm(a ~ x + y + z, data=data, family=binomial)
test <- glmulti(mo, family = binomial, level=1, crit="aicc")
但是,我对所有模型中x的p值更感兴趣(找到最佳p值)。如何从所有模型中提取它们?
答案 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