fork(1) download
  1. library(faraway)
  2. data(savings)
  3. #建立複線性迴歸模型
  4. mdl<-lm(sr~pop15+pop75+dpi+ddpi,savings)
  5. #使用指令coefficients()得到整體迴歸模型迴歸係數beta,以savings資料為例:
  6. #sr=28.56609+(-0.46119)*pop15+(-1.69150)*pop75+(-0.00034)*dpi+(0.40969)*ddpi
  7. round(coefficients(mdl),5)
  8.  
  9. #檢定各變數的共線性
  10. vif(mdl)
  11. #這邊有發現兩個變數超過5 分別是pop75、pop15
  12. #這兩個變數要忽略? 還是先偏F檢定再對偏F檢定後的模型做指令vif()?
  13.  
  14. #使用指令summary()可以彙總物件mdl的內容,了解上述模型是否可簡化,及探討模型的解釋能力。
  15. summary(mdl)
  16. #以savings資料為例,F-statistic: 5.756 on 4 and 45 DF,p-value: 0.0007904知道引入解釋變數是有統計意義。
  17. 這個模型mdl的能解釋y的變異達 33.85%,後面須看看配適殘差圖呈現的型態及觀察離群值是否有影響。
  18. 再由beta係數的彙總資料發現pop75的p-value=0.125530 > 0.05和pop75的p-value=0.719173 > 0.05 皆不拒絕Ho可以考慮把pop75或dpi拿掉。
  19. #以上的結果要成立必須是,residuals必須是滿足常態假設,且變異數為常數。
  20. #先利用偏F檢定判斷上面兩個不拒絕Ho之變數是否該忽略。
  21. #設一個忽略掉pop75、dpi這個變數的新的模型為mdl1。
  22.  
  23. mdl1<-lm(sr~pop15+ddpi,savings)
  24. #再使用anova()指令對mdl和mdl1兩個模型做變異數分析,檢定pop75和dpi可以同時忽略(Ho : pop75=dpi=0)。
  25. anova(mdl1,mdl)
  26. #由變異數分析資料發現的p-value=0.19> 0.05 所以不拒絕Ho,考慮用Model1。
  27. #這邊我省略了model selection是因為我沒打算要加其他變數 想說用偏F檢定篩選掉可忽略的變數即可
  28.  
  29. #殘差VS配適值關係圖
  30. plot(fitted(mdl1),residuals(mdl1))
  31. mean(fitted(mdl1))
  32. #使用var.test()指令檢定該模型mdl1的變異數是否為常數,配適值範圍可用模型之配適值之平均值。
  33. var.test(residuals(mdl1)[fitted(mdl1)>9.671],residuals(mdl1)[fitted(mdl1)<9.671])
  34. #使用qqnorm()指令跑出QQ-norm圖。
  35. qqnorm(residuals(mdl1))
  36. qqline(residuals(mdl1))
  37. #使用shapiro.test()指令檢定此模型mdl1之常態假設是否成立。
  38. shapiro.test(residuals(mdl1))
  39. #常態假設以及變異數檢定皆成立,最後再檢查是否有離群值存在,
  40.  
  41. #載入套件car,使用outlierTest()指令找離群值。
  42. library(car)
  43. outlierTest(mdl1)
  44. #可以找到Zambia這個離群值
  45.  
  46. library(car)
  47. influencePlot(mdl1)
  48. #但使用influencePlot()會找到兩個影響點Zambia和Libya
  49. #這邊是要把Zambia刪除後的模型再做檢定 還是兩個影響點都須刪除?
  50.  
  51. #另外有沒有哪些重要的步驟我卻忽略了@@? 目標是找到最適模型即可! 有的話麻煩c大補充一下><
  52.  
Runtime error #stdin #stdout #stderr 0.31s 22832KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Error in library(faraway) : there is no package called 'faraway'
Execution halted