169 похожих чатов

Все верно, все требования к нормальности относятся только к ошибкам.

У меня какое-то время назад сложилось ощущение, что меня всю жизнь немного обманывали с этой нормальностью. Мне кажется, я понял в чем вопрос.

1) Во-первых, действительно, как было сказано выше, идеально нормальных данных в в жизни не бывает, если под реальной жизнью не понимать результат работы функции rnorm(). Поэтому на большой выборке shapiro-wilk всегда будет значимым. А вот на маленьких выборках он (типа 10-20 как в моей области) он всегда незначимый из-за недостаточной мощности (даже если данные взяты из сильно скошенного распределения). Выходит, это тест больше говорит о размере выборки, нежели о нормальности
2) Во-вторых, что именно нормально? Строго говоря, сами данные не могут быть распределены нормально, они вообще дискретны и это просто набор точек. Так ты мы тестируем на то, что эти данные взяты из нормального распределения. Но, подождите-ка, у нас же обычно гипотеза именно о том, что данные взяты из _разных_ распределений с разными средними. То есть если мы имеем хорошие различия, то данные как раз будут двугорбыми. Вот, например, в линейной регрессии говорится о том, что именно ошибки должны быть нормальными (и независимыми), а все остальное не важно, что обосновывается логикой использования наименьших квадратов и выглядит вполне рационально. Если же рассмотреть т-тест с ановой как разновидности линейной регрессии, то становится понятно, что assumption о нормальности может относиться только к ошибкам. Очевидно не к независимым переменным (они вообще дихотомические) и не к зависимым (по идее, если гипотеза верна, то зависимая переменная и не будет нормальной).

3) И вообще это правило нормальности относится даже не к самим ошибкам, а к распределению выборочных средних ошибок. Которые будут стремиться к нормальным с увеличением выборки (центральная предельная теорема). От той же теоремы и эта штука про то, что если у нас много независимых факторов, то это "нормализует" переменную. То есть да, как было сказано выше, если набрать бесконечное количество выборок из даже не очень нормального распределения, то распределение их средних будет уже сильно больше напоминать нормальное. На этой магии (ок, для меня это магия) основаны всякие эти статистические тесты. Кстати, с другими статистиками (медианой, например) это не работает, насколько я знаю (хотя сам не проверял). А это значит, что даже и ошибки сами не должны быть распределены нормально, а только "ну более-менее несильно скошено". Чем больше выборка, тем меньше это страшно, отсюда всякие казавшиеся мне странными правила типа "если n>30-40-60, то можно использовать параметрические методы".

4) QQplot мне казался хорошей альтернативой всему этому безобразию с шапиро-уилком, пока я не попробовал погонять его на маленьких выборках данных. Оказывается, я всю жизнь видел отклонения от нормальности там, где их не было! Поэтому, мне кажется, к qqplot() хорошо бы добавлять еще потом строчку qqplot(rnorm(lengthofyoudataset))

5) Ок, хорошо, а если данные вот совсем ненормальные? Вот прям охренеть как перекошенные, явно не из нормального распределения? Хотя вот, если время реакции, то оно никогда не нормальное, оно ограничено снизу. Тем не менее, на ВР часто без трансформации делают t-test и анову, разве что аутлаеров удаляя. "Так уж точно нельзя!". Но вот почему? Грубо говоря, p-value<0.05 будут попадаться реже чем в 5% случаев, если эффекта нет, или же чаще? Ну, это-то как раз несложно проверить:
> d <- data.frame(s = rep(40,10000))
> d$p <- sapply(d$s, function(x) t.test(rlnorm(x), rlnorm(x))$p.value)
> sum(d$p<0.05)/length(d$p)
0.0433

2 ответов

18 просмотров

Сохранил это в избранное. Спасибо за пояснения, кажется, я вообще неверно понимаю основы. Нужно что-то фундаментальное почитать бы ещё раз или много раз.

+

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта