![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
![]()
Сообщение
#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
|
|
Группа: Пользователи Сообщений: 107 Регистрация: 27.12.2015 Пользователь №: 27815 ![]() |
2 passant
Добрый день. Мой ответ не касается Вашего исходного вопроса, но при прочтении Ваших пояснений мне вспомнились тесты the Bartels rank test of randomness и библиотека для Change point analysis. Может на Вашу задачу следует посмотреть с этой стороны? В какой момент - при какой доле в выборке - эти данные становятся значимыми? Есть ситуация, где нужна 100% уверенность, поэтому нужно предпринимать все возможные меры по профилактике и решению образовавшихся проблем. В таком случае вопрос о статистической значимости смысла не имеет. Если есть возможность построить зависимость условных расходов от доли условного сигнала (хотя бы на уровне допущения), то нужно найти ту величину условных расходов и соответствующую долю условного сигнала, которая будет Вашим ориентиром. Расходы и сигнал - любые метрики успешности процесса, хоть количество расходов на каждый неправильно заполненный бланк в отчёте маркетолога формата А4. На мой взгляд, готовность платить или принимать решение (Cost-effectiveness thresholds) зависит исключительно от Вашей задачи. |
|
![]() |
![]() |
![]()
Сообщение
#3
|
|
Группа: Пользователи Сообщений: 231 Регистрация: 27.04.2016 Пользователь №: 28223 ![]() |
Добрый день. Мой ответ не касается Вашего исходного вопроса, но при прочтении Ваших пояснений мне вспомнились тесты the Bartels rank test of randomness и библиотека для Change point analysis. Может на Вашу задачу следует посмотреть с этой стороны? Спасибо за присоединение к обсуждению. Да Change point detection - это то, что меня больше всего и интересует. И, наверное, в связи с этим ко мне и обратились за советом. Я потер руки, в уверенности -"да это же в любом учебнике написано". Оказалось не все так тривиально. (Кстати - отдельное спасибо за mcp - ранее не встречал, надо будет посмотреть). Есть ситуация, где нужна 100% уверенность, поэтому нужно предпринимать все возможные меры по профилактике и решению образовавшихся проблем. В таком случае вопрос о статистической значимости смысла не имеет. Если есть возможность построить зависимость условных расходов от доли условного сигнала (хотя бы на уровне допущения), то нужно найти ту величину условных расходов и соответствующую долю условного сигнала, которая будет Вашим ориентиром. Расходы и сигнал - любые метрики успешности процесса, хоть количество расходов на каждый неправильно заполненный бланк в отчёте маркетолога формата А4. На мой взгляд, готовность платить или принимать решение (Cost-effectiveness thresholds) зависит исключительно от Вашей задачи. На мой взгляд, необходимо сначала понять прикладную сторону задачи. Потом перевести ее на формальный язык и решить ее чисто формальными, статистически-математическими, ML-методами, (если такой формализации не сделать - то на наше решение будут влиять в том числе и правила выдачи лицензий, что не есть с моей точки зрение правильно).А потом перевести полученное формальное решение на язык конкретной предметной области и понятный прикладному специалисту, включая и те самые "лицензии", и то, о чем вы пишете, и стоимость ошибки первого и второго рода, и другие особенности связанные с природой задачи и в таком виде уже вернуть решение пользователю. Мне казалась, что такая декомпозиция процесса решения естественна и общепринята, поэтому и описал задачу именно на уровне формального этапа. А интерпретацию попытался оставить в стороне. Сообщение отредактировал passant - 20.02.2023 - 16:10 |
|
![]() |
![]() |
![]() ![]() |