私はのために行くかどうかを確認しようとしているリッジ回帰、LASSO、主成分回帰(PCR)、または部分最小二乗変数/機能(の数が多い状況で(PLS))およびサンプルの数が少ない(N < p)、私の目的は予測です。
これは私の理解:
リッジ回帰は、回帰係数を縮小しますが、すべての係数をせずに使用します。
LASSOは係数も縮小しますが、変数をにします。つまり、変数選択も行うことができます。
主成分回帰では、がnより小さくなるように成分が切り捨てられます。p - n成分を破棄します。
部分最小二乗も回帰の入力の線形結合のセットを構築しますが、PCRとは異なり、次元削減のために(Xに加えて)を使用します。PCRとPLS回帰の主な実際的な違いは、同じ予測エラーを達成するために、PCRがPLSよりも多くのコンポーネントを必要とすることが多いことです(こちらを参照)。
次のダミーデータを検討します(実際に使用しようとしているデータは似ています)。
#random population of 200 subjects with 1000 variables
M <- matrix(rep(0,200*100),200,1000)
for (i in 1:200) {
set.seed(i)
M[i,] <- ifelse(runif(1000)<0.5,-1,1)
}
rownames(M) <- 1:200
#random yvars
set.seed(1234)
u <- rnorm(1000)
g <- as.vector(crossprod(t(M),u))
h2 <- 0.5
set.seed(234)
y <- g + rnorm(200,mean=0,sd=sqrt((1-h2)/h2*var(g)))
myd <- data.frame(y=y, M)
4つの方法の実装:
require(glmnet)
# LASSO
fit1=glmnet(M,y, family="gaussian", alpha=1)
# Ridge
fit1=glmnet(M,y, family="gaussian", alpha=0)
# PLS
require(pls)
fit3 <- plsr(y ~ ., ncomp = 198, data = myd, validation = "LOO")
# taking 198 components and using leave-one-out cross validation
summary(fit3)
plot(RMSEP(fit3), legendpos = "topright")
# PCR
fit4 <- pcr(y ~ ., ncomp = 198, data = myd, validation = "LOO")
データの最良の説明は次のとおりです。
、ほとんどの場合 p > 10 n ;
変数(およびY)は、異なる程度で互いに相関しています。
私の質問は、この状況に最適な戦略はどれですか?どうして?