我正在为学校做作业,被卡住了。我需要创建一个函数,以创建用户输入为向量的两种治疗(1和2)的差异的随机分布。它还需要找到分布的p值,因此需要进行卡方检验。
我写了一段代码,看起来一切正常,但我无法弄清楚如何使simdiff重复多次。这似乎很简单,但我无法弄清楚。我尝试使用“ for(我在1:20000中)”,但我什至不知道这样做是什么,而且似乎在这里不起作用。
C <- function(dat, trt) {
obsdiff <- mean(dat[trt == 2]) - mean(dat[trt == 1])
trtsh <- sample(trt, size = length(trt))
simdiff <- mean(dat[trtsh == 2]) - mean(dat[trtsh == 1])
hist(simdiff)
chisq.test(simdiff)}
}
dat<- c(1,4,2,5,2,4,8,6,9,7)
trt <- c(1,1,1,1,1,2,2,2,2,2)
除了我不知道如何多次重复simdiff之外,一切似乎都可以与我的代码一起使用。运行这样的代码时,我收到的错误是“ chisq.test(simdiff)中的错误:x的项必须是非负且有限的。”样本数据用于测试,该数据的p值应约为0.11。
我只是尝试将代码更改为
simdiff <- mean(dat[trtsh == 2]) - mean(dat[trtsh == 1])
simdiff2 <- replicate(simdiff)
hist(simdiff2)
chisq.test(simdiff2)
但错误消息显示“ hist.default(simdiff2):'x'必须为数字”似乎越来越近了,但仍然无法正常工作