R中的子集函数是否适用于真正的.big情况



我正在处理一个p>gt>n有300多个变量,只有200个观测值。我想减少变量的数量,因为用300个变量拟合任何类型的模型都是一场噩梦。我阅读了减少它们的方法,我发现最好的是子集函数的跳跃,但我必须真正指定。big=T,因为它确实很大。然而,我让电脑运行了一个多小时,但它仍然没有完成。还有其他功能可能会更好吗?

对于300个变量,有2^300=2e90(即2*10^90(个可能的子模型。这是不可能在任何你能想象的计算机上进行详尽评估的。我建议通过glmnet软件包进行LASSO回归。你必须制作自己的模型矩阵,即如果你的响应变量在数据框的第1列,你需要

library(glmnet)
y <- dd[,1]
X <- as.matrix(dd[,-1])

假设所有连续预测因子;否则您需要X <- model.matrix(~ ., data = dd[,-1])。LASSO回归还有一些额外的步骤(选择正则化参数(,请参见vignette("glmnet", package = "glmnet")。。。

或者,您可以使用glmulti包,它可以使用遗传算法来搜索可能的模型的空间(不会尝试所有的模型,但可以尝试任意大量的候选模型,直到拟合优度趋于平稳(。

相关内容

最新更新