[问题类型]
我想用R做统计模拟,看看重复试验后的信赖区间是否名符其实
[软件熟悉程度]
新手
[问题叙述]
已知期望值、标准差随机抽取n个样本后,重复1000,想检查其95%的覆蓋率是否属实,这可以使用for循环得到解,我的问题是如果我的抽取样本数变成不是固定的,如:
5,10,15,20,…,95,100个样本,这样我是可以利用"function"得到结果吗? 如果是以下是我目前的程式,但结果输出后系统出现警示
"In r95[i] <- mean(x) + qnorm(0.975) * sqrt(sigma^2/n) :
被替换的项目不是替换值长度的倍数"
我猜测是function有问题,不过不晓得应该如何解决?
再者,我如果要将结果画成图横轴为sample size,纵轴为覆蓋率,是否应该利用plot的方式进行?
谢谢
[程式范例]
rm(list = ls())
mu <- 7; sigma <- 2; n <- seq(from=5,to=100,by=5); no.rep <- 1000
l95 <- rep(NA,no.rep)
r95 <- rep(NA,no.rep)
l99 <- rep(NA,no.rep)
r99 <- rep(NA,no.rep)
final=function(n){
for(i in 1:no.rep){ #重复1000次
print(i)
set.seed(i)
x <- rnorm(n,mu,sigma)
l95[i] <- mean(x)-qnorm(0.975)*sqrt(sigma^2/n)
r95[i] <- mean(x)+qnorm(0.975)*sqrt(sigma^2/n)
l99[i] <- mean(x)-qnorm(0.995)*sqrt(sigma^2/n)
r99[i] <- mean(x)+qnorm(0.995)*sqrt(sigma^2/n)
}
mean((l95<=mu) & (mu<=r95)) # 检查覆蓋率(coverage)
mean((l99<=mu) & (mu<=r99))
}
final(seq(from=5,to=100,by=5))