先說殘差圖究竟是什么鬼豁延。
殘差圖是指以殘差為縱坐標(biāo),以任何其他指定的量為橫坐標(biāo)的散點圖腊状。(上圖僅是殘差的示意圖,非殘差圖苔可,殘差圖可見下文)
用普通最小二乘法(OLS)做回歸分析的人都知道缴挖,回歸分析后的結(jié)果一定要用殘差圖(residual plots)來檢查,以驗證你的模型焚辅。你有沒有想過這究竟是為什么映屋?殘差圖又究竟是怎么看的呢?
這背后當(dāng)然有數(shù)學(xué)上的原因同蜻,但是這里將著重于聊聊概念上的理解棚点。從根本上說,隨機性(randomness)和不可預(yù)測性(unpredictability)是任何回歸模型的關(guān)鍵組成部分湾蔓,如果你沒有考慮到這兩點瘫析,那么你的模型就不可信了,甚至說是無效的默责。
為什么這么說呢贬循?首先,對于一個有效的回歸模型來說桃序,可以細(xì)分定義出兩個基本組成部分:
Response =(Constant + Predictors)+ Error
我想說的是另一種說法杖虾,那就是:
響應(yīng)(Response) = 確定性(Deterministic) + 隨機性(Stochastic)
(有時候真是不得不吐槽下,畢竟是外國人發(fā)明的現(xiàn)代科學(xué)媒熊,中文翻譯過來難眠有混淆視聽之嫌奇适,學(xué)術(shù)詞匯的理解還是看英文更能清晰本質(zhì),一會就會聊到Stochastic就明白為什么這么說)
確定性部分(The Deterministic Portion)
為了完整芦鳍,先提一下Deterministic這部分嚷往。在預(yù)測模型中,該部分是由關(guān)于預(yù)測自變量的函數(shù)組成怜校,其中包含了回歸模型中所有可解釋间影、可預(yù)測的信息。
隨機誤差(The Stochastic Error)
Stochastic 這個詞很牛逼茄茁,其不僅蘊含著隨機性(random)魂贬,還有不可預(yù)測性(unpredictable)。這是很重要的兩點裙顽,往往很多朋友都以為有隨機性的特點就夠了付燥,其實不然。這兩點放在一起愈犹,就是在告訴我們回歸模型下的預(yù)測值和觀測值之間的差異必須是隨機不可預(yù)測的键科。換句話說闻丑,在誤差(error)中不應(yīng)該含有任何可解釋、可預(yù)測的信息勋颖。
模型中的確定性部分應(yīng)該是可以很好的解釋或預(yù)測任何現(xiàn)實世界中固有的隨機響應(yīng)嗦嗡。如果你在隨機誤差中發(fā)現(xiàn)有可解釋的、可預(yù)測的信息饭玲,那就說明你的預(yù)測模型缺少了些可預(yù)測信息侥祭。那么殘差圖(residual plots)就可以幫助你檢查是否如此了!
小注:回歸殘差其實是真實誤差(ture error)的估計茄厘,就好比回歸系數(shù)是真實母體系數(shù)(ture population coefficients)的估計矮冬。
殘差圖(Residual Plots)
我們可以用殘差圖來估計觀察或預(yù)測到的誤差error(殘差residuals)與隨機誤差(stochastic error)是否一致。用一個丟骰子的例子最好理解了次哈。當(dāng)你丟出去一個六面的骰子時胎署,你不應(yīng)該能夠預(yù)測得到哪面點數(shù)向上。然而窑滞,你卻可以評估在一系列投擲后琼牧,正面向上的數(shù)字是否遵循一個隨機模式,你自己心中就會想象出一個隨機散布的殘差圖葛假。如果障陶,有人背著你對骰子做了點手腳,讓六點更頻繁的出現(xiàn)向上聊训,這時你心中的殘差圖看上去就似乎有規(guī)律可循抱究,從而不得不修改心中的模型,讓你狐疑骰子一定有問題带斑。
相同的原則也適用于回歸模型鼓寺。你不應(yīng)該能夠預(yù)測任何給定的觀察或預(yù)測結(jié)果的錯誤(或者說差別)。你需要確定殘差是否與隨機誤差相互呈現(xiàn)一致性勋磕,就像丟骰子一樣妈候,殘差若整體呈現(xiàn)“很古怪”的模式,你就需要回頭修改你的回歸模型了挂滓。上面“古怪”究竟怎么看呢苦银?看下文。
話說赶站,OLS回歸模型的隨機誤差到底是什么樣子的呢幔虏?首先,殘差不應(yīng)該成片的很高或很低贝椿,而是在擬合值的范圍內(nèi)想括,殘差應(yīng)該以0為中心。換句話說烙博,模型的擬合應(yīng)該平均散布在被擬合值點附近瑟蜈。而且烟逊,在OLS理論中,假設(shè)隨機誤差產(chǎn)生的是正態(tài)分布的殘差铺根。因此宪躯,殘差應(yīng)該是以對稱的模式,并且在整個擬合范圍內(nèi)具有恒定均勻的擴散位迂,如下圖python代碼和繪圖:
%matplotlib inline
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
# 給任務(wù)單獨分配隨機種子
np.random.seed(sum(map(ord
, "anscombe")))
import seaborn as sns
anscombe = sns.load_dataset("anscombe")
sns.residplot(x="x", y="y"
, data=anscombe.query("dataset == 'I'")
, scatter_kws={"s": 80})
這是用Seaborn畫的美圖眷唉。擬合的好,就是0均值的白噪聲分布$N(0,\sigma^2)$囤官,不含任何人為模態(tài)。
下面來看一個有問題的殘差圖蛤虐。請一定要記住党饮,殘差不應(yīng)該包含任何可預(yù)測的信息。
sns.residplot(x="x", y="y"
, data=anscombe.query("dataset == 'II'")
, scatter_kws={"s": 80})
在上圖中驳庭,你就可以根據(jù)擬合值來預(yù)測殘差的非零值刑顺。例如,擬合值為9的預(yù)期殘差為正值饲常,而5和13的擬合值具有負(fù)的預(yù)期殘差蹲堂。
殘差中的非隨機模式表明模型的確定部分(預(yù)測變量)沒有捕獲一些“泄露”到殘差中的一些可解釋/可預(yù)測信息。該圖表明模型幾種沒法解釋的可能性贝淤,可能性包括:
- 一個缺失的變量
- 模型缺少一個變量的高階項來解釋曲率
- 模型缺少在已經(jīng)存在的項之間的相互作用項(交叉項)
由此來回溯去修改模型柒竞,以期望修改后的殘差圖是理想中的殘差圖。
除了上述之外播聪,還有兩種預(yù)測信息會潛入到了殘差中的方式:
- 殘差不應(yīng)該與另外的變量有所相關(guān)朽基。如果你可以用另一個變量預(yù)測出此殘差圖,那么該變量就應(yīng)該考慮到你的模型當(dāng)中离陶。那么就可以通過繪制其他變量的殘差圖稼虎,來考察這個問題。
- 相鄰殘差(Adjacent residuals)不應(yīng)該相互關(guān)聯(lián)(殘差的自相關(guān)性)招刨。如果你可以使用一個殘差來預(yù)測得到下一個殘差霎俩,則說明存在一些模型還未捕捉到的可預(yù)測信息。通常來說沉眶,這種情況涉及時間有序的觀察預(yù)測打却。例子就不舉了。
綜上沦寂,若非要一句話小結(jié)学密,那就是要留意兩個細(xì)節(jié):正確殘差圖不僅要體現(xiàn)出隨機性(random),還要體現(xiàn)不可預(yù)測性(unpredictable)即可传藏。
以上腻暮。
Ref: