Анализ результатов A / B-теста, которые обычно не распределяются, с использованием независимого t-теста

13

У меня есть набор результатов теста A / B (одна контрольная группа, одна группа объектов), которые не соответствуют нормальному распределению. На самом деле распределение больше напоминает распределение Ландау.

Я считаю, что независимый критерий Стьюдента требует, чтобы образцы были, по крайней мере, приблизительно нормально распределены, что отговаривает меня использовать критерий Стьюдента как действительный метод проверки значимости.

Но мой вопрос: в какой момент можно сказать, что t-критерий не является хорошим методом проверки значимости?

Или, другими словами, как можно определить, насколько надежны p-значения t-критерия, учитывая только набор данных?

teebszet
источник

Ответы:

8

Распределение ваших данных не должно быть нормальным, это выборочное распределение , которое должно быть почти нормальным. Если размер вашей выборки достаточно велик, то из-за Центральной предельной теоремы распределение выборки средних значений из распределения Ландау должно быть почти нормальным .

Это означает, что вы должны быть в состоянии безопасно использовать t-тест со своими данными.

пример

Давайте рассмотрим этот пример: предположим, у нас есть популяция с логнормальным распределением с mu = 0 и sd = 0.5 (это выглядит немного похоже на Ландау)

логнормальная плотность

Таким образом, мы выбираем 30 наблюдений 5000 раз из этого распределения каждый раз, вычисляя среднее значение выборки

И это то, что мы получаем

выборочное распределение

Выглядит вполне нормально, не так ли? Если мы увеличим размер выборки, это станет еще более очевидным

выборочное распределение

Код R

x = seq(0, 4, 0.05)
y = dlnorm(x, mean=0, sd=0.5)
plot(x, y, type='l', bty='n')


n = 30
m = 1000

set.seed(0)
samp = rep(NA, m)

for (i in 1:m) {
  samp[i] = mean(rlnorm(n, mean=0, sd=0.5))
}

hist(samp, col='orange', probability=T, breaks=25, main='sample size = 30')
x = seq(0.5, 1.5, 0.01)
lines(x, dnorm(x, mean=mean(samp), sd=sd(samp)))


n = 300
samp = rep(NA, m)

for (i in 1:m) {
  samp[i] = mean(rlnorm(n, mean=0, sd=0.5))
}

hist(samp, col='orange', probability=T, breaks=25, main='sample size = 300')
x = seq(1, 1.25, 0.005)
lines(x, dnorm(x, mean=mean(samp), sd=sd(samp)))
Алексей Григорьев
источник
Привет, Алексей! Кажется, вы хорошо владеете R, поэтому мне интересно, есть ли у вас какие-либо советы по проблеме, с которой я в данный момент застрял: stackoverflow.com/questions/25101444/… . Кроме того, я был бы рад связаться с вами (см. Aleksandrblekh.com для моих профилей в профессиональных социальных сетях), так как кажется, что у нас есть общие интересы (включая родной язык :-).
Александр Блех
Это отличное объяснение, и на самом деле это метод, который я в итоге использовал. Мне нравится думать об этом методе как о разделении всего набора выборок на более мелкие подвыборки и использовании средних значений (в среднем с CLT) каждой подвыборки в качестве распределения набора данных. Спасибо за ответ!
Teebszet
1

В основном, независимый t-критерий или t-критерий с двумя образцами используется для проверки, значительно ли средние значения для двух образцов. Или, другими словами, если между двумя образцами есть существенная разница.

Теперь средствами этих двух выборок являются две статистики, которые согласно CLT имеют нормальное распределение, если предоставлено достаточно выборок. Обратите внимание, что CLT работает независимо от распределения, из которого строится средняя статистика.

Обычно можно использовать z-критерий, но если отклонения оцениваются по выборке (поскольку она неизвестна), вводится некоторая дополнительная неопределенность, которая включается в t-распределение. Вот почему 2-образный t-критерий применяется здесь.

rapaio
источник