Python 統計分析--單因素方差分析

Python 統計分析–單因素方差分析

方差分析的主要工作就是將觀測數據的總變異(波動)按照變異的原因的不同分解爲因子效應與試驗誤差,並對其作出數量分析,比較各種原因在總變異中所佔的重要程度,以此作爲進一步統計推斷的依據。

1.基本假設

(1).正態假設。對於因素的每個水平,其觀測值都是來自正態總體的隨機樣本;

(2).方差齊性假設。各個總體的方差相同;

(3).獨立假設。觀測值之間都是獨立的。

2.單因素方差分析

設試驗只有一個因子(又稱爲因素)A有r個水平A1 , A2 ,A3 ,…,Ar 。現在水平Ai下進行ni次獨立試驗,得到的觀測數據爲Xij
則單因素方差模型可表示爲:

(1).Xij =μ+ai+εij , i=1,2,…,r,j=1,2,…,ni

(2).εij ~ N(0,σ2 ),且εij 相互獨立

(3).i=1rniαi = 0

其中μ 爲總平均,αi 是第i個水平的效應,εij 是隨機誤差。

我們的目的是要比較因素A的r個水平的效應是否有顯著差異,這可歸結爲檢驗假設:

H0:α1=α2=...=αr

如果H0 被拒絕,則說明因素A的各個水平的效應之間有顯著差異。

按照方差分析的思想,將總離差平方和分解爲兩部分,即:

SST=SSE+SSA

其中

SST=i=1rj=1ni(XijX¯)2 , X¯=1ni=1rj=1niXij

SSE=i=1rj=1ni(XijXi.¯)2 , Xi.¯=1nj=1niXij

SSA=i=1rj=1ni(Xi.¯X¯)2

這裏稱SST 爲總離差平方和(總變差),它是所有數據Xij 與總平均值X¯ 之差的平方和,描繪所有觀測數據的離散程度;SSE 爲誤差平方和(組內平方和),是對固定的i,觀測值Xi1 ,Xi2 ,…,Xini 之間的差異大小的度量。SSA 爲因素A的效應平方和(組間平方和),表示因子A各水平下的樣本均值和總平均值之差的平方和。

可以證明,當H0 成立時

SSEσ2 ~ χ2(nr) ,

SSAσ2 ~ χ2(r1)

SSASSE 獨立,於是:
F=SSA/(r1)SSE/(nr) ~ F(r1,nr)

F>Fα(r1,nr) ,則拒絕原假設,認爲因素A的r個水平有顯著差異。

3.案例:

以澱粉爲原料生產葡萄的過程中, 殘留許多糖蜜, 可作爲生產
醬色的原料. 在生產醬色的過程之前應儘可能徹徹底底除雜, 以保證醬色質量.
爲此對除雜方法進行選擇. 在實驗中選用5種不同的除雜方法, 每種方法做4次
試驗, 即重複4次

4.Python 代碼


import pandas as pd
from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm

df = pd.read_csv("one-way.csv")

df.head()

A B
0 a1 25.6
1 a1 22.2
2 a1 28.0
3 a1 29.8
4 a2 24.4

model = ols('B ~ A',df).fit()
anovat = anova_lm(model)
print(anovat)

            df   sum_sq   mean_sq         F    PR(>F)

A          4.0  131.957  32.98925  4.306128  0.016182

Residual  15.0  114.915   7.66100    

說明: 上述結果中, df表示自由度; sum_sq表示平方和; mean_sq表示均方和;

F表示F檢驗統計量的值,; PR(>F)表示檢驗的p值; A就是因素A;Residuals爲殘差。

5.結果說明:

可以看出p=0.016182<0.05,
說明有理由拒絕原假設, 即認爲五種除雜方法有顯著差異。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章