![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
![]()
Сообщение
#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 ![]() |
Извините за резкость, но Вы упорно гоните какую-то дичь. Там, где речь идет о проверке соответствия эмпирической величины некоторому заданному теоретическому параметру или закону распределения, само собой разумеется, нужно применять одновыборочный критерий, он же критерий согласия. И это вполне реалистичная ситуация, возникающая при проверке соответствия наблюдаемой картины мира некой теоретической модели, которая была создана не статистическими методами. Например, гипотезы об идеально сбалансированной монетке, которая обязана падать орлом кверху ровно при половине подбрасываний. Или о равном соотношении полов в потомстве. Или законов Менделя. И т. д. В вашем случае все еще проще, поскольку постулируете "теорвер=0", что автоматически выводит задачу из категории решаемых статистическими методами, о чем Вам уже весьма ясно и недвусмысленно сказали.
Но далее Вы описываете совершенно иную задачу о сравнении долей двух выборок. Пусть даже одна из них сильно больше второй, это еще не дает права считать ее генеральной совокупностью. Здесь нужен критерий двухвыборочный, он же критерий однородности. Разницу между согласием и однородностью улавливаете? И да, в зависимости от объемов выборок и наблюдаемых частот следует использовать разные критерии однородности. Когда я говорил о Барнарде, опирался на конкретное описание проблемы с пациентами, а их (особенно со 100% летальностью в одной из групп) всегда достаточно мало, чтобы можно было посчитать этот критерий на компьютере даже в самой кондовой оригинальной версии за приемлемое время. Но, поскольку далее Вы от медицины открестились, то, возможно, работаете с огромными выборками, где Барнарда пришлось бы считать до старости, в то время как и простая асимптотика была бы практически столь же эффективна. А дальше задача неожиданно трансформировалась в анализ временных рядов (насколько я могу судить по словосочетанию "Change Point Detection"). Да еще и на лету. Бурная эволюция исследовательской мысли - это, конечно, хорошо, но требовать один единственноправильный критерий на все порожденные ею экспериментальные планы весьма странно. Сообщение отредактировал ИНО - 21.02.2023 - 14:35 |
|
![]() |
![]() |
![]()
Сообщение
#3
|
|
Группа: Пользователи Сообщений: 231 Регистрация: 27.04.2016 Пользователь №: 28223 ![]() |
Извините за резкость, но Вы упорно гоните какую-то дичь. ...... Бурная эволюция исследовательской мысли - это, конечно, хорошо, но требовать один единственноправильный критерий на все порожденные ею экспериментальные планы весьма странно. Вы упорно подменяете мои вопросы, потом показываете, что эта подмена - дичь, а потом называете это бурной эволюцией мысли. Не смею с вами и вашим авторитетом спорить, но: требовать один единственноправильный критерий на все порожденные ею экспериментальные планы Никто этого не требовал, и я прекрасно понимаю разницу между одновыборочным и двухвыборочным критерием. Вопрос стоял иначе. Применимость обоих критериев для случая, когда одна из выборок "нулевая", оказывается под вопросом. Одного - из-за деления на нуль, второго - из за ограничений на размер доли. Как поступать в таком случае? И уж точно речь не шла о выдуманной вами "самопальной формуле". задача неожиданно трансформировалась в анализ временных рядов (насколько я могу судить по словосочетанию "Change Point Detection"). Да еще и на лету. Наоборот. Практически все задачи CPD временных рядов так или иначе сводятся к задаче анализа гипотез. Разных. Для разных входных данных. Разных условий. И нет ничего странного, что для случая временных рядов событий она может быть в некоторых случаях сведена в том числе и к проверке гипотезы равенства доль. (Да, можно вообще применять методы анализ потоков событий, можно и другими способами воспользоваться. Но не об этом сейчас речь). Можно говорить об эффективности самого z-теста по сравнению с другими тестами. Но тем не менее, этот тест вполне себе удовлетворительно срабатывает для случая, если анализируемые выборки (отрезки ряда) в обязательном порядке включают сигналы события. А если нет? Программе мониторинга об этом заведомо неизвестно. Вопрос - можно-ли в таком случае воспользоваться двухвыборочным критерием (да/нет) и если нет - то анализируется-ли такая ситуация в известных реализациях? При реализации систем мониторинга на предмет СPD, действительно, иногда (особенно для случая экстремально редких событий) удобнее не использовать расчет доли для каждого очередного положения скользящего окна, а выполнять накопительный перерасчет доли (например - до появления первого события), а вторую выборку собирать начиная от этого события. И тут сразу два вопроса - 1) сколько элементов надо накопить во второй выборке до принятия решения и 2) если первая выборка очень большая (вопрос по ходу - на сколько она должна бать большая?) можно ли применить одновыборочный критерий (при этом необходимо оказывается, что значение доли в первой ("теоретической") выборке равна нулю). Да, эта задача не имеет ничего общего ни мешком с шариками, ни с теоретически ожидаемой вероятностью выпадения монетки ( примеры которые приводил не я), но это вполне реальная, практическая задача. Которую к тому-же надо решать (принимать решение) автоматизировано за разумное время, но желательно - как можно быстрее. Даже в упрощенном описании в задаче очень много взаимосвязанных вопросов. И если бы я начал с описания реального алгоритма СPD, вопросов ко мне и непонимания задачи возникло бы на порядок больше. Впрочем, многие сразу поняли о чем речь, значит я был не очень и неправ, пойдя таким путем формализации. Я выделил формальный вопрос о критериях применимости одновыборочного и двухвыборочного z-теста, но не общих, а для описанного особого случая. Все. И даже явно написал в первом-же сообщении: "Допускаю, что чего-то где-то недоучитываю. Или просто запутался. Или ответ на поверхности, но я его просто не замечаю". Как оказалось даже такая рафинированная задача оказалась все-же не совсем тривиальной. А что-бы было, если бы я сразу окунул коллег в тонкости исходной прикладной задачи, еще и нагрузив ее особенностями программной реализации алгоритма? Это вполне реальная, задача. И проблемы возникают при попытках адаптации теоретических алгоритмов к этой прикладной задаче. Что само по себе - обычное дело при применении на практике (вон, выше даже регламент выдачи лицензий необходимо в некоторых случаях учитывать, оказывается). Мне это все дичью не кажется. Если у вас такое представление - вы вольны игнорировать мои вопросы. Но многие коллеги мне подсказали идеи поиска решения, и снабдили ранее мне не известными источниками информации, за что я им еще раз благодарен. Сообщение отредактировал passant - 21.02.2023 - 19:21 |
|
![]() |
![]() |
![]() ![]() |