我有观察n
次数小于变量数的数据p
。答案变量是二进制的。例如:
n <- 10
p <- 100
x <- matrix(rnorm(n*p), ncol = p)
y <- rbinom(n, size = 1, prob = 0.5)
我想为这些数据拟合逻辑模型。所以我使用了代码:
model <- glmnet(x, y, family = "binomial", intercept = FALSE)
该函数针对不同的 $\lambda$ 值(LASSO回归中的惩罚参数)返回 100 个模型。我想选择最大的模型,它也有n - 1
参数或更少(所以少于观察次数)。假设选择的模型是 for lambda_opt
。
model_one <- glmnet(x, y, family = "binomial", intercept = FALSE, lambda = lambda_opt)
现在我想做第二步 -step
对我的模型使用函数来选择在 BIC - 贝叶斯信息准则方面最好的子模型。不幸的是,该step
函数不适用于glmnet
该类的对象。
step(model_one, direction = "backward", k = log(n))
我怎样才能执行这样的程序?这个特定的类 ( ) 还有其他功能glmnet
可以做我想做的吗?