そのため、この問題についてスレッドを投稿しましたが、保留になりました。それで、プログラミングの質問になるように言い換えました。これは以下の私のコードです。ブートストラップを使用して、サンプルの刺激された信頼水準を見つけようとしています。
# ステップ 1: 対数正規分布からデータを生成する
MC <-1000; # Number of samples to simulate
xbar = c(1:MC);
mu = 1;
sigma= 1.5;
the_mean <- exp(mu+sigma^2/2);
n= 10;
for(i in 1:MC)
{
mySample <- rlnorm(n=n meanlog=mu, sdlog=sigma);
xbar [i] <- the_mean(mySample);
}
# ステップ 2: B=1000 で 95% Bootstrap CI を計算する
B = 1000
xbar_star = c(1:B)
for(b in 1:B)
{
x_star = sample(n,n, replace=TRUE)
xbar_star[b] = mean(x_star)
}
quantile(xbar, p=c(0.025, 0.975))
このコードを実装すると、実際には 0.90 になるはずの出力が 975.025 になっていることがわかります。出力が間違っている理由がわかりません。
信頼区間を見つけようとしているのではなく、刺激された信頼レベルを見つけようとしています。実際のカバレッジ パーセンテージ (シミュレーションで取得) は、名目上の信頼水準 (95%) とどのように比較されますか? これは私のサンプルが練習問題で与えられたときの私のコードです...
library(boot)
x = c(0.22, 0.23, 0.26, 0.27, 0.28, 0.28, 0.29,
0.33, 0.34, 0.35, 0.38, 0.39, 0.39, 0.42, 0.42,
0.43, 0.45, 0.46, 0.48, 0.5, 0.5, 0.51, 0.52,
0.54, 0.56, 0.56, 0.57, 0.57, 0.6, 0.62, 0.63,
0.67, 0.69, 0.72, 0.74, 0.76, 0.79, 0.81, 0.82,
0.84, 0.89, 1.11, 1.13, 1.14, 1.14, 1.2, 1.33)
B = 10000
xbar = mean(x)
n = length(x)
xbar_star = c(1:B)
for(b in 1:B)
{
x_star = sample(x=x, size=n, replace=TRUE)
xbar_star[b] = mean(x_star)
}
# empirical percentile method
quantile(xbar_star, p=c(0.025, 0.975))
> quantile(xbar_star, p=c(0.025, 0.975))
2.5% 97.5%
0.5221277 0.6797926