RとSASでのリッジ回帰実装の違い


10

私は、Applied Linear Statistical Modelsの第5版第11章でリッジ回帰の説明を読んでいます。リッジ回帰は、ここで入手可能な体脂肪データに対して行われます

教科書はSASの出力と一致します。ここで、逆変換された係数は、次のようにフィットモデルで与えられます:

Y=7.3978+0.5553X1+0.3681X20.1917X3

これは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

回答:


6

λlm.ridge

のソースを見ると、Rでどのようなアルゴリズムが適用されているかを確認できますlm.ridge。入力するだけlm.ridgeRプロンプトで。


:私はlm.ridgeの係数を計算する方法を解読するためのリンクが役に立ったと評価していmail-archive.com/r-help@r-project.org/msg81115.html しかし、それでも結果は、私が参照テキストからどのように異なる困惑とSAS 、それぞれがおそらく元のスケールに戻っていることを考えると、
B_Miner 2011年

@ user2040、SASとRで同じデータが使用されていることを確認します。同じである場合、唯一の結論はアルゴリズムが異なるということです。SASヘルプページは何を言っていますか?
mpiktas 2011年

@ user2040、私はあなたのデータでRのSASリッジ回帰を複製しました。したがって、アルゴリズムが異なることは確かです。
mpiktas 2013年

1
あなたは私にそれを打ち負かしました!:)私はあなたが参照したSASのヘルプページを見ていました。私はRMSE(サンプル内データのみ、CVまたはブートストラップではまだ検証されていません)を比較し、Rの結果は優れていました。アルゴリズムによってそれほど異なる)?通常の線形モデル理論(CI、コントラストなど)がリッジ回帰の対象外であることはすでに知っています(ブートストラップはより近くなりますが、バイアスのために誤解を招く可能性があります)。
B_Miner 2011年

0

lm.ridgeを使用すると、スケーリングベクトルも生成されます(すべての出力を表示するには、head(model)を試してください)。SASで表示されるRの予測値を取得するには、係数を取り、スカラーベクトルで割ります。


2
その結果はわかりませんが、説明していただけますか?
B_Miner 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.