如何在R中实现引导程序

时间:2014-03-04 02:58:11

标签: r statistics-bootstrap

所以我发布了一个关于这个问题的帖子,但是它被搁置了。所以我改编了,所以这可能是一个编程问题。这是我的代码。我试图使用bootstrap找到样本的刺激置信度。

#第一步:从对数正态分布生成数据

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);
 }

#第二步:计算95%Bootstrap CI,B = 1000

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))

如果实现此代码,则可以看到输出为975.025,实际应为0. 90。 我不明白为什么输出错了。


我们并没有试图找到信心区间,而是在刺激的信心水平。实际覆盖百分比(通过模拟获得)与名义置信水平(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 

0 个答案:

没有答案