2015-09-17 89 views
2

根據我的研究,您可以通過在正態OLS迴歸結束時添加「假數據」來模擬嶺迴歸。嶺迴歸假數據R差異

https://stats.stackexchange.com/questions/137057/phoney-data-and-ridge-regression-are-the-same ^許多地方的例子之一,證實了這個觀點。

但是在R中,我無法複製結果。

> test_0 

12 34 24 64 746 24 23 42  7  8  3  4 45 675  3  4 34 43 56 674  3  4 54 34 23 34 435 56 56 234 657 89 980  8 76 65 45564 67 76 789 

> test_1 

34 24 64 746 24 23 42  7  8  3  4 45 675  3  4 34 43 56 674  3  4 54 34 23 34 435 56 56 234 657 89 980  8 76 65 45564 67 76 789  6 


> test_2 

24 64 746 24 23 42  7  8  3  4 45 675  3  4 34 43 56 674 3  4 54 34 23 34 435 56 56 234 657 89 980  8 76 65 45564 67 76 789  6  5 

我的三個變量。然後我追加2個新行(針對獨立變量的數量)。爲了test_0我附加了兩個零。爲了TEST_1我追加的sqrt(0.5)和0至test_2我追加一個0和開方(0.5)

> a = c(test_0,0,0) 
> 
> b = c(test_1,(sqrt(.5)),0) 
> 
> c = c(test_2,0,(sqrt(.5))) 
> 

然後我跑兩種車型。 lm和lm.ridge

>reg = lm(a~b+c) 
> 
>ridge = lm.ridge(test_0~test_1+test_2, lambda = .5) 
> 
> reg 
> 
>Call: 
>lm(formula = a ~ b + c) 
> 
>Coefficients: 
>(Intercept)   b   c 
> 1305.42310  -0.02926  -0.02862 

> ridge 
> 
>     test_1  test_2 
>1374.16801379 -0.03059968 -0.02996396 

係數是不同的但它們應該是相同的。爲什麼會這樣? 任何幫助將不勝感激!

+0

你不應該使用'a','b'和'c'來進行嶺迴歸,因爲那些數增加了? –

+0

根據我的知識沒有。嶺迴歸函數具有額外的懲罰因子lambda * Beta_vector。 OLS缺乏這個因素。 爲了解決這個問題,您需要將行添加到OLS中,這應該等於原始「un_phonied」數據的嶺迴歸結果。 –

+0

這不是糾正你對統計方法誤解的正確論壇。嘗試詢問CrossValidated.com –

回答

1

爲什麼我的beta沒有與正確的Ridge迴歸方法相匹配的原因是嶺迴歸也在求解beta之前集中(標準化)y向量和x矩陣中的數據。 如果你集中數據,然後用「虛假」數據做一個OLS,你會得到正確的答案。