[問題類型]
我想用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))