lecture
website icon
檢定力分析
卡方分析 相關分析 平均數檢定 變異數分析 回歸分析 共變數分析 廣義相加模型 時間序列分析 無母數統計 檢定力分析
×
website icon 資料管理 統計分析 相關資源 巨人肩膀 語法索引 關於作者

簡介

本部分介紹pwr套件中的檢定力分析。使用到的指令包含:

Facebook Icon Twitter Icon LinkedIn Icon LINE Icon

統計常聽到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包含顯著水準、樣本大小、效果量等互相影響的因素,可以用下圖來簡單說明:

虛無假設μ=63 對立假設μ=66 66 62 58 68 70 72 74 64 56 60 54 76 型二錯誤β 檢定力1-β α/2 虛無假設μ=63 對立假設μ=70 66 62 58 68 70 72 74 64 56 60 54 76 型二錯誤β 檢定力1-β α/2 78

顯著水準

從圖中可以看到,在所有條件都不變的情況下,當顯著水準的條件越嚴格,圖中白色區域就越往右邊移動,\(\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