私は、Applied Linear Statistical Modelsの第5版第11章でリッジ回帰の説明を読んでいます。リッジ回帰は、ここで入手可能な体脂肪データに対して行われます。
教科書はSASの出力と一致します。ここで、逆変換された係数は、次のようにフィットモデルで与えられます:
これはSASから次のように表示されます。
proc reg data = ch7tab1a outest = temp outstb noprint;
model y = x1-x3 / ridge = 0.02;
run;
quit;
proc print data = temp;
where _ridge_ = 0.02 and y = -1;
var y intercept x1 x2 x3;
run;
Obs Y Intercept X1 X2 X3
2 -1 -7.40343 0.55535 0.36814 -0.19163
3 -1 0.00000 0.54633 0.37740 -0.13687
しかし、Rは非常に異なる係数を与えます:
data <- read.table("http://www.cst.cmich.edu/users/lee1c/spss/V16_materials/DataSets_v16/BodyFat-TxtFormat.txt",
sep=" ", header=FALSE)
data <- data[,c(1,3,5,7)]
colnames(data)<-c("x1","x2","x3","y")
ridge<-lm.ridge(y ~ ., data, lambda=0.02)
ridge$coef
coef(ridge)
> ridge$coef
x1 x2 x3
10.126984 -4.682273 -3.527010
> coef(ridge)
x1 x2 x3
42.2181995 2.0683914 -0.9177207 -0.9921824
>
誰かが私に理由を理解するのを手伝ってくれる?
同じデータセットを使用して、SPSSで分析しました。結果はSASに似ています。ただし、本のようにデータを標準化できる場合、c = 0の最初の値はRとSPSSで類似しています(多重線形回帰を実行)。ただし、上記のようにさらに移動すると、結果はかなり異なります。私も同じデータの出力間の違いの手がかりを見つけられませんでした。
—
asad 14