主成分迴歸分析
對於OXY數據集的變量解釋如下:
對上述數據進行迴歸模型的擬合,得到模型:
從模型的顯著性檢驗結果看出:除了常數項以及β3顯著,其他變量係數都不通過顯著性檢驗。同時,從模型整體擬合效果來看,R^2爲0.8618,調整的R^2爲0.7697,整體擬合效果可以通過。最後,p值爲0.00198說明,拒絕原假設,即有理由認爲迴歸模型從整體上擬合效果比較好。
下面針對係數通不過檢驗進行分析。
##殘差圖,異方差,自相關檢驗
plot(lm.sol$residuals,main = "the residuals of liner model",ylab = "re")
abline(h=0,lty=2)
#多重共線性檢驗
kappa(qr(OXY))
結果:
藉助殘差圖,其隨機圍繞着re=0波動,可以排除模型不存在自相關以及異方差問題。
kappa(qr(OXY))
[1] 264.2117
由其條件數爲264大於100,可認爲,該模型存在較強的多重共線性。
則採用主成分迴歸法,來消減模型存在多重共線性帶來的影響,即係數通不過顯著性檢驗。
求主成分:
由cumulative proportion可以得到當主成分個數m等於3時,累計貢獻率爲83.526%大於80%,即可認爲前三個主成分,就基本提取了原數據絕大部分的信息。所以,以前三個主成分的得分值作其觀測值z1,z2,z3,並把它添加到數據集OXY中,建立迴歸模型:
y =46.3800+2.0593*z1 -1.4782*z2 +0.6950*z3
可從summary(lm.sol.1)結果得到,除了z3的係數沒通過顯著性檢驗。同時模型的整體
擬合效果得到提高,R^2爲0.8676,調整的R^2爲0.8345,同時p值遠遠小於0.05,說明
模型整體擬合效果較佳。
lm.sol.1<-lm(y~z1+z2+z3, data=OXY)
summary(lm.sol.1)
Call:
lm(formula = y ~ z1 + z2 + z3, data = OXY)
Residuals:
Min 1Q Median 3Q Max
-2.3880 -1.5069 0.3160 0.7009 4.3672
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 46.3800 0.4762 97.394 < 2e-16 ***
z1 2.0593 0.2591 7.950 4.01e-06 ***
z2 -1.4782 0.4093 -3.611 0.00357 **
z3 0.6950 0.4512 1.540 0.14942
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.905 on 12 degrees of freedom
Multiple R-squared: 0.8676, Adjusted R-squared: 0.8345
F-statistic: 26.2 on 3 and 12 DF, p-value: 1.49e-05
使用逆變換法,得到原始變量的迴歸方程:
beta<-coef(lm.sol.1); A<-loadings(prin.oxy)
x.bar<-prin.oxy$center; x.sd<-prin.oxy$scale
coef<-(beta[2]*A[,1]+ beta[3]*A[,2])/x.sd
beta0 <- beta[1]- sum(x.bar * coef)
c(beta0, coef)
(hntercept) x1 x2 x3 x4 x5 x6 y
84.48047095 -0.19517781 -0.11688617 -1.04312708 -0.12361966 -0.03916300 -0.05573319 0.31272008
即可以得到原始變量的迴歸方程
從其係數可以大致得到以下結論:
即認爲人體肺活量與年齡,體重,脈搏成負相關,與運動時最大脈搏成正比。