Я хотел бы создать выборку со средним значением = 0, sd = 1 и размером n = 100, распределение которого является нормальным, насколько это возможно. Использование одного только rnorm возвращает большую изменчивость.
Единственный способ, который я нашел, - усреднить несколько норм.
rowMeans(replicate(10000, sort(rnorm(100, 0, 1))))
Это дает довольно удовлетворительный результат, но я не уверен, что это самый эффективный способ сделать это.
EDIT:
Я не хочу, чтобы среднее значение и sd были строго равны 0 и 1, а скорее, чтобы распределение выглядело как нормальное распределение (при построении кривой плотности).
Кажется, что метод qnorm работает хуже, чем "средний" метод:
# qnorm method
x <- qnorm(seq(.00001, .99999, length.out = 100), mean=0, sd=1)
plot(density(x))
# average method
x <- rowMeans(replicate(10000, sort(rnorm(100, mean=0, sd=1))))
plot(density(x))
Я был бы рад, если бы детерминированное решение более эффективно возвращало результаты, близкие к среднему методу.
РЕДАКТИРОВАТЬ 2: Возможное решение
Судя по ответам, работает следующее, корректируя границы относительно n:
x <- qnorm(seq(1/n, 1-1/n, length.out = n), mean=0, sd=1)
Ниже приведено сравнение методов qnorm и среднего для разных значений n:
par(mfrow=c(6,2))
for(n in c(10, 20, 100, 500, 1000, 9876)){
x <- qnorm(seq(1/n, 1-1/n, length.out = n), mean=0, sd=1)
plot(density(x), col="blue", lwd=2)
x <- rowMeans(replicate(10000, sort(rnorm(n, mean=0, sd=1))))
plot(density(x), col="red", lwd=2)
}