Code
# パラメータ設定
set.seed(123) # 再現性のためにシードを設定
true_mean <- 50 # 真の平均
sample_size <- 30 # サンプルサイズ
num_iterations <- 100 # 繰り返し回数
confidence_level <- 0.95 # 信頼水準
# 信頼区間の保存リスト
confidence_intervals <- data.frame(
iteration = integer(num_iterations),
lower = numeric(num_iterations),
upper = numeric(num_iterations),
contains_true_mean = logical(num_iterations)
)
coverage_count <- 0
# データ生成と信頼区間計算
for (i in 1:num_iterations) {
# データ生成
sample_data <- rnorm(sample_size, mean=true_mean, sd=10)
# 標本平均と標準誤差の計算
sample_mean <- mean(sample_data)
sample_se <- sd(sample_data) / sqrt(sample_size)
# 信頼区間の計算
t_value <- qt(1 - (1 - confidence_level) / 2, df=sample_size-1)
error_margin <- t_value * sample_se
lower_bound <- sample_mean - error_margin
upper_bound <- sample_mean + error_margin
# 信頼区間を保存
confidence_intervals[i, ] <- c(i, lower_bound, upper_bound, true_mean >= lower_bound && true_mean <= upper_bound)
# 真の平均が信頼区間に含まれているか確認
if (confidence_intervals$contains_true_mean[i]) {
coverage_count <- coverage_count + 1
}
}
# 結果の表示
cat("Proportion of confidence intervals containing the true mean:", coverage_count / num_iterations, "\n")Proportion of confidence intervals containing the true mean: 0.96
Code
# プロットの設定
plot(1:num_iterations, rep(true_mean, num_iterations), type = "n", ylim = range(c(confidence_intervals$lower, confidence_intervals$upper)),
xlab = "Iteration", ylab = "Confidence Interval", main = "Visualization of 95% Confidence Intervals")
# 真の平均のラインを描画
abline(h = true_mean, col = "blue", lty = 2)
# 信頼区間の描画
for (i in 1:num_iterations) {
if (confidence_intervals$contains_true_mean[i]) {
segments(i, confidence_intervals$lower[i], i, confidence_intervals$upper[i], col = "black")
} else {
segments(i, confidence_intervals$lower[i], i, confidence_intervals$upper[i], col = "red")
}
}