library(faraway)
data(savings)
#建立複線性迴歸模型
mdl<-lm(sr~pop15+pop75+dpi+ddpi,savings)
#使用指令coefficients()得到整體迴歸模型迴歸係數beta,以savings資料為例:
#sr=28.56609+(-0.46119)*pop15+(-1.69150)*pop75+(-0.00034)*dpi+(0.40969)*ddpi
round(coefficients(mdl),5)
#檢定各變數的共線性
vif(mdl)
#這邊有發現兩個變數超過5 分別是pop75、pop15
#這兩個變數要忽略? 還是先偏F檢定再對偏F檢定後的模型做指令vif()?
#使用指令summary()可以彙總物件mdl的內容,了解上述模型是否可簡化,及探討模型的解釋能力。
summary(mdl)
#以savings資料為例,F-statistic: 5.756 on 4 and 45 DF,p-value: 0.0007904知道引入解釋變數是有統計意義。
這個模型mdl的能解釋y的變異達 33.85%,後面須看看配適殘差圖呈現的型態及觀察離群值是否有影響。
再由beta係數的彙總資料發現pop75的p-value=0.125530 > 0.05和pop75的p-value=0.719173 > 0.05 皆不拒絕Ho可以考慮把pop75或dpi拿掉。
#以上的結果要成立必須是,residuals必須是滿足常態假設,且變異數為常數。
#先利用偏F檢定判斷上面兩個不拒絕Ho之變數是否該忽略。
#設一個忽略掉pop75、dpi這個變數的新的模型為mdl1。
mdl1<-lm(sr~pop15+ddpi,savings)
#再使用anova()指令對mdl和mdl1兩個模型做變異數分析,檢定pop75和dpi可以同時忽略(Ho : pop75=dpi=0)。
anova(mdl1,mdl)
#由變異數分析資料發現的p-value=0.19> 0.05 所以不拒絕Ho,考慮用Model1。
#這邊我省略了model selection是因為我沒打算要加其他變數 想說用偏F檢定篩選掉可忽略的變數即可
#殘差VS配適值關係圖
plot(fitted(mdl1),residuals(mdl1))
mean(fitted(mdl1))
#使用var.test()指令檢定該模型mdl1的變異數是否為常數,配適值範圍可用模型之配適值之平均值。
var.test(residuals(mdl1)[fitted(mdl1)>9.671],residuals(mdl1)[fitted(mdl1)<9.671])
#使用qqnorm()指令跑出QQ-norm圖。
qqnorm(residuals(mdl1))
qqline(residuals(mdl1))
#使用shapiro.test()指令檢定此模型mdl1之常態假設是否成立。
shapiro.test(residuals(mdl1))
#常態假設以及變異數檢定皆成立,最後再檢查是否有離群值存在,
#載入套件car,使用outlierTest()指令找離群值。
library(car)
outlierTest(mdl1)
#可以找到Zambia這個離群值
library(car)
influencePlot(mdl1)
#但使用influencePlot()會找到兩個影響點Zambia和Libya
#這邊是要把Zambia刪除後的模型再做檢定 還是兩個影響點都須刪除?
#另外有沒有哪些重要的步驟我卻忽略了@@? 目標是找到最適模型即可! 有的話麻煩c大補充一下><