Python 統計分析–單因素方差分析
方差分析的主要工作就是將觀測數據的總變異(波動)按照變異的原因的不同分解爲因子效應與試驗誤差,並對其作出數量分析,比較各種原因在總變異中所佔的重要程度,以此作爲進一步統計推斷的依據。
1.基本假設
(1).正態假設。對於因素的每個水平,其觀測值都是來自正態總體的隨機樣本;
(2).方差齊性假設。各個總體的方差相同;
(3).獨立假設。觀測值之間都是獨立的。
2.單因素方差分析
設試驗只有一個因子(又稱爲因素)A有r個水平 , , ,…, 。現在水平Ai下進行ni次獨立試驗,得到的觀測數據爲
則單因素方差模型可表示爲:
(1). = , i=1,2,…,r,j=1,2,…,
(2). ~ N(0, ),且 相互獨立
(3). = 0
其中 爲總平均, 是第i個水平的效應, 是隨機誤差。
我們的目的是要比較因素A的r個水平的效應是否有顯著差異,這可歸結爲檢驗假設:
如果 被拒絕,則說明因素A的各個水平的效應之間有顯著差異。
按照方差分析的思想,將總離差平方和分解爲兩部分,即:
其中
,
,
這裏稱 爲總離差平方和(總變差),它是所有數據 與總平均值 之差的平方和,描繪所有觀測數據的離散程度; 爲誤差平方和(組內平方和),是對固定的i,觀測值 , ,…, 之間的差異大小的度量。 爲因素A的效應平方和(組間平方和),表示因子A各水平下的樣本均值和總平均值之差的平方和。
可以證明,當 成立時
~ ,
~
且 與 獨立,於是:
~
若 ,則拒絕原假設,認爲因素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,
說明有理由拒絕原假設, 即認爲五種除雜方法有顯著差異。