單因素方差分析(ANOVA)及其Python庫


單因素方差分析(one-way analysis of variance, ANOVA)用於確定3個及其以上的數據組之間的均值是否具有統計差異,此外,單因素方差分析也可以用於分析兩組數據之間的統計差異,這種情況下等價於利用t檢驗比較獨立樣本的均值。本文講介紹單因素方差分析的基本假設以及何時該使用單因素方差分析。

模型描述

單因素方差分析的基本思想是比較組間方差和組內方差,我們首先給出問題的描述。假設某個因素有s個分組,對應的觀測值分別爲:

Group 1: x11x_{11}, x12x_{12}, … , x1n1x_{1n_1}
Group 2: x11x_{11}, x12x_{12}, … , x1n2x_{1n_2}
\vdots
Group s: x11x_{11}, x12x_{12}, … , x1nsx_{1n_s}

注意這裏每組數據的個數可以是不同的

單因素的方差的基本假設是:

  1. 每組的觀測值是獨立的且服從正態分佈N(μi,σ2)N(\mu_i, \sigma^2)
  2. 每組的方差是相同的;

我們要假設的空假設是:H0:μ1=μ2==μsH_0: \mu_1=\mu_2 = \dots = \mu_s ,接下來定義統計量

首先定義第i組數據的均值爲xˉi.=1nijnixij\bar{x}_{i.}=\frac{1}{n_i}\sum_{j}^{n_i}{x_{ij}},所有樣本的均值爲1ni=1sj=1nixij\frac{1}{n}\sum_{i=1}^{s}\sum_{j=1}^{n_i}x_{ij},其中n=i=1snin = \sum_{i=1}^{s} n_i

我們定義組內平方和與組間平方和如下:
SE=i=1sj=1ni(xijxˉi.)2SA=i=1sni(xijxˉ)2 ST=i=1sj=1ni(xijxˉ)2 S_E = \sum_{i=1}^{s}\sum_{j=1}^{n_i}{(x_{ij}-\bar{x}_{i.})}^2 \\ S_A = \sum_{i=1}^{s}n_i{(x_{ij}-\bar{x})}^2 \\ S_T = \sum_{i=1}^{s}\sum_{j=1}^{n_i}{(x_{ij}-\bar{x})}^2 \\
容易證明ST=AA+SES_T=A_A+S_E
已知ni(xijxˉ)2σ2\frac{n_i{(x_{ij}-\bar{x})}^2}{\sigma^2} ~ χ(ni1)\chi(n_i-1),各組之間相互獨立,易得SAS_A ~ χ(ns)\chi(n-s)
如果空假設成立,STS_T ~ χ(n1)\chi(n-1),則有SES_E ~ χ(s1)\chi(s-1)。且如果空假設不成立,那麼SS_A會較大,則可以設統計量
F=SE/(s1)SA/(ns) F = \frac{S_E/(s-1)}{S_A/(n-s)}
拒絕域爲F>F1α(s1,ns)F>F_{1-\alpha}(s-1, n-s)

利用python求解

使用到的python函數是scipy.stats.f_oneway

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