Werden wir Helden für einen Tag

Home | About | Archive

Sample size calculation using R

Posted on Dec 14, 2007 by Chung-hong Chan

pwr.png

就像編程語言,有 General Purpose Language (例如 C ),也有 Domain specific language (例如 SQL 、 R )。寫一些有關電子電腦、社會時事、大眾娛樂、工作喜樂、財金投資、生仔湊仔的 Blog ,像寫 C ,理應最多人有共鳴。編程語言內要有 Domain specific language , Blog 生態也要有人寫專為某界別人仕而寫的文字。這一篇,是屬於 Domain specific 的。
學黃生,我是否該寫一個討伐馬料水大學的 Category ?
昨晚上了最後一課的生物統計學,是一堂電腦實習堂。教用一個軟件叫做 PASS 。電腦堂內的電腦,只有少數幾部電腦有這個軟件,原因是這個軟件貴,故此不是每台電腦都有。因此,只有幾個人有 PASS 玩,其他人只有看。我是看的一位,在旁相當納悶。
你負擔不起軟件費用是 OK 的。以前中學時畫圖龜,只有幾台 Apple ][ ,後來轉為 386/486 機,要五個人輪一台電腦。老師會建議五個人每人鄰流做一題。通常到我時,已經下課了。
PASS 做的是計算 Sample size ,以前就算用手計,都不會花太多時間,大不了去找書查表,連計算都不需要。花幾千元買這個軟件做這樣簡單的事,相當不化算。計算 Sample size 這門學問最知名的一個作者,叫做 Cohen ,他的方法也不算太難,就算沒有強勁統計學基礎,都會明白。教學方面,應該好好的講一下 Cohen 的方法,而不是用這一種幾千蚊買個 Proprietary software 破財擋災的思維,由其是你財力本身不太夠。
就算真的是要用軟件,是不是非用 Proprietary software 不可呢?到 Google search "Sampling size calculation" ,就有一個叫 SISA 的在線計算器。還有公開源碼免費的 R ,它有一個 Package ((外掛軟件包)) 叫做 pwr 是純做 Power/Sample size calculation 的。無論 WIndows 、 Mac OS X 或者其他 Unix 都可以使用。不像 PASS 是 Windows only.

安裝好 R 之後,輸入指令安裝 pwr
> install.packages("pwr", dependencies=TRUE)
> library(pwr)

例如要比較 30% 和 50% 兩個 Proportion ,要是 alpha = 0.05, beta = 0.2 ,所需 Sample size 。
> pwr.2p.test(h=ES.h(0.3,0.5), sig.level=0.05, power=0.8)

反之,如果每組有 40 人,計算 Statistical power
> pwr.2p.test(h=ES.h(0.3,0.5), sig.level=0.05, n=40)

比較兩個平均數 (例如 1.0 和 5.2 ,它們的 SD 都是一樣,為 3 )時, alpha = 0.05, beta = 0.2, 想證明 5.2 比 1.0 大。
> pwr.t.test(d=(5.2-1.0)/3, power=0.8, sig.level=0.05, type="two.sample", alternative="one.sided")

假定我們完全不知道某藥藥效的任何參數,估計藥效為微少(small effect size)。想用 ANOVA 比較三種藥的分別,所需 Sample Size
> pwr.anova.test(k=3, f=0.1, power=0.8, sig.level=0.05)

不能盡錄。窮則變,變則通。其實都不算太難用 ((我都是透過看 Help 學會使用方法,輸入 ?pwr )) ,就算沒有學過 Cohen 的方法都可以進行計算。總好過我昨晚因為學校無錢買軟件而在課堂乾坐了兩小時。


Powered by Jekyll and profdr theme