統計常聽到p值<.05,所有分析都以達到這個所謂的「顯著水準」為唯一目標,似乎<.05就是好的,>.05就是不好的。其實這個.05的顯著水準並不是放諸四海皆準的黃金準則,而是人為設定的標準。
所謂p值<.05的白話就是從樣本計算出來的平均數(或其他參數)在常態分配的機率probability(也就是p值)低到5%以下。機率那麼低的情況非常少見,所以我們有95%的信心說樣本平均數與母體平均數有明顯的差異(就是達到顯著水準)。這個機率有沒有可能比5%更低或更高呢?當然有,我們也可以自行設定p值<.01這種超級顯著或p值<.10的條件,只不過這樣的條件不是太過嚴苛就是太過寬鬆,所以p值<.05成為大多數的共識。檢定力分析就是建立在這樣的假設檢定概念之下。
兩種錯誤:\(\alpha\)與\(\beta\)
統計檢定一定會聽過虛無假設H0與對立假設H1。當p值<.05達到統計顯著的時候,我們有足夠的信心宣稱虛無假設是不對的(拒絕虛無假設),接受對立假設是正確的(接受對立假設),這個.05的p值就是\(\alpha\)。當虛無假設是真的時候,但我們卻拒絕承認,這就是犯了型一錯誤(type I error),它的機率就是\(\alpha\)。反之,當虛無假設是假的時候,我們卻沒有拒絕還誤以為它是真的,就是犯了型二錯誤(type II error),它的機率就是\(\beta\)。所以正確的情況出現在虛無假設是假的,而我們也真的拒絕它的時候,也就是1-\(\beta\)。這就是所謂的檢定力。
用流行病學的概念可能更好理解,其實\(\alpha\)就是偽陽性,\(\beta\)就是偽陰性,檢定力1-\(\beta\)就是一個人明明沒有確診,篩檢也證實他/她真的沒確診。從法律的概念來理解,虛無假設就等同於無罪推定的概念,檢察官得收集足夠證據才能推翻被告無罪,證實被告有罪。當被告無罪的時候,法官卻判決有罪,就是犯了型一錯誤造成冤獄;當被告有罪的時候,法官卻判無罪,就是犯了型二錯誤造成錯放罪犯。正確判決出現在被告有罪,法官也判決有罪的時候。在價值判斷上,一般都認為沒確診卻被抓去隔離、無罪卻被抓去坐牢的型一錯誤比較嚴重,所以在假設檢定上都以討論型一錯誤為主。
我們以下表來說明型一、型二錯誤之間的關係。
H0為真 例如沒病、無罪 |
H1為真 例如有病、有罪 |
|
---|---|---|
拒絕H0 | 型一錯誤\(\alpha\) 沒病卻驗出陽性(偽陽性) 無罪卻被判坐牢(冤獄) |
正確判斷、檢定力1-\(\beta\) |
接受H0 | 正確判斷 | 型二錯誤\(\beta\) 有病卻驗出陰性(偽陰性) 有罪卻被當庭釋放(錯放) |
什麼是檢定力1-\(\beta\)?
回過頭來談談檢定力1-\(\beta\)。正確判斷明明有兩種情況,為什麼只談檢定力1-\(\beta\)?因為沒生病、沒犯罪本來就是正常不過的事,根本不需要特別證明,所以我們不會將舉證責任(burden of proof)放在被告,而是要求質疑的人拿出證據來證明對方有罪。因此正確判斷就只剩一種情況,而統計檢定的目的就是要收集足夠的數據來推翻H0,證明H1是真的。
\(\beta\)是犯型二錯誤的機率,檢定力1-\(\beta\)是正確判斷的機率,數字背後代表的意義是,在樣本真的有差異的情況下有1-\(\beta\)的機率會統計顯著,\(\beta\)的機率不會顯著。所以檢定力簡單來說是評估一個統計方法有多大power的指標。一個好的統計檢定就是要設法讓\(\alpha\)越小、1-\(\beta\)越大。
前面提到\(\alpha\)是人為指定的,可以是.05也可以是.01。同樣的道理,\(\beta\)也是人為指定的,端看我們可以容忍多大的錯誤率。一般而言,大家都遵循Jacob Cohen在1988年的經典著作Statistical Power Analysis for the Behavioral Sciences中的建議,將\(\alpha\)設為.05,\(\beta\)設為.20。 影響檢定力1-\(\beta\)的因素很多,根據Cohen包含顯著水準、樣本大小、效果量等互相影響的因素,可以用下圖來簡單說明:
顯著水準
從圖中可以看到,在所有條件都不變的情況下,當顯著水準的條件越嚴格,圖中白色區域就越往右邊移動,\(\beta\)的面積就越大,檢定力1-\(\beta\)的面積就越小,兩者呈現反比的關係。它的概念其實很直觀,當設定的顯著條件越嚴格,本來就需要更大的檢定力才能通過檢驗。
樣本大小
樣本數是決定統計會不會顯著的充分條件,但不是必要條件。樣本數越大當然越有機會接近母體,犯型一、型二錯誤的機率也就越小,檢定力1-\(\beta\)自然也就提高了。所以檢定力分析也經常用來估算樣本數。
效果量
效果量(effect size)根據Cohen的說法指的是樣本與母體之間「非零」的差距(specific nonzero value)。翻成白話文就是樣本與母體的顯著差異到底是差多少?效果量0的時候樣本與母體沒差異,無法拒絕虛無假設,統計就不顯著。統計顯著發生在樣本與母體差很多,也就是效果量越大的時候。我們從上圖可以更明白Cohen在說什麼。當H0平均數等於63的時候,H1平均數70的效果量有70-63=7,遠大於H1平均數66的效果量66-63=3,兩者差異直接反應在綠色區域的檢定力面積。效果量越大檢定力也越大,也更容易達到統計顯著。
從上面敘述可知,檢定力、顯著水準、樣本大小、效果量4個因素是相互影響,只要確定其中3個就能計算出第4個。像是G*power就是專門換算這4種項目的軟體。R的pwr則是基於Jacob Cohen的概念發展出來用於分析檢定力的套件,effectsize則可以計算效果量,以下就以pwr、effectsize來介紹如何在R的環境進行檢定力分析與效果量的計算。
效果量該怎麼算?
效果量以標準差為單位,數字代表兩個分布之間相差多少個標準差。一般而言,根據變數類型及統計方法的不同有下列幾種計算方法:
\(\text{Cohen's } w=\sqrt{\displaystyle\sum_{i=1}^m \frac{(p_{1i}-p_{0i})^2}{p_{0i}}}\)
Cohen's w用於卡方分析。其中m是儲存格的數目,p0i是H0也就是每一個儲存格的期望值,p1i則是H1每一個儲存格的觀察值。
\(\text{Cohen's }d=\frac{\overline{x_{1}}-\overline{x_{2}}}{s}\)
Cohen's d用於t檢定平均數分析。其中s是兩個變數的合併標準差(pooled standard deviation)。
\(\text{Cohen's }f=\sqrt{\frac{R^2}{1-R^2}}=\sqrt{\frac{\eta^2}{1-\eta^2}}\)
Cohen's f用於變異數分析。其中\(R^2\)其實就是回歸分析中的判定係數,\(\eta^2=\frac{組間平方和SS_{B}}{總平方和SS_{T}}\)。
\(\text{Cohen's }f^2=\frac{R^2}{1-R^2}=\frac{\eta^2}{1-\eta^2}\)
Cohen's f2用於線性回歸。其中\(R^2\)其實就是回歸分析中的判定係數。
上述計算全都可透過effectsize套件來完成。至於什麼樣的效果量算大?什麼樣的效果量算小?pwr套件的cohen.ES()以Cohen在1988年的設定標準,提供效果量低中高的具體數字。這項功能除了計算檢定力,對於換算樣本數也有很大的幫助。其基本指令為:
> cohen.ES(test = c("p", "t", "r", "anov", "chisq", "f2"),size = c("small", "medium", "large"))
以下列出不同統計方法所對應的效果量,效果量小意味著需要更多樣本才能提高檢定力,效果量大代表只需少量樣本就能達到統計顯著與較高的檢定力。
效果量 | 卡方分析 | 相關分析 | t檢定 | 變異數分析 | 回歸分析 |
---|---|---|---|---|---|
小 | 0.1 | 0.1 | 0.2 | 0.1 | 0.02 |
中 | 0.3 | 0.3 | 0.5 | 0.25 | 0.15 |
大 | 0.5 | 0.5 | 0.8 | 0.4 | 0.35 |
有了效果量的概念後,下面以之前的分析案例介紹如何進行檢定力分析,同時也說明在已知檢定力的前提下該如何換算樣本大小。
卡方分析的檢定力
pwr.chisq.test()用於分析卡方分析的檢定力,其指令為:
> pwr.chisq.test(w = NULL, N = NULL, df = NULL, sig.level = 0.05, power = NULL)
我們以美國第三剎車燈為例介紹pwr.chisq.test()的應用。首先先以effectsize套件的cohens_w()計算其效果量等於0.01。
> thirdlight_tab<-matrix(c(6773, 22959, 7161, 25989), ncol=2, byrow=TRUE)
> colnames(thirdlight_tab)<-c("Rear Impacts", "Others")
> rownames(thirdlight_tab)<-c("1985 (without)", "1986 (equipped)")
> library(effectsize)
> cohens_w(thirdlight_tab)
Phi | 95% CI
-------------------
0.01 | [0.01, 1.00]
- One-sided CIs: upper bound fixed at (1).
在這個第三剎車燈的卡方分析案例中共有62882個樣本,效果量w依據剛才分析結果設定為0.01,自由度df等於1。檢定力分析結果如下,可以看到檢定力為0.71。
> pwr.chisq.test(w=0.01, N=62882, df=1, sig.level=0.05)
Chi squared power calculation
w = 0.01
N = 62882
df = 1
sig.level = 0.05
power = 0.7080428
NOTE: N is the number of observations
我們將檢定力設定在0.71重新換算樣本數,可以看到在相同條件下所需的樣本數為63169。
> pwr.chisq.test(w=0.01, power=0.71, df=1, sig.level=0.05)
Chi squared power calculation
w = 0.01
N = 63168.65
df = 1
sig.level = 0.05
power = 0.71
NOTE: N is the number of observations
相關分析的檢定力
pwr.r.test()用於相關係數的檢定力分析,其指令為:
> pwr.r.test(n = NULL, r = NULL, sig.level = 0.05, power = NULL, alternative = c("two.sided", "less","greater"))
這裡以之前分析過的巧克力銷售與諾貝爾獎為例來說明。之前的分析結果巧克力銷售與諾貝爾獎的相關係數是0.6406726,樣本數共有31個國家,檢定力分析後可發現檢定力達到0.983。
> pwr.r.test(n=31, r=0.6406726, sig.level = 0.05)
approximate correlation power calculation (arctangh transformation)
n = 31
r = 0.6406726
sig.level = 0.05
power = 0.9825784
alternative = two.sided
如果以檢定力0.8來換算,相同條件下其實樣本數只需要16個。
> pwr.r.test(r=0.6406726, sig.level = 0.05, power=0.8)
approximate correlation power calculation (arctangh transformation)
n = 15.94704
r = 0.6406726
sig.level = 0.05
power = 0.8
alternative = two.sided
平均數分析的檢定力
pwr.t.test()是pwr中處理獨立樣本、成對樣本t檢定的檢定力分析指令。如果兩個樣本數不同則可改用pwr.t2n.test()。其指令為:
> pwr.t.test(n = NULL, d = NULL, sig.level = 0.05, power = NULL, type = c("two.sample", "one.sample", "paired"), alternative = c("two.sided", "less", "greater"))
> pwr.t2n.test(n1 = NULL, n2 = NULL, d = NULL, sig.level = 0.05, power = NULL, alternative = c("two.sided", "less", "greater"))
在女生比較喜歡看中醫的t檢定案例中,先計算cohen's d效果量等於5.29。
> trad_med<-read.csv("c:/Users/USER/downloads/gender_traditionalmed.csv", header=T, sep=",")
> cohens_d(trad_med$Female, trad_med$Male)
Cohen's d | 95% CI
-------------------
5.29 | [4.01, 6.56]
- Estimated using pooled SD.
依據上述效果量的計算結果,輸入樣本數n共有22個年度,獲得最終檢定力分析結果。
> pwr.t.test(n=22, d=5.29, sig.level=0.05)
Two-sample t test power calculation
n = 22
d = 1
sig.level = 0.05
power = 1
alternative = two.sided
NOTE: n is number in *each* group
在類似條件下如果要達到0.8的檢定力,只需要2年的樣本,這是因為男女樣本數多且差異甚大的緣故。
> pwr.t.test(d=0.8, power=0.8, sig.level = 0.05)
approximate correlation power calculation (arctangh transformation)
n = 2.060225
d = 5.29
sig.level = 0.05
power = 0.8
alternative = two.sided
NOTE: n is number in *each* group
變異數分析的檢定力
pwr處理變異數分析的檢定力指令是pwr.anova.test(),其指令為:
> pwr.anova.test(k = NULL, n = NULL, f = NULL, sig.level = 0.05, power = NULL)
在電視家庭收視率的單因子變異數分析案例中,新聞、戲劇、娛樂三種不同節目型態分別對應到不同收視率。我們先建立變異數分析模型,並用cohens_f()計算模型的效果量。
> rate<-read.csv("c:/Users/USER/downloads/tv_rate.csv", header=TRUE, sep=",")
> oneway<-aov(Rate~Type, data=rate)
> cohens_f(oneway)
For one-way between subjects designs, partial eta squared is equivalent to eta squared.
Returning eta squared.
# Effect Size for ANOVA
Parameter | Cohen's f | 95% CI
----------------------------------------
Type | 0.68 | [0.27, Inf]
- One-sided CIs: upper bound fixed at (Inf).
利用上述效果量0.68計算結果,設定組數k=3,樣本數n=30,分析檢定力為0.99。
> pwr.anova.test(k=3, n=30, f=0.25, sig.level=0.05)
Balanced one-way analysis of variance power calculation
k = 3
n = 30
f = 0.68
sig.level = 0.05
power = 0.9999702
NOTE: n is number in each group
在相同條件下要達成0.99的檢定力,至少要有16個樣本。
> pwr.anova.test(k=3, f=0.68, power=0.99, sig.level=0.05)
Balanced one-way analysis of variance power calculation
k = 3
n = 16.47782
f = 0.68
sig.level = 0.05
power = 0.99
NOTE: n is number in each group
線性回歸的檢定力
pwr.f2.test()是一般線性模型的檢定力指令。這裡的u指的是分子的自由度,v是分母的自由度。根據Cohen的解釋u等於模型中解釋變數的數目,v等於n-u-1。
> pwr.f2.test(u = NULL, v = NULL, f2 = NULL, sig.level = 0.05, power = NULL)
在台灣菲利浦曲線的案例中,我們以台灣近30年的失業率來建構工資率的回歸模型,模型的判定係數為0.64,我們可以據此計算其Cohen's f2效果量。
> phillips<-read.csv("c:/Users/USER/downloads/phillips_curve.csv", header=T, sep=",")
> model<-lm(wage~unemployment, data=phillips)
> cohens_f_squared(model)
For one-way between subjects designs, partial eta squared is equivalent to eta squared.
Returning eta squared.
# Effect Size for ANOVA
Parameter | Cohen's f2 | 95% CI
--------------------------------------------
unemployment | 1.77 | [0.79, Inf]
- One-sided CIs: upper bound fixed at (Inf).
回歸模型的解釋變數只有失業率,所以u=1。樣本數有30年,所以v=30-1-1=28,效果量f2=1.78,檢定力分析結果可達0.99。
> pwr.f2.test(u=1, v=28, f=1.77, sig.level=0.05)
Multiple regression power calculation
u = 1
v = 28
f2 = 1.77
sig.level = 0.05
power = 0.9999998
樣本數的分析顯示,如果回歸模型要達到0.99的檢定力,至少要有11+1+1=13年的樣本數。
> pwr.f2.test(u=1, f=0.15, power=0.8, sig.level=0.05)
Multiple regression power calculation
u = 1
v = 10.71178
f2 = 1.77
sig.level = 0.05
power = 0.99