No.16898 Re: 二項分布による検出力 【青木繁伸】 2012/05/10(Thu) 21:51
プログラム中の
bb<-dbinom(n,pt,rate)
は
bb<-dbinom(i,pt,rate)
でしょう。
<- の前後や , の後や { の前などに適切に空白を置いて,インデントもちゃんとやれば,プログラムが見やすくなり,バグにも気づきやすくなるのではないかと思います。a <- dbinom(0, 200, 0.01)また,dbinom(0, pt, rate)を特別扱いする必要はないのだから,
b <- dbinom(1, 200, 0.01)
c <- dbinom(2, 200, 0.01)
d <- dbinom(3, 200, 0.01)
PowerA <- 1 - (a + b + c + d)
PowerA
PowerB <- function(n, pt, rate) {
aa <- dbinom(0, pt, rate)
cc <- 0
for (i in 1:n) {
bb <- dbinom(i, pt, rate)
cc <- cc + bb
}
return(1 - (cc+aa))
}
PowerB(3, 200, 0.01) #これが解。ただし,n<0PowerB <- function(n, pt, rate) {とすればよいし,
cc <- 1
for (i in 0:n) {
cc <- cc - dbinom(i, pt, rate)
}
return(cc)
}> 1-sum(dbinom(0:3, 200, 0.01))でよいし,何よりかんより,pbinom があるのだから,
[1] 0.141966
> sum(dbinom(4:200, 200, 0.01))
[1] 0.141966> pbinom(3, 200, 0.01, lower.tail=FALSE)で十分でしょう。
[1] 0.141966
> 1-pbinom(3, 200, 0.01)
[1] 0.141966
dbinom(0:200, 200, 0.01) をやって,どこからどこまでを加えたらどうなるかを見てみると悩まなくて済むでしょう。
No.16899 Re: 二項分布による検出力 【赤岳】 2012/05/10(Thu) 22:47
青木先生,
早速のご教示ありがとうございます。
iは0から指定できるのも,pbinom関数があるのも,sumを用いるのも,初めて知りました。
これだけのコマンドでしたが,今日半日かかっていました。
ほんとにありがとうございました。
● 「統計学関連なんでもあり」の過去ログ--- 045 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る