比較二或多組變異數Levene’s 檢定 (Levene’s Test for Comparing Two or More Variances)
套路27: 比較二或多組變異數Levene’s 檢定
(Levene’s
Test for Comparing Two or More Variances)
什麼是比較多組獨立樣本變異數檢定? 說白了就是多組分別獨立取樣的資料做比較的假設檢定。**注意** ”比較變異數” (comparing variances)和”變異數分析” (analysis of variance)不同。變異數分析是多組資料比較平均值。統計假設檢定檢定什麼?看H0。例如多組獨立樣本假設檢定H0 : s12 = s22 = … = sk2,HA : 至少有一組變異數不同,是檢定多組資料的變異數是否相同。假設相等時為雙尾 (two-tailed test) 檢定。
1. 使用時機: 用於比較觀測到的兩組或多組變異數(variances)。
2. 分析類型: 母數分析(parametric analysis)。直接使用資料數值算統計叫parametric方法,把資料排序之後用排序的名次算統計叫non-parametric方法。
3. 前提假設: 資料偏離常態分布(normal distribution)仍可用。
4. 資料範例1,兩組變異數: 咪路調查高一和大一學生體重(kg),資料如下:
高一
|
41
|
35
|
33
|
36
|
40
|
46
|
31
|
37
|
34
|
30
|
38
|
大一
|
52
|
57
|
62
|
55
|
64
|
57
|
56
|
55
|
60
|
59
|
|
請問高一和大一學生體重變異數是否相同? H0: σ21 = σ22,HA: σ21
≠ σ22。
第一步: 輸入建立資料,用小c將資料放入名稱為h1及u1的vector (R最基本資料結構)。用rep函數產生與資料相同數目的(11及10個)大寫H及U放入名稱為h2及u2的vector,再組合成名稱為dat的data frame。
h1 <- c(41, 35, 33,
36, 40, 46, 31, 37, 34, 30, 38)
u1 <- c(52, 57, 62,
55, 64, 57, 56, 55, 60, 59)
h2 <-
rep("H", 11)
u2 <-
rep("U", 10)
Weight <- c(h1, u1)
School <- c(h2, u2)
dat <-
data.frame(Weight, School)
第二步: 畫圖看資料分布。
動作1: 安裝ggplot2程式套件。
動作2: 呼叫ggplot2程式套件備用。
library(ggplot2)
動作3: 畫圖。
ggplot(dat, aes(x = School,
y = Weight)) +
geom_boxplot(color
= "red")+
geom_jitter(position
= position_jitter(0.05))
# 同時畫x-y散布(黑色點)圖及盒圖(紅色box plot)。
# ggplot2程式套件geom_jitter函數讓重疊(數值相同)的資料點錯開,避免誤判。
第三步: 檢查兩組資料是否為相同變異數(H0:
s21 = s22,HA: s21 ≠s22)。
動作1: 安裝car程式套件。
動作2: 呼叫car程式套件備用。
library(car)
動作3: 閱讀car程式套件中leveneTest函數的使用說明。
help(leveneTest)
動作4: 使用car程式套件中leveneTest函數代入dat中資料。
leveneTest(Weight ~
School, data = dat)
動作5: 判讀結果。
Levene's
Test for Homogeneity of Variance (center = median)
Df F value
Pr(>F)
group 1 0.5438 0.4699
19
# p-value > 0.05,H0: s21 = s22成立,資料變異數相同。
# p-value < 0.05,H0: s21 = s22不成立,資料變異數不同。
5. 資料範例2,多組變異數: 咪路調查餵食不同飼料的肉雞體重(g),資料如下:
飼料1
|
飼料2
|
飼料3
|
飼料4
|
60.8
|
68.7
|
69.6
|
61.9
|
67.0
|
67.7
|
77.1
|
64.2
|
65.0
|
75.0
|
75.2
|
63.1
|
68.6
|
73.3
|
71.5
|
66.7
|
61.7
|
71.8
|
|
60.3
|
H0: σ21
= σ22 = σ23 = σ24。 HA: 餵食不同飼料的肉雞體重變異數不完全相同。
第一步: 輸入建立資料,用小c將資料放入名稱為d1-d4的vector (R最基本資料結構)。用rep函數產生與資料相同數目的(4及5個)大寫F1-F4放入名稱為f1-f4的vector,再組合成名稱為dat的data frame。
d1 <- c(60.8, 67.0,
65.0, 68.6, 61.7)
d2 <- c(68.7, 67.7,
75.0, 73.3, 71.8)
d3 <- c(69.6, 77.1,
75.2, 71.5)
d4 <- c(61.9, 64.2,
63.1, 66.7, 60.3)
f1 <- rep("F1",
5)
f2 <- rep("F2",
5)
f3 <- rep("F3",
4)
f4 <-
rep("F4", 5)
Weight <- c(d1, d2,
d3, d4)
Feed <- c(f1, f2, f3,
f4)
dat <-
data.frame(Weight, Feed)
第二步: 畫圖看資料分布。
動作1: 安裝ggplot2程式套件。
動作2: 呼叫ggplot2程式套件備用。
library(ggplot2)
動作3: 畫圖。
ggplot(dat, aes(x =
Feed, y = Weight)) +
geom_boxplot(color
= "red")+
geom_jitter(position = position_jitter(0.05))
# 同時畫x-y散布(黑色點)圖及盒圖(紅色box plot)。
# ggplot2程式套件geom_jitter函數讓重疊(數值相同)的資料點錯開,避免誤判。
第三步: 檢查多組資料是否有相同變異數H0: σ21
= σ22 = σ23 = σ24。 HA: 餵食不同飼料的肉雞體重變異數不完全相同。
動作1: 安裝car程式套件。
動作2: 呼叫car程式套件備用。
library(car)
動作3: 閱讀car程式套件中leveneTest函數的使用說明。
help(leveneTest)
動作4: 使用car程式套件中leveneTest函數代入dat中資料。
leveneTest(Weight ~ Feed,
data = dat)
動作5: 判讀結果。
Levene's Test for Homogeneity of Variance
(center = median)
Df F value Pr(>F)
group 3 0.4508 0.7205
15
# p-value > 0.05,H0: σ21
= σ22 = σ23 = σ24成立,資料變異數相同。
# p-value < 0.05,H0: σ21
= σ22 = σ23 = σ24不成立,資料變異數不同。
來勁了嗎? 想知道更多?? 補充資料(連結):
1. Variance (https://en.wikipedia.org/wiki/Variance)
2. Levene's test (https://en.wikipedia.org/wiki/Levene%27s_test)
3. Statistical hypothesis testing (https://en.wikipedia.org/wiki/Statistical_hypothesis_testing)
4. Test statistic (https://en.wikipedia.org/wiki/Test_statistic)
5. 關於R基礎,R繪圖及統計快速入門:
a. R Tutorial: https://www.tutorialspoint.com/r/index.htm
b. Cookbook for R: http://www.cookbook-r.com/
c. Quick-R: https://www.statmethods.net/
d. Statistical tools
for high-throughput data analysis (STHDA): http://www.sthda.com/english/
e. The Handbook of Biological Statistics: http://www.biostathandbook.com/
f. An R Companion for the Handbook of
Biological Statistics: http://rcompanion.org/rcompanion/index.html
6. Zar, JH. 2010. Biostatistical Analysis, Fifth Edition,
Pearson.
留言
張貼留言