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调用不起作用的原因是因为一些组全部成功(或失败)。因此,您需要在每组中至少有两个级别才能进行测试(这完全有意义......)。


为了完整性:

           #####  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 回答