3

我正在使用glmulti()R 中的包来尝试对某些数据运行全子集回归。我有 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")

一般来说,我对这个包和建模比较陌生。任何方向或建议将不胜感激。谢谢!

4

3 回答 3

5

glmulti 不受预测变量数量的限制,而是受候选模型数量的限制。

通过设置参数 method = "d",glmulti 将计算候选模型的数量。计算这比在 method = "h" 或 method = "g" 上运行 glmulti 花费的时间要少得多。

如果预测变量的数量太多,您将收到相同的错误消息。因此,您可以在合理的计算时间内尝试 glmulti 处理的最大预测变量数。

但是,请记住,可能的预测变量的最大数量很大程度上取决于您是否允许交互。

此外,您可以通过指定模型中预测变量的数量(例如 minsize = 0、maxsize = 1)或通过排除 (exclude = c()) 特定预测变量或通过在模型公式中排除预测变量来限制候选模型的数量(y~a+b+ca:b-1;这不包括截距和相互作用 a:b)。您可以在包文档 glmulti.pdf 中找到更多用于限制候选模型数量的选项

于 2014-05-14T14:51:38.830 回答
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
于 2013-08-21T01:24:50.723 回答
0

根据我的经验,可以使用大约 30 个协变量(没有交互)。

我最近回答了一个类似的问题,看看: https ://stackoverflow.com/a/23878222/1778542

编辑@Ben:没有足够的分数来评论=(说我首先需要50分。如果可以的话,我会评论这个。

于 2014-05-26T22:33:50.743 回答