R ve SAS'ta sırt regresyon uygulaması arasındaki fark


10

Uygulamalı Doğrusal İstatistiksel Modeller , 5. Baskı bölüm 11'deki sırt regresyonunun açıklamasını okuyorum . Sırt regresyonu, burada bulunan vücut yağ verileri üzerinde yapılır .

Ders kitabı SAS'daki çıktıyla eşleşir, burada geri dönüştürülmüş katsayılar takılan modelde şu şekilde verilir:

Y=-7,3978+0,5553X1+0,3681X2-0,1917X3

Bu SAS'tan şu şekilde gösterilmiştir:

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

Ancak R çok farklı katsayılar verir:

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 
> 

Biri nedenini anlamama yardımcı olabilir mi?


Aynı veri kümesini kullandım ve SPSS'de analiz ettim. Sonuçlar SAS ile benzerdir. Ancak, verileri kitaptaki gibi standartlaştırabilirsek, c = 0'daki ilk değer R ve SPSS'de (çoklu doğrusal regresyon çalıştıran) benzerdir. Bununla birlikte, yukarıda belirtildiği gibi ilerlediğimizde sonuçlar oldukça farklıdır. Ben de aynı veriler için çıktılar arasındaki fark hakkında hiçbir ipucu bulamadım.
asad

Yanıtlar:


6

λlm.ridge

Kaynağına bakarak R'de ne tür bir algoritmanın uygulandığını görebilirsiniz lm.ridge. Sadece lm.ridgeR komut istemini yazın.


Bu bağlantıyı, lm.ridge'in katsayıları nasıl hesapladığını çözmek için yararlı buldum: mail-archive.com/r-help@r-project.org/msg81115.html Ama yine de sonuçların referans verdiğim metinden ve SAS'tan ne kadar farklı olduğunu şaşkın buldum , her birinin orijinal ölçeğe geri döndüğü düşünülürse.
B_Miner

@ user2040, aynı verilerin SAS ve R tarafından kullanıldığını kontrol edin. Eğer aynıysa, tek sonuç algoritmaların farklı olduğudur. SAS yardım sayfası ne diyor?
mpiktas

@ user2040, verilerinizle R'deki SAS sırt regresyonunu kopyaladım . Bu yüzden algoritmaların farklı olduğundan eminiz.
mpiktas

1
Sadece beni dövüyorsun! :) Başvurduğunuz SAS yardım sayfasına bakıyordum. RMSE'yi karşılaştırdım (sadece örnek içi veriler, henüz bir CV veya önyükleme ile doğrulanmadı) ve R sonucu daha üstündü. algoritma ile çok farklı)? Zaten düzenli doğrusal model teorisinin (CI'ler, kontrastlar vb.) Sırt gerilemesi için dışarıda olduğunu biliyorum (önyükleme yaklaşıyor, ancak önyargı nedeniyle yanıltıcı olabilir).
B_Miner

0

Lm.ridge kullanmak da bir ölçeklendirme vektörü üretir (tüm çıktıları görmek için başlığı (modeli) deneyin). SAS'ta gördüğünüz R'deki tahmini değerleri elde etmek için katsayıları alın ve skaler vektöre bölün.


2
Bu sonucu alamıyorum, lütfen açıklayabilir misiniz?
B_Miner
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.