日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

UA MATH571A QE练习 R语言 多重共线性与岭回归

發(fā)布時間:2025/4/14 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UA MATH571A QE练习 R语言 多重共线性与岭回归 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

UA MATH571A QE練習 R語言 多重共線性與嶺回歸

QE回歸2017年1月的第4題目的是通過高中成績排名(X1X_1X1?)與ACT分數(shù)(X2X_2X2?)預測大學第一年的GPA(YYY)。初始模型是
Y=β0+β1X1+β2X2+β12X1X2+?Y= \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \beta_{12}X_1X_2 + \epsilonY=β0?+β1?X1?+β2?X2?+β12?X1?X2?+?

然而高中成績排名與ACT分數(shù)很有可能是正相關的,因此這個模型有潛在的多重共線性,我們先來檢查一下樣本數(shù)據(jù)有沒有多重共線性。首先讀取數(shù)據(jù),畫出相關性圖,并計算相關性矩陣

college.df = read.csv( file.choose() ) attach( college.df ) X1 = class.rank; X2 = ACT; X3=X1*X2 Y = GPA pairs( Y~X1+X2+X3, pch=19 ) > cor( cbind(X1,X2,X3) ) X1 X2 X3 X1 1.0000000 0.4425075 0.8883073 X2 0.4425075 1.0000000 0.7890032 X3 0.8883073 0.7890032 1.0000000


其中X1與X3,X2與X3都具有比較明顯的線性關系,基本可以定性地判斷初始模型是存在多重共線性的。接下來用variance inflation factor(VIF)定量判斷一下是否存在多重共線性:

> require( car ) 載入需要的程輯包:car 載入需要的程輯包:carData > vif( lm(Y ~ X1+X2+X3) ) X1 X2 X3 29.35675 16.40282 62.54291

VIF的判斷準則是,如果最大的VIF數(shù)值超過10,所有的VIF的均值超過6,那么模型就是有多重共線性的,顯然這個題中這兩個標準都滿足,因此存在多重共線性。

當模型存在多重共線性時,我們可以用嶺回歸(ridge regression)代替OLS,降低模型的MSE。在做嶺回歸之前,先對解釋變量做中心化

U = scale( Y, scale=F ) Z1 = scale( X1 ) Z2 = scale( X2 ) Z3 = scale( X3 )

做嶺回歸需要genridge包,如果沒有的話可以當場下載

install.packages("genridge")

下好之后就要用這個包里的ridgeplot()函數(shù)來調參了

require( genridge ) c = seq( from=.01,to=10,by=.01 ) traceplot( ridge(U~Z1+Z2+Z3, lambda=c) )


嶺回歸的目標函數(shù)是Quadratic Loss + L2L_2L2? penalty,這里的變量c,也即是圖中的ridge constant,表示L2L_2L2? penalty前的系數(shù),c越大,penalty就會越嚴格,系數(shù)就會被限制在更小的范圍內。圖中兩條豎線代表了嶺回歸的HKB估計量與LW估計量,注意到LW估計量附近嶺回歸系數(shù)關于c的曲線更平緩,說明LW估計量比HKB估計量更stable,LW估計量是較好的選擇。估計ridge regression,獲得它的模型對象并查看

ri <- ridge(U~Z1+Z2+Z3,lambda=c) View(ri)


會發(fā)現(xiàn)這個模型對象是一個有十三個元素的list,ridge()實際上做的運算是對1000個c的取值都估計了一遍模型,然后把結果存了下來。其中kHKB和kLW分別就是HKB估計量與LW估計量對應的L2L_2L2? penalty系數(shù)。可以簡單查看一下

> print( ri$kLW ) [1] 3.531847 > print( ri$kHKB) [1] 0.555701

基本還是符合他們在圖中的位置的。接下來我們對嶺回歸的LW估計量進行簡單診斷

cLW = ri$kLW college.ridge = ridge( U~Z1+Z2+Z3, lambda=cLW ) Zmtx = as.matrix( cbind(Z1,Z2,Z3) ) Uhat = Zmtx %*% college.ridge$coef[,1:3] RawResid = U - Uhat plot( RawResid ~ Uhat, pch=19 ); abline( h=0 )


畫出LW估計量下嶺回歸殘差關于擬合值的散點圖,非常明顯這個模型還有異方差性。后續(xù)的操作就是對殘差做一下Brown-Forsythe檢驗:

require(car) G<-(Uhat<0)[order(Uhat)] group<-as.factor(G) BF.htest = leveneTest(RawResid[order(Uhat)],group) > BF.htest Levene's Test for Homogeneity of Variance (center = median)Df F value Pr(>F) group 1 6.8326 0.009143 **703 --- Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1

結果是顯著的,說明的確是存在異方差性的。要同時解決異方差與多重共線性的問題,我們需要用WLS Loss function + L2L_2L2? penalty,那么做到這里這個題就算完成了。

總結

以上是生活随笔為你收集整理的UA MATH571A QE练习 R语言 多重共线性与岭回归的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。