0

正規化されたロジスティック回帰を実行するために rms ライブラリを使用しており、切片を強制的にゼロにしたいと考えています。私は以下を使用してシミュレーションと回帰を行っています。

library(rms)
N = 100
pred <- vapply(1:12, function(i) rnorm(N, mean = 0, sd =1), numeric(N))
resp <- 20*pred[, 1] - 3*pred[, 7] - 2*pred[, 8] + matrix(rnorm(N, sd = 0.1)) + 20
pr <- 1 / (1 + exp(-resp))
y <- rbinom(N, 1, pr)
lrm(y ~ pred, penalty = 1)

R でインターセプトを削除する方法の投稿では、モデル式に「0 +」または「- 1」を含めることを提案しています。ただし、これは lrm では機能しないようです。

4

1 に答える 1

1

使用できますglmnet。また、回転パラメーターを選択するための相互検証関数も含まれています。

library(glmnet)
N = 1000
pred <- vapply(1:12, function(i) rnorm(N, mean = 0, sd =1), numeric(N))
resp <- 20*pred[, 1] - 3*pred[, 7] - 2*pred[, 8] + matrix(rnorm(N, sd = 0.1)) + 20
pr <- 1 / (1 + exp(-resp))
y <- rbinom(N, 1, pr)
result <- cv.glmnet(pred, y, family="binomial", intercept=FALSE)
# best lambda based on cv
result$lambda.min
# coefficient
coef(result$glmnet.fit, s=result$lambda.min)
于 2015-04-24T05:11:50.617 に答える