R:绘制 2000 个不同随机卡方模拟的平均值和中值

R: plotting mean and median of 2000 different random chi squared simulations

我正在尝试 运行 随机卡方分布的 2000 次模拟,其中 n = 300 和 df = 3。我想从每次模拟中获取样本均值和中位数,然后最终绘制均值和中位数作为直方图。

我试过使用重复循环功能,直方图在满足"if"条件后出现。

n = 300
df = 3
randomchisq = rchisq(n = n,df = df)
i = 1
reps = 2000
xvals = "Chi squared sims"
twokchisqmean <- i:reps
twokchisqmed <- i:reps

repeat {
  twokchisqmean[i] = mean(randomchisq);
  twokchisqmed[i] = median(randomchisq);
  i = i+1;

  if (i==reps) {
    par(mfrow=c(1,2))
    hist(twokchisqmean, 
         main="Histogram of mean for 2000 chi squared sims",
         xlab = xvals)

    hist(twokchisqmed,
         main = "Histogram of median for 2000 chi squared sims",
         xlab = xvals)

  }
}

当我实现这段代码时,这些图似乎没有出现在 R Studio 中。控制台中也没有出现警告。

一个repeat语句将循环直到它到达一个中断点,然后它才会从循环中return。由于您的 repeat 语句中没有 break,因此您的代码将无限地 运行。确保在您希望它停止时进行中断:

n = 300
df = 3
randomchisq = rchisq(n = n,df = df)
i = 1
reps = 2000
xvals = "Chi squared sims"
twokchisqmean <- i:reps
twokchisqmed <- i:reps

repeat {
  twokchisqmean[i] = mean(randomchisq);
  twokchisqmed[i] = median(randomchisq);
  i = i+1;

  if (i==reps) {
    par(mfrow=c(1,2))
    hist(twokchisqmean, 
         main="Histogram of mean for 2000 chi squared sims",
         xlab = xvals)

    hist(twokchisqmed,
         main = "Histogram of median for 2000 chi squared sims",
         xlab = xvals)
    break #Break once the plot is added
  }
}