變量之間存在着相關關係,好比,人的身高和體重之間存在着關係,通常來講,人高一些,體重要重一些,身高和體重之間存在的是不肯定性的相關關係。迴歸分析是研究相關關係的一種數學工具,它能幫助咱們從一個變量的取值區估計另外一個變量的取值。html
OLS(最小二乘法)主要用於線性迴歸的參數估計,它的思路很簡單,就是求一些使得實際值和模型估值之差的平方和達到最小的值,將其做爲參數估計值。就是說,經過最小化偏差的平方和尋找數據的最佳函數匹配。利用最小二乘法能夠簡便地求得未知的數據,並使得這些求得的數據與實際數據之間偏差的平方和爲最小。最小二乘法可用於曲線擬合,其餘一些優化問題也可經過最小化能量或最大化熵用最小二乘法來表達。dom
OLS法經過一系列的預測變量來預測響應變量(也能夠說是在預測變量上回歸響應變量)。線性迴歸是指對參數β爲線性的一種迴歸(即參數只以一次方的形式出現)模型:ide
Yt=α+βxt+μt (t=1……n)表示觀測數函數
OLS線性迴歸的基本原則:最優擬合曲線應該使各點到直線的距離的平方和(即殘差平方和,簡稱RSS)最小:工具
OLS線性迴歸的目標是經過減小響應變量的真實值與預測值的差值來得到模型參數(截距項和斜率),就是使RSS最小。優化
爲了可以恰當地解釋OLS模型的係數,數據必須知足如下統計假設:spa
在R中,擬合迴歸模型最基本的函數是lm(),格式爲:code
lm(formula, data)
formula中的符號註釋:component
對於擬合後的模型(lm函數返回的對象),能夠應用下面的函數,獲得模型的更多額外的信息。orm
例如,使用基礎安裝包中的數據集women(包含了年齡在30-39歲之間女性的身高和體重信息),經過身高來預測體重。
1,線性擬合
使用lm()函數來擬合模型,得到模型對象fit
fit <- lm(weight~height,data=women)
使用summary()函數來查看模型的信息:
> summary(fit) Call: lm(formula = weight ~ height, data = women) Residuals: Min 1Q Median 3Q Max -1.7333 -1.1333 -0.3833 0.7417 3.1167 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -87.51667 5.93694 -14.74 1.71e-09 *** height 3.45000 0.09114 37.85 1.09e-14 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 1.525 on 13 degrees of freedom Multiple R-squared: 0.991, Adjusted R-squared: 0.9903 F-statistic: 1433 on 1 and 13 DF, p-value: 1.091e-14
殘差標準差(Residual standard error):表示模型用身高來預測體重的平均偏差
R的平方項(Multiple R-squared):代表模型能夠解釋體重99.1%的方差,是實際和預測值之間相關係數的平方。
F統計量(F-statistic):檢驗全部的預測變量預測響應變量是否都在某個機率水平之上,
從Coefficients 組中,能夠看到 Intercept(截距項)是 - 87.51667,height的係數是3.45,截距項和係數的標準差、t值和Pr(>|t|),其中,Pr(>|t|) 表示雙邊檢驗的p值
注,p值的表示方法一般有p-value,或Pr,p值是機率,表示某一事件發生的可能性大小。若是P值很小,說明原假設狀況的發生的機率很小,而若是出現了,根據小几率原理,咱們就有理由拒絕原假設,P值越小,咱們拒絕原假設的理由越充分。總之,P值越小,代表結果越顯著。
所以能夠獲得預測等式:
Weight= - 87.51667 + 3.45 * Height
繪製擬合的直線:
> plot(women$height, women$weight,xlab='height',ylab='weight') > abline(fit)
2,多項式擬合
使用lm(),在formula參數中使用I()函數來進行多項式擬合
> fit2 <- lm(weight~I(height^2),data=women) > plot(women$height, women$weight,xlab='height',ylab='weight') > lines(women$height,fitted(fit2)) > summary(fit2) Call: lm(formula = weight ~ I(height^2), data = women) Residuals: Min 1Q Median 3Q Max -1.2562 -0.7636 -0.1837 0.4622 2.2654 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 2.390e+01 2.109e+00 11.34 4.12e-08 *** I(height^2) 2.659e-02 4.926e-04 53.98 < 2e-16 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 1.072 on 13 degrees of freedom Multiple R-squared: 0.9956, Adjusted R-squared: 0.9952 F-statistic: 2913 on 1 and 13 DF, p-value: < 2.2e-16
非線性模型可用nls()函數進行擬合。
迴歸診斷用於評價迴歸模型的擬合程度,模型返回的參數多大程度上匹配原始數據。
根據OLS迴歸的統計假設來評價模型的擬合狀況,對於lm()擬合的模型對象,使用plot()函數生成評價模型擬合狀況的四幅圖形,
> fit <- lm(weight~height,data=women) > par(mfrow=c(2,2)) > plot(fit)
正態性:當預測變量值固定時,因變量成正態分佈,則殘差值也應該是一個均值爲0的正態分佈。正態QQ圖(Normal Q-Q)是在正態分佈對應的值下,標準化殘差的機率圖。若知足正態假設,那麼圖上的點應該落在呈45度角的直線上;若不是如此,那麼久違反了正態假設。
獨立性:沒法判斷因變量和自變量的值是否相互獨立,只能從收集的數據中來驗證。
線性相關性:若因變量與自變量線性相關,那麼殘差值與預測(擬合)值除了系統偏差以外,就沒有任何關聯。在殘差和擬合圖(Residuals VS Fitted)中,能夠看到一條曲線,這暗示着可能須要對擬合模型加上一個二次項。
同方差性:若知足不變方差假設,那麼在位置尺度圖(Scale-Location)中,水平線周圍的點應該隨機分佈。
殘差和槓桿圖(Residuals VS Leverage)提供了特殊的單個觀測點(離羣點、高槓杆點、強影響點)的信息。
殘差和槓桿圖的可讀性差,不夠實用。
什麼是高槓杆點?離羣點是指對於給定的預測值 來講,響應值 異常的點。相反,高槓杆(high leverage) 表示觀測點 是異常的。例如,圖1(a)左下圖中的觀測點41具備高槓杆值,由於它的預測變量值比其餘觀測點都要大。實線是對數據的最小二乘擬合,而虛線是刪除觀測點41後的擬合。事實上,高槓杆的觀測每每對迴歸直線的估計有很大的影響。若是一些觀測對最小二乘線有重大影響,那麼它們值得特別關注,這些點出現任何問題均可能使整個擬合失效。所以找出高槓杆觀測是十分重要的 。
car包提供了大量的函數,大大加強了擬合和評價迴歸模型的能力
1,正態性
qqplot()函數提供了精確的正態假設檢驗方法,
> library(carData) > library(car) > par(mfrow=c(1,2)) > fit <- lm(weight~height,data=women) > qqPlot(fit,labels=row.names(women),id.method='identity',simulate=TRUE,main='qq-fit') [1] 1 15 > fit2 <- lm(weight~height+I(height^2),data=women) > qqPlot(fit2,labels=row.names(women),id.method='identity',simulate=TRUE,main='qq-fit2') [1] 13 15
能夠看到,置信區間經過虛線劃定,當絕大多數點都落在置信區間時,說明正態性假設符合的很好。
2,偏差的獨立性
car包提供了durbinWatsonTest()函數,用於作Durbin-Watson檢驗,檢測偏差的序列相關性。
> durbinWatsonTest(fit) lag Autocorrelation D-W Statistic p-value 1 0.585079 0.3153804 0 Alternative hypothesis: rho != 0
p值 (p=0)不顯著,偏差項之間獨立
3,線性相關性
經過成分殘差圖(component + residual plots)檢查因變量和自變量之間是否呈線性關係。
crPlots(fit)
若圖形存在非線性,則說明可能對預測變量的函數形式建模不夠充分,那麼須要添加一些曲線成分,好比多項式,對一個或多個變量進行變換(log(x)代替x),或用其餘迴歸變體形式而不是線性迴歸。
4,同方差性
判斷方差是否恆定,nvcTest()函數生成一個記分檢驗,原假設爲誤方差不變,備擇假設爲偏差方差隨着擬合值水平的變化而變化。若檢驗顯著,說明存在誤方差不很定。
spreadLevelPlot()函數建立了一個添加了最佳擬合曲線的散點圖,展現了標準化殘差絕對值與擬合值得關係。
> ncvTest(fit) Non-constant Variance Score Test Variance formula: ~ fitted.values Chisquare = 0.8052115, Df = 1, p = 0.36954 > spreadLevelPlot(fit) Suggested power transformation: -0.8985826
記分檢驗不顯著:p=0.36954,說明知足方差不變假設,也能夠經過分佈水平看到這一點,點在水平的最佳擬合曲線周圍呈隨機分佈。
gvlma()函數,用於對線性模型假設進行綜合驗證,同事還能驗證偏斜度,峯度和異方差的評價。從輸出項中能夠看出,假設檢驗的顯著性水平是5%。若是p<0.05,說明違反了假設條件。從Global Stat 的Decision 欄中,能夠看到數據知足OLS迴歸模型全部的統計假設(p=0.597)。
> library(gvlma) > gvmodel <- gvlma(fit) > summary(gvmodel) ................. ASSESSMENT OF THE LINEAR MODEL ASSUMPTIONS USING THE GLOBAL TEST ON 4 DEGREES-OF-FREEDOM: Level of Significance = 0.05 Call: gvlma(x = fit) Value p-value Decision Global Stat 16.5866 0.0023251 Assumptions NOT satisfied! Skewness 1.5577 0.2119999 Assumptions acceptable. Kurtosis 0.1019 0.7496131 Assumptions acceptable. Link Function 14.1218 0.0001713 Assumptions NOT satisfied! Heteroscedasticity 0.8052 0.3695398 Assumptions acceptable.
參考文檔: