我正在寻找一种方法来模拟一个简单的t测试的力量在不同的样本大小。我的想法是生成400个随机正态分布样本,每个样本的均值为5,方差为1,并对每一个样本进行t检验,假设真实均值为4,即t检验将采用以下形式:
T=(平均(X)-4)*sqrt(N)/sd(X)#对于每个样本x,包括n个观测值。
为了比较,我想,前100个样本包括10个,接下来100个是100个,接下来100个是1000个,最后100个是500个,我认为这是上限。必须对每一个样本进行t检验.
最后,我想看看每个样本组(我们称之为n10、n100、n1000、n5000,取决于它们包含了多少个观察)中的百分比--我的(假)假设被拒绝了。
你能帮我写相应的R码吗?我知道这些小命令,但很难把它们整合在一起。这是一个很好的练习,希望我能够修改它,并将它用于不同的目的。
提前谢谢你。
发布于 2014-01-09 00:26:19
以下是400 t.tests of 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 发布于 2014-01-09 00:35:38
我还在学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.00https://stackoverflow.com/questions/21008884
复制相似问题