肖明魁
摘要:近年隨著大數(shù)據(jù)時代的來臨,python語言作為一種廣泛使用的編程工具被人們越來越多地運(yùn)用于數(shù)據(jù)分析,建模及數(shù)據(jù)挖掘等領(lǐng)域。而今大數(shù)據(jù)時代,數(shù)據(jù)研究和分析在各行各業(yè)得到廣泛的應(yīng)用,在對多樣本數(shù)據(jù)做檢驗(yàn)時,經(jīng)常會使用單因素方差分析方法,用于考察單個自變量對因變量產(chǎn)生的變化和影響,并通過兩兩比較進(jìn)一步驗(yàn)證準(zhǔn)確性,本文以實(shí)際數(shù)據(jù)作為案例,研究和分析pthon語言如何實(shí)現(xiàn)單因素方差和兩兩比較具體應(yīng)用。
關(guān)鍵詞:大數(shù)據(jù);python;方差分析
中圖分類號:TP393? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2019)26-0029-02
開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID):
1 基本概念介紹
單因素方差分析是指,對多組樣本進(jìn)行分析過程中,檢驗(yàn)具體某個影響因子的差異是否可能對總體觀察對象產(chǎn)生顯著影響。例如,不同的患者使用不同的藥物是否會產(chǎn)生明顯不同的臨床效果;不同品牌商品在不同的城市的銷量是否存在顯著差異等。通常被考察的分組樣本為分類變量,而考察結(jié)果則為連續(xù)型變量。
單因素方差分析是有效解決這個問題的方法之一,單因素方差分析中,多組樣本總體差異分兩部分構(gòu)成:隨機(jī)差異和處理因素差異,即:總體差異=隨機(jī)差異+處理因素差異。隨機(jī)差異是指不同分組中各獨(dú)立樣本的個體差異,由于分組樣本是隨機(jī)分布,其個體差也是隨機(jī)存在,而處理因素差異則是指由于樣本不同分組規(guī)則導(dǎo)致的差異,例如, 同一患者在使用不同的藥物之后產(chǎn)生的不同臨床效果,同一商品在不同城市銷量會有顯著差異。與此同時,樣本總體差異還和組內(nèi)差異和組間差異有關(guān),即:樣本總體差異=組內(nèi)差異+組間差異,通常,組內(nèi)差異是由于隨機(jī)差異導(dǎo)致,而組間差異的產(chǎn)生則是隨機(jī)差異和處理因素差異共同影響的結(jié)果,對于方差分析研究,重點(diǎn)考察的對象是處理因素差異對總體樣本差異產(chǎn)生的影響,即通過組內(nèi)差異與組間差異相比較,來判斷總體樣本是否存在處理因素差異,因此,我們需要尋找一個合適的指標(biāo)作為判斷標(biāo)準(zhǔn),統(tǒng)計學(xué)中的離均差,平方和,標(biāo)準(zhǔn)差,方差等都具有一定參考價值,同時還要充分考慮樣本分析中數(shù)據(jù)標(biāo)準(zhǔn)化問題,我們可用以下公式表示兩者間的關(guān)系:F=MSA/MSE,其中,MSA和MSE分別表示組間和組內(nèi)差異的方差,又稱均方,二者的比值F代表處理因素的影響值,當(dāng)F?1,組間差異遠(yuǎn)大于組內(nèi)差異,說明處理因素差異顯著,若F=1,則認(rèn)為處理因素影響可以忽略,F(xiàn)值的大小通常采用P值確定。
在對總體樣本作差異分析之后,如果拒絕H0原假設(shè),即各分組樣本之間可能存在顯著差異,若想具體了解不同分組之間的差異,需要對樣本檢驗(yàn)做進(jìn)一步分析,即兩兩比較,同時,方差分析對樣本分布也有明確的要求,第一,各樣本必須相互獨(dú)立,第二,樣本總體必須符合正態(tài)分布,第三,樣本必須滿足方差齊性要求。
對多組樣本假設(shè)分析理論上可采用兩兩比較的方法,對各組樣本作T檢驗(yàn)分析,分別考察兩組樣本的差異,然而實(shí)際研究過程中,每次T檢驗(yàn)都可能會出現(xiàn)棄真錯誤,即統(tǒng)計學(xué)概念中的第一類錯誤,誤將H0原假設(shè)拒絕,通常假設(shè)檢驗(yàn)的允許誤差為0.05,即α=0.05,相對的,每次正確推斷的概率為0.95,而經(jīng)過N組樣本比較之后,最終檢驗(yàn)正確概率為0.95^N,檢驗(yàn)準(zhǔn)確率呈指數(shù)級下降,而α=1-0.95^N,顯然無法滿足假設(shè)檢驗(yàn)的允許誤差范圍,可見對于實(shí)際研究中多組樣本假設(shè)檢驗(yàn),簡單的兩兩比較方法是不可行的。
解決兩兩比較方法中一類錯誤放大問題的關(guān)鍵在于控制一類錯誤的大小,即對一類錯誤作校正。在實(shí)際樣本分析過程中,誤差校正通常會遇到三種情形:一,比較誤差CER,指每次分組比較時所出現(xiàn)的一類錯誤概率,即α值;二,完全無效假設(shè)條件下的檢驗(yàn)誤差率EERC,指當(dāng)原假設(shè)H0完全成立時一類錯誤出現(xiàn)的概率,因此,方差分析檢驗(yàn)也可被認(rèn)為是對EERC的控制;三,最大試驗(yàn)誤差率MEER,指在任何完全或部分無效假設(shè)成立時,一類錯誤出現(xiàn)的最大概率,在實(shí)際研究過程中,MEER使用范圍最廣。
兩兩比較對于一類錯誤的控制方法有很多種,通常可分為兩大類:直接校正P值法和聯(lián)合檢驗(yàn)法。直接校正法是通過控制每次分組檢驗(yàn)的假設(shè)概率,使得樣本總α水準(zhǔn)被限制在0.05之內(nèi),從而確??傮w檢驗(yàn)的有效性,常用的直接校正法有sidak校正,bonferroni校正等,直接校正法存在一定缺陷,由于該方法對每組樣本都做兩兩比較,因此不僅效率低,而且增加了誤差影響,其次,直接校正法對于一類錯誤控制較嚴(yán),檢驗(yàn)結(jié)果關(guān)于陽性結(jié)論過于保守。聯(lián)合檢驗(yàn)法克服了這一缺陷,該方法在標(biāo)準(zhǔn)誤和自由度的計算上利用了全部樣本信息,使得結(jié)果相對于直接校正法更準(zhǔn)確,然而,如果不對聯(lián)合檢驗(yàn)結(jié)果做校正,也有可能使得假陽性的概率增加。聯(lián)合檢驗(yàn)法通常包括以下幾種,SNK法,Turkey,Duncan,Scheffe,Dunnet等。
兩兩比較方法有很多種,在實(shí)際研究中,應(yīng)當(dāng)根據(jù)樣本分析的具體情況采用不同方法,對于各個樣本互相獨(dú)立,或者有針對性地對若干對均數(shù)做分析時,此時不必使用兩兩比較,一般采用T檢驗(yàn)就夠了;若總體樣本檢驗(yàn)結(jié)果接受原假設(shè)H0,各樣本之間無明顯差異,則無須進(jìn)行兩兩比較;對于某些明確對照組進(jìn)行驗(yàn)證性研究時,適合采用Bonferroni法;對于隨機(jī)多組均數(shù)間的探索性驗(yàn)證研究,為確保原假設(shè)的準(zhǔn)確性,需要嚴(yán)格控制一類錯誤,通常采用Turkey法和Scheffe法。
2 具體案例實(shí)現(xiàn)
本文以某市多所中學(xué)在校生各科成績匯總表數(shù)據(jù)為例,以各學(xué)校在校生成績作為作為分組樣本, 具體闡述單因素方差和兩兩比較分析方法。
Python語言集成了大量用于數(shù)據(jù)分析挖掘的工具包,最常用的包括statsmodels,scipy等模塊,其中statsmodels包含了大量統(tǒng)計模型,非常方便用于描述統(tǒng)計,模型估計和推斷,使用之前,需要做模型設(shè)定,代碼如下:
輸出結(jié)果顯示為標(biāo)準(zhǔn)方差分析表格,對分組變量學(xué)校的檢驗(yàn)結(jié)果表明,該樣本離均差平方和為8.085729e+07,自由度為12,統(tǒng)計量F值為849.921572,PR值為0,因此,檢驗(yàn)結(jié)果拒絕原假設(shè)H0,可以認(rèn)為分組樣本之間存在顯著差異。
確定分組樣本之間存在差異之后,還須進(jìn)一步研究分析各分組樣本之間差異程度,即兩兩比較。Python提供了一個有效的工具包scikit,用于分析研究。代碼如下:
輸出部分結(jié)果如下:
表格行列分別表示分組變量學(xué)校,表格中的每個數(shù)字則表示兩兩比較的PR值,若PR<0.05,則檢驗(yàn)結(jié)果拒絕原假設(shè)H0,即兩組樣本之間存在顯著差異;反之,則接受原假設(shè),即兩組樣本可以被認(rèn)為無顯著差異。
表格數(shù)據(jù)展示相對比較復(fù)雜,python還可以通過熱力圖的可視化方式展示更加直觀,以上數(shù)據(jù)可以通過繪圖模塊matplotlib處理,達(dá)到理想效果,代碼如下:
輸出結(jié)果如圖所示:
熱力圖通過不同顏色色塊,很直觀地展示出分組樣本兩兩比較的驗(yàn)證結(jié)果。
3 結(jié)束語
作為近年最受歡迎的編程工具之一,python語法簡潔,清晰,且易于理解和維護(hù),尤其是附帶的功能強(qiáng)大,種類豐富的各種工具包和模塊,為數(shù)據(jù)研究分析工程提供了更多創(chuàng)新思路和可行性解決方案,除了簡單的一般線性模型,python工具包還提供了多種回歸模型,樹模型,隨機(jī)森林,神經(jīng)網(wǎng)絡(luò)等更為復(fù)雜的建模和功能,充分滿足用戶工程開發(fā)需要,在數(shù)據(jù)分析和研究過程中,應(yīng)當(dāng)充分利用開發(fā)工具提供的各種模塊和方法,可以達(dá)到事半功倍的效果。與此同時,更為豐富強(qiáng)大的python模塊也在源源不斷地開發(fā)和發(fā)布過程中,相信在未來大數(shù)據(jù)時代,作為重要的軟件開發(fā)工具,python必將發(fā)揮更大的潛力和應(yīng)用價值。
參考文獻(xiàn):
[1] 陳明.大數(shù)據(jù)可視化分析[J].計算機(jī)教育,2015-3-10.
[2] 聶晶.python在大數(shù)據(jù)挖掘和分析中的應(yīng)用優(yōu)勢[J].廣西民族大學(xué)學(xué)報,2018-2-15.
[3] 劉雨珂,王平.基于Python+Pandas+Matplotlib的學(xué)生成績數(shù)據(jù)統(tǒng)計與圖形輸出實(shí)現(xiàn)[J].福建電腦,2017-10-31.
[4] 翟高粵.基于Python的數(shù)據(jù)分析概述[J].甘肅科技縱橫,2018-11-25.
[5] 聶晶.Python在大數(shù)據(jù)挖掘和分析中的應(yīng)用優(yōu)勢[J].廣西民族大學(xué)學(xué)報(自然科學(xué)版),2018-01.
[6] 葉惠仙.Python在學(xué)院招生數(shù)據(jù)分析中的應(yīng)用[J].計算機(jī)時代,2018-11.
【通聯(lián)編輯:梁書】