Python 统计分析--单因素方差分析

Python 统计分析–单因素方差分析

方差分析的主要工作就是将观测数据的总变异(波动)按照变异的原因的不同分解为因子效应与试验误差,并对其作出数量分析,比较各种原因在总变异中所占的重要程度,以此作为进一步统计推断的依据。

1.基本假设

(1).正态假设。对于因素的每个水平,其观测值都是来自正态总体的随机样本;

(2).方差齐性假设。各个总体的方差相同;

(3).独立假设。观测值之间都是独立的。

2.单因素方差分析

设试验只有一个因子(又称为因素)A有r个水平 A1 A 1 , A2 A 2 , A3 A 3 ,…, Ar A r 。现在水平Ai下进行ni次独立试验,得到的观测数据为 Xij X i j
则单因素方差模型可表示为:

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

(2). εij ε i j ~ N(0, σ2 σ 2 ),且 εij ε i j 相互独立

(3). ri=1niαi ∑ i = 1 r n i α i = 0

其中 μ μ 为总平均, αi α i 是第i个水平的效应, εij ε i j 是随机误差。

我们的目的是要比较因素A的r个水平的效应是否有显著差异,这可归结为检验假设:

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

如果 H0 H 0 被拒绝,则说明因素A的各个水平的效应之间有显著差异。

按照方差分析的思想,将总离差平方和分解为两部分,即:

SST=SSE+SSA S S T = S S E + S S A

其中

SST=ri=1nij=1(XijX¯)2 S S T = ∑ i = 1 r ∑ j = 1 n i ( X i j − X ¯ ) 2 , X¯=1nri=1nij=1Xij X ¯ = 1 n ∑ i = 1 r ∑ j = 1 n i X i j

SSE=ri=1nij=1(XijXi.¯)2 S S E = ∑ i = 1 r ∑ j = 1 n i ( X i j − X i . ¯ ) 2 , Xi.¯=1nnij=1Xij X i . ¯ = 1 n ∑ j = 1 n i X i j

SSA=ri=1nij=1(Xi.¯X¯)2 S S A = ∑ i = 1 r ∑ j = 1 n i ( X i . ¯ − X ¯ ) 2

这里称 SST S S T 为总离差平方和(总变差),它是所有数据 Xij X i j 与总平均值 X¯ X ¯ 之差的平方和,描绘所有观测数据的离散程度; SSE S S E 为误差平方和(组内平方和),是对固定的i,观测值 Xi1 X i 1 , Xi2 X i 2 ,…, Xini X i n i 之间的差异大小的度量。 SSA S S A 为因素A的效应平方和(组间平方和),表示因子A各水平下的样本均值和总平均值之差的平方和。

可以证明,当 H0 H 0 成立时

SSEσ2 S S E σ 2 ~ χ2(nr) χ 2 ( n − r ) ,

SSAσ2 S S A σ 2 ~ χ2(r1) χ 2 ( r − 1 )

SSA S S A SSE S S E 独立,于是:
F=SSA/(r1)SSE/(nr) F = S S A / ( r − 1 ) S S E / ( n − r ) ~ F(r1,nr) F ( r − 1 , n − r )

F>Fα(r1,nr) F > F α ( r − 1 , n − r ) ,则拒绝原假设,认为因素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,
说明有理由拒绝原假设, 即认为五种除杂方法有显著差异。

你可能感兴趣的:(Python 统计分析--单因素方差分析)