8.6 選擇「最佳」的回歸模型
8.6.1 模型比較
用基礎安裝中的anova()函式可以比較兩個巢狀模型的擬合優度。所謂巢狀模型,即它的一
些項完全包含在另乙個模型中
用anova()函式比較
> states fit1fit2 anova(fit2,fit1)
analysis of variance table
model 1: murder ~ population + illiteracy
model 2: murder ~ population + illiteracy + income +frost
res.df rss df sum of sq f pr(>f)
1 47289.25
2 45289.17 2 0.078505 0.0061 0.9939aic(akaikeinformation criterion,赤池資訊準則)也可以用來比較模型,它考慮了模型的
統計擬合度以及用來擬合的引數數目。aic值越小的模型要優先選擇,它說明模型用較少的引數
獲得了足夠的擬合度。
> aic(fit1,fit2)
df aic
fit1 6 241.6429
fit2 4 237.6565
8.6.2變數選擇
1. 逐步回歸stepwise method
逐步回歸中,模型會一次新增或者刪除乙個變數,直到達到某個判停準則為止。向前
逐步回歸(forward stepwise)每次新增乙個**變數到模型中,直到新增變數不會使模型有所改
進為止。向後逐步回歸(backward stepwise)從模型包含所有**變數開始,一次刪除乙個變數
直到會降低模型質量為止。而向前向後逐步回歸(stepwise stepwise,通常稱作逐步回歸
),結合了向前逐步回歸和向後逐步回歸的方法,變數每次進入乙個,但是每一步
中,變數都會被重新評價,對模型沒有貢獻的變數將會被刪除,**變數可能會被新增、刪除好
幾次,直到獲得最優模型為止。。mass包中的stepaic()函式可以實現
逐步回歸模型(向前、向後和向前向後),依據的是精確aic準則。
> library(mass)
>fit1stepaic(fit1,direction="backward")
start: aic=97.75
murder ~ population +illiteracy + income + frost
df sum of sq rss aic
- frost 1 0.021 289.19 95.753
- income 1 0.057 289.22 95.759
289.17 97.749
- population 1 39.238 328.41 102.111
- illiteracy 1 144.264 433.43 115.986
step: aic=95.75
murder ~ population +illiteracy + income
df sum of sq rss aic
- income 1 0.057 289.25 93.763
289.19 95.753
- population 1 43.658332.85 100.783
- illiteracy 1 236.196 525.38 123.605
step: aic=93.76
murder ~ population +illiteracy
df sum of sq rss aic
289.25 93.763
- population 1 48.517 337.76 99.516
- illiteracy 1 299.646588.89 127.311
call:
lm(formula = murder ~population + illiteracy, data = states)
coefficients:
(intercept) population illiteracy
1.6515497 0.0002242 4.08073662. 全子集回歸
全子集回歸可用leaps包中的regsubsets()函式實現。你能通過r平方、調整r平方或
mallows cp統計量等準則來選擇「最佳」模型
> library("leaps", lib.loc="d:/programfiles/r/r-3.1.3/library")
>leaps plot(leaps,scal="adjr2")
> library(car)
> subsets(leaps,statistic="cp",main="cpplot for all subsets regression")
> abline(1,1,lty=2,col="red")8.7 深層次分析
8.7.1 交叉驗證
所謂交叉驗證,即將一定比例的資料挑選出來作為訓練樣本,另外的樣本作保留樣本,先在
訓練樣本上獲取回歸方程,然後在保留樣本上做**。由於保留樣本不涉及模型引數的選擇,該
樣本可獲得比新資料更為精確的估計。在k 重交叉驗證中,樣本被分為k個子樣本,輪流將k1個子樣本組合作為訓練集,另外1個子樣本作為保留集。這樣會獲得k 個**方程,記錄k 個保留樣本的**表現結果,然後求其平均值。[當n 是觀測總數目,k 為n 時,該方法又稱作刀切法(jackknifing)]bootstrap 包中的crossval() 函式可以實現k 重交叉驗證。
fit
讀書筆記之Python基礎1 1,
1.python編碼中文時,要記得加 coding utf 8 or coding utf 8 2.python有三種coding方式,一是直接在互動式程式設計客戶端寫 二是寫 在test.py檔案中,然後在客戶端python test.py,三比較複雜,是在test.py檔案頭部加入python直...
Shader入門精要讀書筆記11
總的來說把渲染出來的結果 texture 類似於又用ps處理了一下。方法就是把不同的指令碼加在攝像機上,指令碼和shader共同使畫面具有不同的效果。onrenderimage介面和bilt函式的使用。建立基類posteffectsbase,配置一些check函式。調整亮度 飽和度 對比度的實現 分...
《完美軟體》讀書筆記11 資訊攝取
1 使用薩提亞互動模型來解析溝通 薩提亞 virginia satir 互動模型有助於幫助軟體測試人員改進他們對軟體狀態進行觀察和溝通的系統。乙個模型的作用是簡化乙個複雜的的過程。薩提亞互動模型首先將任何溝通過程都分解為4個主要的階段 a 攝取 並不是 就那樣發生 還包括了選擇的過程 b 確定含義 ...