我正在使用R中的glmulti()
包来尝试对某些数据运行全子集回归。我有51个预测因子,最多观察到276个。我意识到详尽的遗传算法方法不能用这么多变量来计算,因为我收到以下内容:
Warning message:
In glmulti(y = "Tons_N", data = MDatEB1_TonsN, level = 1, method = "h", :
!Too many predictors.
有了这些类型的要求(即许多带有大量观测值的变量),我可以在一次全子集回归中使用多少个?我正在研究变量消除技术,但我想在分析的这个阶段使用尽可能多的变量。也就是说,我想使用此分析的结果来做出可变消除决策。是否有另一个可以一次处理更多变量的包?
这是我正在使用的代码。不幸的是,由于与项目相关的机密性,我无法附加数据集。
TonsN_AllSubset <- glmulti(Tons_N ~ ., data = MDatEB1_TonsN, level = 1, method = "h",crit = "aic", confsetsize = 20, plotty = T, report = T,fitfunction = "glm")
我对这个软件包和一般的建模相对较新。任何方向或建议将不胜感激。谢谢!
答案 0 :(得分:5)
glmulti不受预测变量数量的限制,而是受候选模型数量的限制。
通过设置参数method =&#34; d&#34;,glmulti将计算候选模型的数量。计算这个比在方法上运行glmulti花费的时间少得多=&#34; h&#34;或方法=&#34; g&#34;。
如果预测变量的数量很高,您将收到相同的错误消息。因此,您可以在合理的计算时间内尝试由glmulti处理的最大预测变量数。
但是,请记住,可能的预测变量的最大数量在很大程度上取决于您是否允许交互。
此外,您可以通过指定模型中预测变量的数量(例如,minsize = 0,maxsize = 1)或排除(exclude = c())特定预测变量或排除预测变量来限制候选模型的数量模型公式(y~a + b + ca:b-1;这不包括截距和相互作用a:b)。您可以在程序包文档glmulti.pdf中找到更多用于限制候选模型数量的选项
答案 1 :(得分:2)
glmnet软件包提供了进行惩罚性建模的工具,而没有逐步选择的统计上有缺陷的策略。 (似乎有一种广泛接受的错误论点,即使用AIC可以保护人们不受多重比较的影响。)在没有任何问题的情况下“找到”统计上显着的关系是非常容易的。
这是使用BabakP建议的一组随机预测器的结果:
pseudodata = data.frame(matrix(NA,nrow=276,ncol=51))
pseudodata[,1] = rbinom(nrow(pseudodata),1,.3)
n1 = length(which(pseudodata[,1]==1))
n0 = length(which(pseudodata[,1]==0))
for(i in 2:ncol(pseudodata)){
pseudodata[,i] = ifelse(pseudodata[,1]==1, rnorm(n1), rnorm(n0))
}
model = glm(pseudodata[,1]~., data=pseudodata[-1])
stepwise.model = step(model,direction="both",trace=FALSE)
> summary(stepwise.model)
Call:
glm(formula = pseudodata[, 1] ~ X4 + X6 + X10 + X17 + X21 + X23 +
X25 + X29 + X32 + X37 + X41 + X48 + X50 + X19, data = pseudodata[-1])
Deviance Residuals:
Min 1Q Median 3Q Max
-0.6992 -0.2943 -0.1154 0.3663 0.9833
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.25674 0.02561 10.025 < 2e-16 ***
X4 -0.03573 0.02394 -1.493 0.136727
X6 -0.05045 0.02608 -1.934 0.054141 .
X10 0.05873 0.02744 2.141 0.033235 *
X17 -0.06325 0.02520 -2.510 0.012668 *
X21 0.06420 0.02504 2.564 0.010906 *
X23 -0.04961 0.02845 -1.744 0.082353 .
X25 0.03863 0.02517 1.535 0.126035
X29 0.04889 0.02381 2.054 0.041020 *
X32 -0.03669 0.02509 -1.462 0.144841
X37 0.09682 0.02507 3.862 0.000142 ***
X41 -0.05253 0.02676 -1.963 0.050704 .
X48 -0.06660 0.02279 -2.922 0.003782 **
X50 -0.06955 0.02624 -2.651 0.008517 **
X19 -0.04090 0.02701 -1.514 0.131137
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for gaussian family taken to be 0.1674429)
Null deviance: 55.072 on 275 degrees of freedom
Residual deviance: 43.703 on 261 degrees of freedom
AIC: 306.59
Number of Fisher Scoring iterations: 2
答案 2 :(得分:0)
根据我的经验,可以使用约30个协变量(没有相互作用)。
我最近回答了类似的问题,请查看: https://stackoverflow.com/a/23878222/1778542
编辑@Ben:没有足够的评论点=(说我先得到50分。如果可以,我会评论这个。