2015-06-18 36 views
0
library(Hmisc) 
#10% difference 
n1 = 30 
n2 = 30 
n = 60 
p1 = seq(0.1, 0.9, 0.1) 
p2 = p1 + 0.1 
> bpower(p1, p2, n, n1, n2, alpha = 0.05) 
    Power1 Power2 Power3 Power4 Power5 Power6 Power7 Power8 Power9 
0.9997976 0.9992461 0.9933829 0.9670958 0.8995984 0.7799309 0.6141349 0.4211642 0.2252629 



#20% difference 
n1 = 30 
n2 = 30 
n = 60 
p1 = seq(0.1, 0.8, 0.1) 
p2 = p1 + 0.2 
> bpower(p1, p2, n, n1, n2, alpha = 0.05) 
    Power1 Power2 Power3 Power4 Power5 Power6 Power7  Power8 
0.9997976 0.9992461 0.9933829 0.9670958 0.8995984 0.7799309 0.6141349 0.4211642 

在這裏,我使用bpower功能Hmisc計算兩樣品二項式檢驗的功率。我的假設是:H0:p1 = p2與H1:p1!= p2。在第一種情況下,樣本比例相差0.1(即p2 - p1 = 0.1),在第二種情況下,樣本比例相差0.2(p2 - p1 = 0.2)。但是,當我計算兩個案例的權力時,這些值是完全一樣的?我的代碼中有錯誤嗎?R:如何使用bpower函數來計算2-樣品二項式檢驗功率

回答

1

該函數的簽名是

args(bpower) 
# function (p1, p2, odds.ratio, percent.reduction, n, n1, n2, alpha = 0.05) 

所以如果未命名的,第三個參數將被解釋爲比值比。所以是的,你在代碼中犯了一個錯誤。您應明確指定參數以避免此問題。

bpower(p1, p2, n=n, n1=n1, n2=n2, alpha = 0.05) 

利用這一點,我得到

# diff 0.1 
Power1 Power2 Power3 Power4 .. 
0.1893951 0.1437292 0.1268406 0.1204777 ... 

# diff 0.2 
Power1 Power2 Power3 Power4 ... 
0.4903583 0.3912451 0.3495370 0.3376908 
+0

我明白了。非常感謝你。 – Adrian