我正在寻找一种方法来模拟不同样本量的简单t检验的功效。我的想法是生成400个随机正态分布样本,每个样本具有均值5和方差1,并对每个样本执行t检验,关于真实均值为4的假设,即t检验采用以下形式:
t =(mean(x)-4)* sqrt(n)/ sd(x)#每个样本x由n个观察值组成。
为了进行比较,我想,前100个样本由10个观察值组成,接下来的100个样本包含100个,接下来的100个1000个,最后是100个最后100个,我认为是上限。必须对每个样本进行t检验。
最后,我想看看每个样本组的百分比 - 让我们称之为n10,n100,n1000,n5000,这取决于他们构成的观察数量 - 我的(假)假设被拒绝。
你能帮我写一下相应的R代码吗?我知道小命令,却无法将它们放在一起。这是一个很好的练习,希望我能够稍微修改它并将它用于不同的目的。
提前谢谢。
答案 0 :(得分:1)
这是一个内衬400 t.tes的n = 10:
R>simulations <- replicate(400, t.test(rnorm(10, mean=5, sd=1), mu=4),
simplify=FALSE);
然后你可以分析它:
R>table(sapply(simulations, "[[", "p.value") < .05)
FALSE TRUE
75 325
答案 1 :(得分:1)
我还在学习R,所以小心处理:
n <- 5
N <- 100
samplesizes <- as.integer(10^(1:n))
set.seed(1)
# generate samples
samples <- replicate(N, mapply(rnorm, samplesizes, mean=4, sd=sqrt(1)))
# perform t-tests
t.tests <- lapply(samples, function(x) t.test(x, mu=5, alternative="two.sided"))
# get p-values
t.test.pvalues <- sapply(t.tests, function(x) x$p.value)
rejected <- t.test.pvalues > .05
sampleIndices <- rep(1:n, N)
res <- aggregate(rejected, list(sample=sampleIndices), FUN=function(x) sum(x)/length(x) )
names(res)[2] <- "percRejected"
print(res, row.names=F)
# sample percRejected
# 1 0.16
# 2 0.00
# 3 0.00
# 4 0.00
# 5 0.00