好久沒更新博文,今天跟大家聊聊應(yīng)用統(tǒng)計中一個非?;A(chǔ),卻又非常容易讓讓人感到困惑與頭疼的問題,那就是正態(tài)性。(文末附R代碼)正態(tài)性的基本概念想必大家都清楚,比如一組數(shù)據(jù),如果其頻率分布跟下圖類似,那么這組數(shù)據(jù)就較接近正態(tài)分布 。在R中,我們也可以非常方便的用shapiro.test()命令來對某一變量是否符合正態(tài)分布進(jìn)行檢驗。 大多科研工作者也都知道,很多模型如anova, 一般線性模型的前提假設(shè)都要求數(shù)據(jù)要符合正態(tài)分布,但問題是這個正態(tài)性指的到底是什么?這個問題非常具有迷惑性,甚至很多概率論和應(yīng)用統(tǒng)計大學(xué)老師也都含糊其辭,云里霧里。那么,今天,咱們就跟大家徹底澄清一下,這個正態(tài)性到底所指何物?首先要明確這個問題,當(dāng)我們想分析因素x對y有沒有影響及其影響強(qiáng)度的時候,就可以采用anova或者線性模型對x和y之間的關(guān)系分析。這里還要明確的是,anova和一般線性模型本質(zhì)上沒有區(qū)別,實際應(yīng)用中,二者往往也經(jīng)常配合使用,線性模型中的r2即可由anova中的相關(guān)參數(shù)直接算出,這里我們不做討論。不理解的可以找本書再回顧一番。 2)正態(tài)性指的是對y的要求還是對x的要求?這個毫無疑問,指的是因變量y, 也就是你要分析的那個指標(biāo)。對x是否符合正態(tài),以及x是分類變量還是連續(xù)變量,都沒有任何要求。同一模型中,x可以有多個,x也可以既包括分類變量,又包括連續(xù)變量(即ancova)。所以我們必須明確,在你做方差分析,或者一般線性回歸前,要明確的是y是否符合正態(tài)分布,而不是x。 3)正態(tài)性檢驗,是否要對所有的y值(也就是你的全部數(shù)據(jù))進(jìn)行正態(tài)性檢驗?幾乎所有的人(當(dāng)然也包括當(dāng)年的我)拿到數(shù)據(jù)之后,首先做的第一件事,就是把數(shù)據(jù)輸入軟件,然后對y做一下正態(tài)性檢驗,其結(jié)果往往也是數(shù)據(jù)嚴(yán)重偏離正態(tài)。緊跟著下一幕就是你愁眉不展,抓耳撓腮,一通各種數(shù)據(jù)轉(zhuǎn)換不亦樂乎,最終也沒能很好的解決正態(tài)性這個完蛋問題。這是幾乎99%的人都曾經(jīng)感到迷惑的問題。那么,我們到底需不需要對所有的y值進(jìn)行正態(tài)性檢驗?zāi)兀?/p>答案是: 在幾乎100%的情況下,對所有的y進(jìn)行正態(tài)性檢驗都毫無意義。 為什么這么說呢?我們首先看一個標(biāo)準(zhǔn)的線性回歸的公式
y=a+bx+ε, ε ~N(0, σ2) 這里有假設(shè)y符合正態(tài)分布了么?完全沒有,只是假設(shè)殘差符合正態(tài)分布。那么殘差符合正態(tài)分布,該如何理解呢?其實這個問題,在貝葉斯語境下會更容易理解。比如上述公式在貝葉斯語境下,就變成: y~ Normal (a+bx, σ2) 也就是說,這里假定,y是符合正態(tài)分布的。什么?我不是剛說了假定Y符合正態(tài)分布毫無意義么,怎么這里又假定他符合正態(tài)分布了呢? 列位看官,別著急,擦亮你的眼睛先,咱們慢慢分析。 在 y~ Normal (a+bx, σ2) 這個模型里, 假定y符合正態(tài)分布不假,但這里是假定y符合同一個正態(tài)分布么?非也!這里是假定y符合一系列均值隨x值的變化而變化的一系列正態(tài)分布,只不過這一系列正態(tài)分布的方差都是σ2而已(想想anova和線性回歸的第二個前提假設(shè):方差齊次性,慢慢理解下,看是不是豁然開朗了)。 所以說,正態(tài)性的本質(zhì),是在x相同或者保持不變的前提下,對應(yīng)的y應(yīng)該符合一個正態(tài)分布。而當(dāng)x變化的時候,y理論上應(yīng)該符合一系列的均值由x決定,而方差又相同的正態(tài)分布。從根本上說,正態(tài)性指的是,當(dāng)所有影響y的因素(至少是你認(rèn)為對y影響比較大的那些因素,也就是通常情況下你在實驗中設(shè)置的x)都固定的前提下,y的值應(yīng)該是符合一個正態(tài)分布的。在線性模型中,x對y的影響,也就是公式中的bx。當(dāng)我們把bx完全去除,或者令x保持在某一固定值之后,y就應(yīng)該服從一個均值固定,且方差為σ2的正態(tài)分布。而去除x的影響后的y值,我們可以用y’表示,y’=y-a-bx (是否減去a無所謂,因為a是一個常數(shù)), 這不就是模型的殘差么!所以這也是為何第一個公式中,我們要假定模型的殘差要符合正態(tài)分布。通常,我們研究某一個指標(biāo)y的時候,都需要考慮某些因素x對y的影響,而不是僅僅研究y本身的隨機(jī)波動。所以說,在幾乎所有情況下,我們直接對y進(jìn)行正態(tài)性檢驗是毫無意義的,因為y的變異中摻雜了x對y的影響。所以正態(tài)性檢驗時,我們首先要把這部分影響排除,也就是只對模型的殘差進(jìn)行正態(tài)性檢驗(這是最常用的方法),或者對x相同時對應(yīng)的y進(jìn)行正態(tài)性檢驗就可以了。好了,講了這么多可能大家覺得還是有點抽象,下面就以一個最簡單的案例說明這一問題。 比如,我想了解男女之間體重是否有差別,分別從某一相同年齡段的人群中(人種等其他因素盡可能保持一致)隨機(jī)調(diào)查了1000個男人和1000個女人的體重。然后直接對這2000個體重數(shù)據(jù)的分布作圖,結(jié)果如下:很明顯,這是一個雙峰曲線,是不符合正態(tài)分布的,對這組數(shù)據(jù)的正態(tài)性檢驗也說明了這一點:那么怎么辦?我就要放棄anova或者線性模型,或者立即開始對體重數(shù)據(jù)進(jìn)行各種巧立名目的轉(zhuǎn)換了么?別著急,按我們說的,當(dāng)x保持一致時(這里也就是性別一致時),y符合正態(tài)分布就可以,那么,我們對男、女的體重可以分別作圖:這時我們發(fā)現(xiàn),男女的體重看起來分別都非常接近正態(tài)。所以我們可以拿體重對性別做線性回歸:lm1<-lm(weight~sex, data=data) 然后對這個模型的殘差進(jìn)行正態(tài)性檢驗:結(jié)果如下:可見殘差完全符合正態(tài)分布,模型本身沒有任何問題。原始體重數(shù)據(jù)不符合正態(tài)分布,其實是由于性別造成,這也是我們?yōu)槭裁粗粚δP蜌埐钸M(jìn)行正態(tài)性檢驗的原因。到這里,數(shù)據(jù)正態(tài)性的意義大家都清楚了吧! 事實上,在實際數(shù)據(jù)分析中,模型的殘差真正符合正態(tài)分布的情況也很少見(至少我自己一次也沒碰到過,當(dāng)然這時,也可以先對y做下轉(zhuǎn)化,然后再做回歸分析)。當(dāng)你歷經(jīng)千辛萬苦,想盡各種辦法去改進(jìn)模型,但殘差還是不符合正態(tài)分布怎么辦呢?一種大家都認(rèn)可的方案是,我們可以拿模型的殘差和擬合值之間重新做一下回歸,如果二者沒有關(guān)系,那就說明你的模型沒有什么大問題。殘差的正態(tài)性,事實上并不是一個非常嚴(yán)格的限定條件,但擬合值和殘差沒有關(guān)系,這一點是一定要確認(rèn)的。最后需要說明的是,對于連續(xù)變量y(如體重,身高),通常我們可以認(rèn)為在x固定的前提下,y理論上是符合正態(tài)的。但有些變量屬于天生混蛋型,無論x怎么保持一致,y都不可能服從正態(tài)(比如0,1數(shù)據(jù),一個家庭有多少個孩子,一個鳥窩里有多少個鳥蛋,比率數(shù)據(jù)等等)。對于這類數(shù)據(jù),一般線性模型是不適合的,要解決這個問題,我們就需要進(jìn)入傳說中的廣義線性模型的范疇了,我們下次有機(jī)會再做介紹。
|