Туплю в ЦПТ

elena144

Подскажи, доброфорум, где я налажал :)
ЦПТ мне говорит, что среднее значение n выборок из случайного распределения имеет вид нормального распределения с матожиданием равным матожиданию исходной случайной величины и дисперсией равной дисперсии этой величины, делённой на n, т.е. — N(mu, sigma^2/n).
Я беру экспоненциальное распределение, для которого, соответственно mu = sigma = 1/lambda, беру R и пытаюсь это просимулировать:

lambda <- 0.2
n <- 1000
mu <- 1/lambda
means <- sapply(1:n, function(x) mean(rexp(40, lambda # Берём средние тысячи выборок по 40 элементов
# Рисуем табличку:
data.frame(
Mean=c(Sample.Means=mean(means Normal.Distribution=mu
Std.Dev=c(Sample.Means=sd(means Normal.Distribution=mu/sqrt(n
Variance=c(Sample.Means=var(means Normal.Distribution=mu^2/n)
)

Получаю, что что-то не сходится:











 MeanStd.DevVariance
Sample.Means4.994340.79072090.6252395
Normal.Distribution5.000000.15811390.0250000


Зато почему-то прекрасно сходится, если принимать стандартное отклонение за mu^2/sqrt(n) и дисперсию, соответственно, за mu^4/n:











 MeanStd.DevVariance
Sample.Means4.994340.79072090.6252395
Normal.Distribution5.000000.79056940.6250000


У меня есть ощущение, что я что-то не так понял в ЦТП, но не могу понять, что именно.

elena144

Я реально в тупике. Попробовал зайти с другого конца. Википедия прямым текстом утверждает, что
[math]$$\sqrt{n} \frac{ \bar{X} - \mu}{\sigma} \to N(0,1)$$[/math]
Я беру свою ебучую выборку:
n <- 1000
sigma <- 1/lambda
means <- sapply(1:n, function(x) mean(rexp(40, lambda
means <- means - mean(means)
means <- means * sqrt(n) / sigma

и получаю аккурат: mean = -2.376468e-15, sd = 5.0009578, var = 25.00958
Т.е. [math]$$N(0, {1\over\lambda^2})$$[/math]
Если нарисовать график, то он прекрасно в это нормальное распределение попадает. Только почему-то вместо дисперсии 1 я получаю дисперсию [math]$$\sigma^2$$[/math]

a101

Ты не тот n смотришь.
У тебя с одной стороны n=1000 -> количество выборок. А дисперсию надо делить на количетсво элементов в выборке (40).

> m <- 40
> n <- 1000
> lambda = 0.2
> sigma = 1 / lambda
> means <- sapply(1:n, function(x) mean(rexp(m, lambda
> means <- means - mean(means)
> means <- means * sqrt(m) / sigma
> sd(means)
[1] 1.009198

elena144

О, спасибо!
Меня почему-то переклинило на мысли, что увеличение числа выборок должно уменьшать дисперсию и n в формуле — это как раз число выборок.

elena144

А вот ещё такой вопрос. Вроде бы всё у меня теперь сходится, графики выглядят как надо, коэффициенты ок, но при этом любой тест (shapiro.test, ad.test, ks.test, cvm.test) выдаёт мне стремящуюся к нулю вероятность того, что моё распределение на самом деле нормально. Да и qqnorm(means)/qqline(means) выдают картинку, которая говорит скорее об обратном:

Этому есть какое-то логичное объяснение?

a101

Смотри. Пусть N - количество выборок, а n - количество элементов в выборке. В примере выше было N = 1000, n = 40. Тогда ЦПТ говорит, что:
при n -> inf . Но при этом, при каждом фиксированном n оно не является нормальным.
Соответственно:
1. Если у тебя зафиксировано n, а ты увеличиваешь N, то хорошие статтесты должны ловить при достаточно большом N, что у тебя по прежнему не нормальное распределение.
2. Если у тебя зафиксировано N, и ты увеличиваешь n, то при достаточно больших n статтесты не смогут отличить твоё распределение от нормального по N точкам.
Оставить комментарий
Имя или ник:
Комментарий: