![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
![]()
Сообщение
#1
|
|
Группа: Пользователи Сообщений: 231 Регистрация: 27.04.2016 Пользователь №: 28223 ![]() |
Уважаемые коллеги.
Что-то я зашел в тупик, прошу помощи. Задача классическая. Требуется провести одновыборочный z-тест для пропорций. Казалось бы все понятно. В любом учебнике, и даже информации на cran.r-project.org находим: Z=(pвыб-pтеор)/SQRT(pтеор*(1-pтеор)/N) где pвыб - доля положительных результатов в выбоке, pтеор - теоретически ожидаемая доля положительных результатов N - объем выборки. И все бы хорошо. Но вот вопрос - а каково буде значение этого критерия при pтеор=0 ? То есть, мы не ожидаем появления положительных событий вообще, а они происходят? Попытка посчитать "на бумажке" говорит о том, что знаменатель превращается в ноль и на этом все должно-бы закончиться. Причем нигде, никогда никаких специально оговоренных случаев или исключений для этого теста я не встречал. Готов допустить, что это ограничение считается "очевидным" и поэтому даже не упоминается. Но тогда надо допустить, что разработчики пакетов и функций реализующих этот тест будут выполнять такую проверку внутри реализаций. Если это действительно фундаментальное исключение. Ан нет. Пробую посчитать результат на Python с помощью функции proportions_ztest из пакета statsmodels.stats.proportion. Проверяю, что-же данная функция делает: "simple normal test for proportions. It should be the same as running the mean z-test on the data encoded 1 for event and 0 for no event so that the sum corresponds to the count.mIn the one and two sample cases with two-sided alternative, this test produces the same p-value as proportions_chisquare, since the chisquare is the distribution of the square of a standard normal distribution." И никаких ограничений. И тут неожиданность. При pтеор=0 и любом положительном значении pвыб результат спокойно высчитывается. Например - при pвыб=0.2 , N=10 имеем Z=1.5811388300841895 p_value=0.11384629800665805 и никаких сообщений об исключительной ситуации (и да, это двусторонний критерий, но суть от этого не меняется). Не могу понять, что происходит, но где-то наталкиваюсь на сообщение , что proportions_ztest из пакета statsmodels.stats.proportion реализовано по подобию функции prop.test из R. Сам я снес RStudio лет пять назад, проверить не могу, но лезу читать описание. И вдруг, с глубоким удивлением вижу там (ну, например: http://www.sthda.com/english/wiki/one-prop...on-z-test-in-r) формулу, по которой происходит расчет: Z=(pвыб-pтеор)/SQRT(pвыб*(1-pвыб)/N) Как говориться, "почувствуйте разницу"! В первую очередь, с тем, что написано на cran.r-project.org (см. ссылку в первом абзаце). В знаменателе теперь не pтеор, а pвыб. Делаю пересчет вручную, и результат, как и ожидалось, совпадает с тем, что выдает proportions_ztest (и скорее всего и prop.test). И вот теперь вопрос к знатокам. А какая-же формула корректна? Возможно-ли такая замена оценки дисперсии в знаменателе, если в результате мы получаем разные - пусть даже в одной точке - результаты? И можно-ли считать результаты, которые получены по формулам, реализованным в R и statsmodels для pтеор=0 корректными и использовать их для решения исходной задачи? Допускаю, что чего-то где-то недоучитываю. Или просто запутался. Или ответ на поверхности, но я его просто не замечаю. Буду благодарен за ваше видение ситуации. |
|
![]() |
![]() |
![]() |
![]()
Сообщение
#2
|
|
Группа: Пользователи Сообщений: 262 Регистрация: 1.06.2022 Из: Донецк Пользователь №: 39632 ![]() |
Не подскажу насчет корректности и эквивалентности формул (когда вижу сложную формулу в одну строку, и назначаю считать скобки, в итоге почти всегда впадаю в ступор), но двухвыборочный Z-критерий давно существует, изобретать его заново не нужно. И озвученная задача таки явно двухвыборочная, не имеющая ничего общего с одновыборочной задачей из стартового поста.
Сообщение отредактировал ИНО - 19.02.2023 - 00:50 |
|
![]() |
![]() |
![]()
Сообщение
#3
|
|
Группа: Пользователи Сообщений: 231 Регистрация: 27.04.2016 Пользователь №: 28223 ![]() |
, но двухвыборочный Z-критерий давно существует, изобретать его заново не нужно. И озвученная задача таки явно двухвыборочная, не имеющая ничего общего с одновыборочной задачей из стартового поста. Так то оно так, но вот для двуxвыборочного критерия есть условие n1*p1>10, n1*(1-p1)>10, n2*p2>10, n2*(1-p2)>10. И тут дело даже не в том, что за число в этих формулах справа стоит. А дело в том, что для одной из выборок одно из этих условий заведомо никогда не выполниться. И как тогда применять двухвыборочный критерий? 2) на вопрос о корректности постановки задачи при р_теор = 0 лучше всего ответил nokh: если кенгуру родил(а) человека, значит это не кенгуру. А если при применении препарата некоторые пациенты стали выздоравливать? Отбрасываем с негодованием, ибо "не кенгуру"? Или пытаемся выяснить, это случайность или все-же на препарат стоит обратить внимание? Сообщение отредактировал passant - 19.02.2023 - 20:41 |
|
![]() |
![]() |
![]()
Сообщение
#4
|
|
Группа: Пользователи Сообщений: 262 Регистрация: 1.06.2022 Из: Донецк Пользователь №: 39632 ![]() |
Так то оно так, но вот для двуxвыборочного критерия есть условие n1*p1>10, n1*(1-p1)>10, n2*p2>10, n2*(1-p2)>10. И тут дело даже не в том, что за число в этих формулах справа стоит. А дело в том, что для одной из выборок одно из этих условий заведомо никогда не выполниться. И как тогда применять двухвыборочный критерий? Вы полагаете, что использование самопальной формулы сходимость улучшит? Не удовлетворяются условия асимптотических критериев - используйте точные (в данном случае - Барнарда). Цитата А если при применении препарата некоторые пациенты стали выздоравливать? Отбрасываем с негодованием, ибо "не кенгуру"? Или пытаемся выяснить, это случайность или все-же на препарат стоит обратить внимание? По ходу, мораль примера с кенурями до Вас не дошла. Возьмем аналогию попроще. Представим мешок с бесконечным количеством Сообщение отредактировал ИНО - 19.02.2023 - 23:54 |
|
![]() |
![]() |
![]() ![]() |