2

binom.testオプションで使用した場合の動作について混乱していbyます。

一部のデータフレームでは機能していないようですが、私がまとめたダミーデータでは機能します。

ただし、呼び出しは正常mean()に機能します...

私のサンプルコードは以下のとおりです。


#####  this does not work...

bug <- InsectSprays   
bug$outcome <- ifelse(bug$count > 4, 1, 2 )
bug$spray.n <- ifelse(bug$spray == "A", 1,
               ifelse(bug$spray == "B", 2,
               ifelse(bug$spray == "C", 3,
               ifelse(bug$spray == "D", 4,
               ifelse(bug$spray == "E", 5, 6)))))

binom.test(table(bug$outcome), alternative="greater")               
by(bug, bug$spray.n, FUN = function(X) binom.test(table(X$outcome),
  alternative="greater" ))
by(bug, bug$spray.n, FUN = function(X) mean(X$count)                             

#####  this works...

#####  generating example data
#####  this has three groups, each with a binomial indicator
#####  success is coded as 1, failure as a 0

set.seed(271828)
center <- gl(3,10)
outcome <- rbinom(length(center), 1, .6777)
id <- seq(1,length(center),1)
dat <- as.data.frame(cbind(center,id,outcome))

#####  have to recode success and failure to use table()  
#####  !!!!! would like to avoid having to do this...

dat$primary <- ifelse(dat$outcome == 1 , 1 , 2)
dat$cent <- as.factor(dat$center)

##### carrying out one sided binomial test for positive outcome

binom.test(table(dat$primary), alternative = "greater" )

#####  would like to carry out the same test by center...

by(dat, dat$center, FUN = function(X) binom.test(table(X$primary), 
  alternative = "greater"))
by(dat, dat$center, FUN = function(X) mean(X$outcome))
4

2 に答える 2

2

一部のbinom.test呼び出しが機能しなかった理由は、一部のグループがすべて成功(または失敗)したためです。したがって、テストを実行するには、すべてのグループに少なくとも2つのレベルが必要です(これは完全に理にかなっています...)。


完全を期すために:

           #####  this does work...

           air <- airquality
           air

           air$outcome <- ifelse(air$Wind > 10, 1, 2 )


           binom.test(table(air$outcome), alternative="greater")



           by(air, air$Month, FUN = function(X) mean(X$Wind))

           by(air, air$Month, FUN = function(X) table(X$outcome))

           by(air, air$Month, FUN = function(X) binom.test(table(X$outcome), alternative="greater"))
于 2012-12-08T02:41:11.520 に答える
1

次のことを試してみると、問題がわかります。

by(bug, bug$spray.n, FUN = function(X) table(X$outcome))

于 2012-12-08T02:29:57.157 に答える