Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Критерий для анализа сверхмалых выборок
Форум врачей-аспирантов > Разделы форума > Медицинская статистика
Страницы: 1, 2
salm
Цитата(Игорь @ 24.02.2023 - 17:37) *
Есть такая штука - мощность критерия (посмотрите в Интернете, зачем она нужна). Мощность критерия является не числом, а функцией от численности (объема) выборки. Чем больше (ближе к 1), тем мощнее (тем лучше). По конкретным критериям, например, можно посмотреть исследования профессора Б.Ю. Лемешко с соавторами из НГТУ (бывший НЭТИ), в которых для многих критериев методом численного моделирования рассчитаны графики, из которых можно сделать вывод о достаточной численности при приемлемой мощности.
Точные критерии, применяемые для малых выборок, при вычислении для больших выборок упираются в сложность расчета (для многих численность не более 12-13 или около того, иначе результатов ждать долго).
Если необходимо непременно найти различия хоть какие-нибудь (как исследователь, чувствуя, что они есть), примените критерии различных типов (положение, масштаб, функция распределения, комплекс параметров).


Я пока толко поняла что расчетный обьем выборки позволяет мне не найти различия в 20% при заявленной мощности 80%. А могу ли я при недостаточной выборке совершить ошибку первого рода и соврать что различия есть?
salm
Цитата(ИНО @ 24.02.2023 - 14:47) *
В указанных критериях объемы выборок, учитывается автоматически. Но ежели они очень малые, то достигаемый уровень значимости упирается в, скажем так, техническую границу и может никогда не перевалить за вожделенные 5% вне зависимости от величины различий. См. предыдущие страницы. Это как раз может быть одной из причин упомянутой Вами "значимости на уровне тенденции". Однако в большинстве случаев подобные выражения говорят лишь о том, что автор найти значимых различий не смог, но ему очень хочется.


Спасибо. А в принципе, такое выражение "значимость на уровне тенденции" имеет право на существование? вне конкретной ситуации? Вообще, уместно ли так написать, при понимании того, что выборка мала при таких параметрах признака?
100$

> Спасибо. А в принципе, такое выражение "значимость на уровне тенденции" имеет право на существование?
Нет.

> ...вне конкретной ситуации?
Тем более, нет.

> Вообще, уместно ли так написать, при понимании того, что выборка мала при таких параметрах признака?
Нет.
ИНО
Цитата(salm @ 24.02.2023 - 20:47) *
А могу ли я при недостаточной выборке совершить ошибку первого рода и соврать что различия есть?

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

Игорь, судя по этому Вашему совету, а также по тому что Вы написали недавно написали о развитии интерфейса Вашего ПО в сторону одной волшебной кнопки, считающей вес и сразу, можно ли сделать вывод о том, что на Вами принято волевое решение на проблему множественных сравнений окончательно и бесповоротно забить?
Игорь
Удалено автором поста.
ИНО
Проблема множественных сравнений отнюдь не исчерпывается сравнением одной выборки одним критерием с множеством других выборок. Сравнение двух выборок между собой множеством разных критериев (с последующем выбором того, где получилось p меньше) - это тоже про нее.
Игорь
Удалено автором поста.
ИНО
Пример 1. Почему у Смирнова мощность значительно меньше, чем у предложенного Вами критерия "применить поочередно и Стьюдента и Фишера (и еще десятком других, проверяющих по отдельности разные гипотезы о параметрах распределений) и выбрать наименьшее p"? Зачем в наш век высоких технологий вообще такой маломощный критерий нужен, если запустить дюжину разных и при этом установить не только сам факт различий в распределениях, но заодно и то, в чем конкретно они заключаются, ничего не стоит? Или все же стоит? Вы сервисом Virustotal пользовались? Никаких интересных аналогий с поведением ошибки первого рода не заметили?

Пример 2. Все зависит от того, насколько области ошибки первого рода разных критериев перекрываться. Если они действительно эквивалентны, то перекрытие должно быть практически полным, поэтому корректировка на множественные сравнения не требуется. Шутка в том, что в реальности мы это установить не можем. Даже сам автор критерия обычно не может сказать в какой конкретной ситуации больше соврет его критерий, а в какой - его конкурент. При нынешнем уровне научно-технического прогресса выработка сколь-нибудь эффективной процедуры контроля ошибки первого рода ля такого плана анализа представляется нереализуемой. Поэтому рекомендуется выбирать только один критерий, который исследователь считает наиболее мощным в данном случае, или же, если специфику случая представляет слабо, - равномерно наиболее мощный. Мне не встречалось ни одной публикации со словами типа "гипотезу о равенстве математических ожиданий проверяли критериями Стьюдента, Уэлча, Пагуровой, Кокрена-Кокс с последующим выбором наименьшего достигнутого уровня значимости". А ведь именно такой анализа Вы реализовали (или хотите реализовать) в своем ПО.
Игорь
Удалено автором поста.
ИНО
Так-то оно так, вот только для перестраховки принято встраивать защиту от дурака. Хотя бы в виде предупреждения: "Множественные процедуры не рекомендуются" (С)х/ф "Пассажиры". Вы же озвучили диаметрально противоположный подход.
ИНО
Причем тут смежные области? Вопрос лежит сугубо в плоскости дизайна и звучит так: следует ли автору ПО создавать такой интерфейс, который будет максимально благоприятствовать бездумному использованию? Одна кнопка "посчитать все" (если я правильно понял Ваш тезис о "радикальном упрощении") - это прямо-таки приглашение к дата дреджингу.
Vitek_22
Господа, я что-то совсем позабыл выложить пример. Тут некоторые товарищи смеялись с малой выборки, но в биологии это встречается, ещё раз напомню про трансгенных животных, которые очень плохо размножаются или развиваются (если мы говорим о случаях эмбриотрансфера - ЭКО по сути, из 50 подсаженных эмбрионов родиться может 7-10 животных).
Правда, в приложенной статье никакой проблемы с набором выборок быть не могло: либо лень, либо желание сэкономить реактивы, либо и то, и то... хотя статья опубликована в вполне себе котирующемся журнале. Так вот, сравнение двух выборок с n1=n2=3 проводится критерием Фишера-Питмана, только непонятно, каким, точными (с перебором всех комбинаций... а их там не много) или с использованием метода Монте-Карло. Может кому будет полезно для ссылки. Если есть статья в рецензируемом журнале и у тебя точно такой же случай с малым объёмом - смело ссылайся и никто ничего тебе не скажет)) ну почти smile.gif

Рисунок 2-4 и рис 6 в статье - для быстрого поиска. Т.к. авторы отображают на рисунках весь объём выборки - сразу видно, что она из 3 значений состоит.

Но знаете, в чём цимес, я нарисовал 2 выборки из 3 значение с разницей средних в 13 раз и очень маленьким SD. И вот как я Фишера-Питмана не крутил, ни точный, ни с Монте-Карло (100000 перестановок, избыточно, но столько у меня по умолчанию), я не получил p>0,1, вернее так, в любом случае (я увеличил разницу средних в 100 раз) p было равно 0,1 и ни о какой стат. значимости и речи быть не могло)) А статистическая мощность (количество симуляций 100000, количество перестановок в каждой 5000) была равна 0, что как бы намекает на невозможность получить p<0,05. Вывод - статья полный фуфел, прошу пардона)) статистика фальсифицирована.
Игорь
Цитата(Vitek_22 @ 8.08.2025 - 01:33) *
как бы намекает на невозможность получить p<0,05
В примере на с. 116 справочника Руниона p = 0,03. Чтобы убедиться, что всё сделано правильно, можно взять его данные, подставить в Вашу программу и посмотреть, совпадают ли результаты.
ИНО
Если я правильно понял задачу, то получить p<0,05 действительно нельзя, но вот p = 0,05 можно (при очень большой разности средних). А понял так: есть две выборки по 3 варианты в каждой, соответственно совокупный объем составляет 6. Как показало исследование в соседней теме, для точного перестановочного теста достаточно сгенерировать все сочетания 6 по 3, коих, если верить Википедии, 6!/(3!*(6-3)!) = 20. В таком случае минимальный достигаемый уровень значимости, вне зависимости от величины различий и выбранной статистки, равен 1/20 = 0,05. То есть на реальных данных может получиться число большее больше, но никак не меньшее. Как Руниону удалось добыть 0,03, тайна велика есть. Может, у него были выборки малость побольше? Не читал.

То, что в статье написано p<0,05, вместо строгого p=0,05, в принципе, простительно: авторы могли справедливо решить, что уперлись в то, что Стобаксов назвал "техническим порогом", и эту ситуацию можно трактовать как "значение измеряемой величины ниже предела обнаружения прибора". Жаль, там нет сырых данных (или я на заметил?). Шесть чисел много места не заняли б, зато вся интрига на тему возможной фальсификации развеялась бы.
Vitek_22
тов. Игорь, можете привести эти две выборки по 3 значения? Я скачал в djva эту книгу, но на 116 стр есть только выборки: [4,9,12] и [5,11,17], сравнение которых даёт p=0,6


Тов. ИНО,
Можете привести выборки объёмом 3, которые дадут p=0,05 или p<0,1 ?

Вот, я попросил коллегу проверить в R с модулем на питоне (в сети этот модуль есть - называется coin), и собственно в питоне есть Фишер-Питман в стандартной библиотеке (fisher_pitman_test в библиотеке SciPy,) - я лично с её использованием посчитал... собственно, не я, а компьютер, руками там вообще ничего не правил - всё уже реализовано в библиотеке - только подсунь выборки. Наконец, я попросил посчитать ИИ фишера-питмана в "ручном режиме", перебрав все комбинации и приведя их, чтоб я видел правильно ли он перебирает... Не выходит там 0,03. 0,1 мне дали все 3 попытки!
Вывод - не надо верить всему, что написано в книгах. Сегодня любой может написать код и компьютер всё за него посчитает. Не доверять - нет причин.

P.S. Эра спецсофта для статистики канула в Лету, я перешёл на питон и теперь всё считаю там. Что есть в программе Statistica от Statsoft - проверил, всё совпадает, считает чётко. Чего нет - проверил на выборках из статей (тот же Фишер-Питман, Бруннер-Мюнцель (включая перестановочный варианта), Йена, Уэлча, Бутстрэп с коррекцией смещения и ускорением и т.д.) - всё совпало с литературой, конечно, перестановочные тесты немного отличаются - на пару %, но это для них нормально.
ИНО
Признаю свою неправоту. Хотя она не столкьо моя, сколько авторов этой статьи. Вот-так бывает, если бездумно копировать формулы их статей в рецензируемых журналах!

Правильная формула для вычисления минимального достигаемого уровня значимости не 1/N, где N - количество сочетаний (как сказано в статье по ссылке), а 2/N. Почему 2? А потому что, кроме тождественного сочетания есть обратное ему, когда псевдовыборка 2 представляет собой копию оригинальной выборки 1 и наоборот. И на самом деле это большая проблема, поскольку тождественная перестановка и вот-эта обратная в реальности не помогают "восстановить распределение", а только лишь крадут мощность. В любом двухвыборочном точном перестановочном тесте всегда будут эти два паразитические значения статистики "настолько же или более экстремальной". В случае больших N, ими можно пренебречь, но в случае малых, получается лажа. С этим надо что-то делать...
Игорь
Цитата(Vitek_22 @ 8.08.2025 - 21:53) *
тов. Игорь, можете привести эти две выборки по 3 значения? Я скачал в djva эту книгу, но на 116 стр есть только выборки: [4,9,12] и [5,11,17], сравнение которых даёт p=0,6

Чтобы избежать отвлеченных рассуждений, я предложил проверить Вашу программу на опубликованных данных с известным результатом, полученным ручным расчетом. Рунион, гипотетический пример из раздела 10.2 (начинается пример на с. 116 - об этом я и написал в своем посте, данные к нему на с. 117). Даны две выборки по 5 вариант.
Первая выборка:
0,18 0,27 0,19 0,36 0,43
0,41 0,38 0,73 0,49 0,58
Вычисление критерия дает двустроннее значение 0,03.
Чуть выше в книге есть еще пример: выборка из 2-х вариант и выборка из 3-х вариант. Вычисление дает 0,2.
Если Ваша программа выдает такие же результаты, то она, предположительно, считает правильно. Если нет, нужно посмотреть, правильно ли вводятся данные - в некоторых программах это не очевидно.
Обратите внимание на формулу вычисления p-значения статистики критерия (ту, что с факториалами).
Vitek_22
Тов. Игорь, в статье. что я приложил объём выборок равен 3, я говорил что при объёме 3 в двух выборка нельзя получить p<0,1
А в вашем примере объём выборок равен 5! Моя программа посчитала всё верно, приложил принтскрин.

p=0,03175 что при расчёте точного критерия, что при использовании метода Монте-Карло, но на малых выборках оно так и должно быть, потому как число перестановок (у меня по умолчанию 100000) намного больше числа возможных комбинаций (252)

Мощность, конечно, маловата, около 6%
Игорь
Цитата(Vitek_22 @ 9.08.2025 - 14:02) *
Моя программа посчитала всё верно, приложил принтскрин.
Теперь я уверен в Вашей программе, и могу утверждать, что полученные Вами результаты расчета на реальных данных отражают статистическую картину явления. Хотя ...
Цитата(Vitek_22 @ 9.08.2025 - 14:02) *
Мощность, конечно, маловата, около 6%
Мощность, как известно, является возрастающей (от 0 до 1) функцией от численности выборки, поэтому для очень малых выборок мощность так мала. Возможно, либо Вас устроит такая мощность, либо такие малые выборки - единственная возможность посчитать хоть что-то. Я посмотрел в Интернете, но с наскоку не нашел исследований мощности двухвыборочных перестановочных тестов. Вероятно, не слишком долго искал. Если Вам попадутся такие исследования, буду благодарен, если укажете ссылки на них.
ИНО
Дело не в мощности. Мощность критерия - функция, зависящая в числе прочего от величины эффекта. Здесь же предел в 0,1 не зависит ни от чего, кроме объемов выборок. Я дал ссылку на статью, где этот порог назывался "minimum attainable Fisher-exact P value". Вот только формула расчета там неправильная, несмотря на то, что это далеко не последний американский журнал. Нужен множитель 2. И на самом деле это катастрофа, в принципе делающая применение перестановочных критериев бессмысленным для столь малых выборок. По крайней мере в том виде, в котором они существуют сейчас. Возможно, этот порог как-то можно обойти, на что намекают, например, упомянутые ранее в этой теме примеры расчетов в PAST, но я не знаю как (в тамошней документации об этом ни слова). Буду рад любым ссылкам и соображениям.
ИНО
Я тоже посчитал этот пример из Руниона с 5 и 5, при помощи оригинальных функций на R. Первая использует разность средних, вторая - статистику Уэлча (может быть предпочтительнее в случае выборок разных объемов с разными дисперсиями). В выдаче первый элемент списка - наблюдаемая статистика, второй - стастистика при всех сочетаниях (обратите внимание что первая и последнее числа всегда равны по модулю, это и есть та самая ранее мною упомянутая паразитическая пара, ограничивающая минимальный достигаемый уровень значимости), третий - p. В данном примерe в обоих тестах p равны, и больше минимально возможного 2/252, следовательно упор в "технический порог" не произошел, и результаты адекватно отражают ошибку первого рода (хотя и в довольно грубом приближении, поскольку в вычислении опирается на ступенчатую эмпирическую функцию распределения). Это же можно понять, видя что в середине второго элемента списка есть числа, большие или равные по модулю первому и последнему. В противном случае можно было бы котировать что p-значение теста вследствие принципиального изъяна алгоритма его вычисления отражает не реальную ситуацию с данными, а погоду на Луне smile.gif

Код
exactmeandifftest<-function(x, y) #Тестовая статистика - разность средних арифметических
{
  if(length(y)>length(x))
  {
    x_<-y
    y_<-x}
  else
  {
    x_<-x
    y_<-y
  }
  k<-length(x_)
  xy<-c(x_, y_)
  n<-length(xy)
  id<-1:n
  combmat<-combn(id, k)
  recmeandiff<-function(X, xy)
  {
    x<-xy[X]
    y<-xy[-X]
    meandiff<-mean(x)-mean(y)
    return(meandiff)
  }
  diffobs<-mean(x_)-mean(y_)
  diffsim<-apply(combmat, 2, recmeandiff, xy=xy)
  absdiffobs<-abs(diffobs)
  absdiffsim<-abs(diffsim)
  res<-as.numeric(round(absdiffsim[2:length(absdiffsim)], digits=6)>=round(absdiffobs, digits=6))
  p<-(1+sum(res))/(ncol(combmat))
  return(list(diffobs, diffsim, p))
}
__________________________________________

exactwelchtest<-function(x, y) #Тестовая статистика - статистика Уэлча
{
  if(length(y)>length(x))
  {
    x_<-y
    y_<-x}
  else
  {
    x_<-x
    y_<-y
  }
  k<-length(x_)
  xy<-c(x_, y_)
  n<-length(xy)
  id<-1:n
  combmat<-combn(id, k)
  recmeandiff<-function(X, xy)
  {
    x<-xy[X]
    y<-xy[-X]
    t<-(mean(x)-mean(y))/sqrt((var(x)/length(x))+(var(y)/length(y)))
    return(t)
  }
  tobs<-(mean(x_)-mean(y_))/sqrt((var(x_)/length(x_))+(var(y_)/length(y_)))
  tsim<-apply(combmat, 2, recmeandiff, xy=xy)
  abstobs<-abs(tobs)
  abstsim<-abs(tsim)
  res<-as.numeric(round(abstsim[2:length(abstsim)], digits=6)>=round(abstobs, digits=6))
  p<-(1+sum(res))/(ncol(combmat))
  return(list(tobs, tsim, p ))
}

x<-c(0.18, 0.27, 0.19, 0.36, 0.43)
y<-c(0.41, 0.38, 0.73, 0.49, 0.58)

exactmeandifftest(x, y)


[[1]]
[1] -0.232

[[2]]
[1] -0.232 -0.240 -0.252 -0.112 -0.208 -0.172 -0.212 -0.224 -0.084 -0.180 -0.144 -0.232
[13] -0.092 -0.188 -0.152 -0.104 -0.200 -0.164 -0.060 -0.024 -0.120 -0.144 -0.156 -0.016
[25] -0.112 -0.076 -0.164 -0.024 -0.120 -0.084 -0.036 -0.132 -0.096 0.008 0.044 -0.052
[37] -0.136 0.004 -0.092 -0.056 -0.008 -0.104 -0.068 0.036 0.072 -0.024 -0.016 -0.112
[49] -0.076 0.028 0.064 -0.032 0.016 0.052 -0.044 0.096 -0.176 -0.188 -0.048 -0.144
[61] -0.108 -0.196 -0.056 -0.152 -0.116 -0.068 -0.164 -0.128 -0.024 0.012 -0.084 -0.168
[73] -0.028 -0.124 -0.088 -0.040 -0.136 -0.100 0.004 0.040 -0.056 -0.048 -0.144 -0.108
[85] -0.004 0.032 -0.064 -0.016 0.020 -0.076 0.064 -0.100 0.040 -0.056 -0.020 0.028
[97] -0.068 -0.032 0.072 0.108 0.012 0.020 -0.076 -0.040 0.064 0.100 0.004 0.052
[109] 0.088 -0.008 0.132 0.048 -0.048 -0.012 0.092 0.128 0.032 0.080 0.116 0.020
[121] 0.160 0.072 0.108 0.012 0.152 0.140 -0.140 -0.152 -0.012 -0.108 -0.072 -0.160
[133] -0.020 -0.116 -0.080 -0.032 -0.128 -0.092 0.012 0.048 -0.048 -0.132 0.008 -0.088
[145] -0.052 -0.004 -0.100 -0.064 0.040 0.076 -0.020 -0.012 -0.108 -0.072 0.032 0.068
[157] -0.028 0.020 0.056 -0.040 0.100 -0.064 0.076 -0.020 0.016 0.064 -0.032 0.004
[169] 0.108 0.144 0.048 0.056 -0.040 -0.004 0.100 0.136 0.040 0.088 0.124 0.028
[181] 0.168 0.084 -0.012 0.024 0.128 0.164 0.068 0.116 0.152 0.056 0.196 0.108
[193] 0.144 0.048 0.188 0.176 -0.096 0.044 -0.052 -0.016 0.032 -0.064 -0.028 0.076
[205] 0.112 0.016 0.024 -0.072 -0.036 0.068 0.104 0.008 0.056 0.092 -0.004 0.136
[217] 0.052 -0.044 -0.008 0.096 0.132 0.036 0.084 0.120 0.024 0.164 0.076 0.112
[229] 0.016 0.156 0.144 0.120 0.024 0.060 0.164 0.200 0.104 0.152 0.188 0.092
[241] 0.232 0.144 0.180 0.084 0.224 0.212 0.172 0.208 0.112 0.252 0.240 0.232

[[3]]
[1] 0.03174603

Код
exactwelchtest (x, y)


[[1]]
[1] -2.909105

[[2]]
[1] -2.90910520 -3.12771621 -3.51153439 -1.04349839 -2.37346442 -1.77498894 -2.45287581
[8] -2.71320887 -0.76031333 -1.89337368 -1.40556386 -2.90910520 -0.83879342 -2.01905570
[15] -1.50502427 -0.96000454 -2.22387014 -1.66294052 -0.53371828 -0.21036451 -1.12946492
[22] -1.40556386 -1.55642433 -0.14002801 -1.04349839 -0.68343776 -1.66294052 -0.21036451
[29] -1.12946492 -0.76031333 -0.31664339 -1.26375113 -0.87870243 0.06994974 0.38821179
[36] -0.46051974 -1.31011711 0.03496685 -0.83879342 -0.49699792 -0.06994974 -0.96000454
[43] -0.60796735 0.31664339 0.64553873 -0.21036451 -0.14002801 -1.04349839 -0.68343776
[50] 0.24567075 0.57070110 -0.28109135 0.14002801 0.46051974 -0.38821179 0.87870243
[57] -1.83333333 -2.01905570 -0.42426407 -1.40556386 -1.00146067 -2.15319621 -0.49699792
[64] -1.50502427 -1.08615375 -0.60796735 -1.66294052 -1.21821918 -0.21036451 0.10496474
[71] -0.76031333 -1.71822619 -0.24567075 -1.17347238 -0.79933966 -0.35234428 -1.31011711
[78] -0.91909591 0.03496685 0.35234428 -0.49699792 -0.42426407 -1.40556386 -1.00146067
[85] -0.03496685 0.28109135 -0.57070110 -0.14002801 0.17515579 -0.68343776 0.57070110
[92] -0.91909591 0.35234428 -0.49699792 -0.17515579 0.24567075 -0.60796735 -0.28109135
[99] 0.64553873 1.00146067 0.10496474 0.17515579 -0.68343776 -0.35234428 0.57070110
[106] 0.91909591 0.03496685 0.46051974 0.79933966 -0.06994974 1.26375113 0.42426407
[113] -0.42426407 -0.10496474 0.83879342 1.21821918 0.28109135 0.72168784 1.08615375
[120] 0.17515579 1.60903597 0.64553873 1.00146067 0.10496474 1.50502427 1.35736936
[127] -1.35736936 -1.50502427 -0.10496474 -1.00146067 -0.64553873 -1.60903597 -0.17515579
[134] -1.08615375 -0.72168784 -0.28109135 -1.21821918 -0.83879342 0.10496474 0.42426407
[141] -0.42426407 -1.26375113 0.06994974 -0.79933966 -0.46051974 -0.03496685 -0.91909591
[148] -0.57070110 0.35234428 0.68343776 -0.17515579 -0.10496474 -1.00146067 -0.64553873
[155] 0.28109135 0.60796735 -0.24567075 0.17515579 0.49699792 -0.35234428 0.91909591
[162] -0.57070110 0.68343776 -0.17515579 0.14002801 0.57070110 -0.28109135 0.03496685
[169] 1.00146067 1.40556386 0.42426407 0.49699792 -0.35234428 -0.03496685 0.91909591
[176] 1.31011711 0.35234428 0.79933966 1.17347238 0.24567075 1.71822619 0.76031333
[183] -0.10496474 0.21036451 1.21821918 1.66294052 0.60796735 1.08615375 1.50502427
[190] 0.49699792 2.15319621 1.00146067 1.40556386 0.42426407 2.01905570 1.83333333
[197] -0.87870243 0.38821179 -0.46051974 -0.14002801 0.28109135 -0.57070110 -0.24567075
[204] 0.68343776 1.04349839 0.14002801 0.21036451 -0.64553873 -0.31664339 0.60796735
[211] 0.96000454 0.06994974 0.49699792 0.83879342 -0.03496685 1.31011711 0.46051974
[218] -0.38821179 -0.06994974 0.87870243 1.26375113 0.31664339 0.76031333 1.12946492
[225] 0.21036451 1.66294052 0.68343776 1.04349839 0.14002801 1.55642433 1.40556386
[232] 1.12946492 0.21036451 0.53371828 1.66294052 2.22387014 0.96000454 1.50502427
[239] 2.01905570 0.83879342 2.90910520 1.40556386 1.89337368 0.76031333 2.71320887
[246] 2.45287581 1.77498894 2.37346442 1.04349839 3.51153439 3.12771621 2.90910520

[[3]]
[1] 0.03174603
ИНО
Один неприятный технический момент, который можно заметить в выдаче моего кода: при одинаковых вычислениях R иногда выдает результат с разной точностью, что существенно для последующего сравнения наблюдаемой величины тестовой статистики с моделируемыми. Поэтому вместо простого abstsim[2:length(abstsim)]>=abstobs, пришлось городить round(abstsim[2:length(abstsim)], digits=6)>=round(abstobs, digits=6), но это какой-то позорный костыль. Кто знает более грамотный путь, поделитесь.
Игорь
Удалено автором поста.
ИНО
Я выложил распределение статистики. Постройте гистограмму и убедитесь, что оно абсолютно симметрична. Не уверен, что в случае с разными объемами выборок будет так же, но в данном примере так. Утверждать, будто Рунион и все известные программы неправильно считают p, и только Ваше творение правильно (да еще PAST, но он в разных версиях считает по-разному, причем не только это - сырой и непроверенный продукт на мой взгляд) - такое себе. В данном примере p будет одинаково для статистик Стьюдента, Уэлча, разности средних, Уилкоксона, поскольку зависит не от самих значений статистик, а лишь от того, какая их доля больше или равна наблюдаемому значению. Повторюсь, в случаях "упора в технический барьер", всегда будет только два экстремальных перестановочных значения тестовой статистики, на противоположных хвостах распределения. Одно будет равно наблюдаемому, второе - минус наблюдаемому. Это не зависит ни от величины различий, ни от статистики. Разве что если выбирать статистику, принимающую только положительные значения (например F, или модуль разности средних), то оба экстремальных значения съедут в одну точку.

Код
x<-c(0.18, 0.27, 0.19, 0.36, 0.43)
y<-c(0.41, 0.38, 0.73, 0.49, 0.58)

wilcox.test(x, y)


Wilcoxon rank sum exact test

data: x and y
W = 2, p-value = 0.03175
alternative hypothesis: true location shift is not equal to 0

Код
xy<-data.frame(value=c(x,y), group=as.factor(c(1,1,1,1,1,2,2,2,2,2)))
library(coin)
oneway_test(value~group, data=xy, distribution="exact")

Exact Two-Sample Fisher-Pitman Permutation Test

data: value by group (1, 2)
Z = -2.1509, p-value = 0.03175
alternative hypothesis: true mu is not equal to 0
Игорь
Удалено автором поста.
ИНО
То есть слово "exact" в выдаче Вы в упор не видите? Какая, нафиг, нормальная аппроксимация, если я Вам все перестановочные значения тестовой статистики на блюдечке поднес! Постройте уже гистограмму или ядерную оценку плотности и убедитесь в идеальной симметрии относительно 0, вместо того, чтобы рассуждать отвлеченно. Не суть, я выбрал чуть другую статистику, c этим Z, чем бы оно ни было, будет аналогично.

R - это как бы не одна программа, а платформа для написания программ любым желающим. Но в разных пакетах разных авторов, которые за частую "доктора философии", съевшие собаку именно на этой проблеме, p точных перестановочных критериев получается на этом примере одинаковое, ровно то же, что у Руниона, у которого он взят. И ровно то же, что у меня в самописном коде. И на на Питоне, как пояснил Vitek_22, аналогично. Т. е. имеется некий консенсус. И только лишь Баба Яга против smile.gif
ИНО
Цитата
Student test (location): two sided p = 0.019616
Welch test (location): two sided p = 0.0210766
Pagurova test (location): two sided p = 0.022296
Cochran-Cox test (location): two sided p = 0.0280864
Mann-Whitney test (location): two sided p = 0.0282801
Wilcoxon test (location): two sided p = 0.0249259


Милейший, зачем Вы вывалили эту кучу асимптотических p, когда мы говорим о точных перестановочных?
Игорь
Удалено автором поста.
ИНО
Скачал Руниона этого. Алгоритм, который он предлагает довольно необычный - генерирует не все сочетания, а только те, которые дают сумму чисел не большую, чем наименьшая сумма в исходных выборках. Выглядит довольно привлекательно плане сокрушения примени вычислений, но как угадать с ходу эти немногие сочетания без полного перебора, тайна велика есть. Но сейчас нам важнее вопрос об умножении p на два. Так и должно быть, поскольку комбинации с меньшей суммой, могут оказаться как в группе А, так и в группе В. Вторая возможность в книге детально не рассматривается, но подразумевается. Это в случае выборок равного объема. При неравном ассиметричное распределение получается. Вот-только рунионовским методом его не визуализировать. И множить одностороннее p на два в этом случае действительно нельзя, тут Рунион и впрямь ошибается. В частности, в первом примере на странице 116, где n1=2, а n2=3, двустороннее p должно быть не 0,4, а 0,3. Но в примере, где n1=n2=5 ошибки нет, там множить одностороннее p на два допустимо. Но программы так не делают, они строят полное распределения на всех возможных сочетаниях.
ИНО
Цитата(Игорь @ 11.08.2025 - 21:56) *
Уважаемый, но эту кучу первыми вывалили Вы:Я лишь ее конкретизировал.

Ничего подобного, в процитированном написано "статистик Стьюдента...", а не "критериев Стьюдента..." - сечете разницу? Разумеется, имелось в виду использование означенных статистик в качестве тестовых в точном перестановочным критерии. В Аттестате был точный Стьюдент, точный Вилкоксон и еще что-то. Забыли уже?

Еще раз повторяю: если в выдаче написано "exact", ни о каких асимптотиках и аппроксимациях речь не идет, и не важно какой буквой обозвана тестовая статистика, Z или Зю. Идет перебор ее значений при всех сочетаниях, отбираются такие же или более экстремальные (по модулю), как наблюдаемая и их число делится на общее число сочетаний. И так получается честное двусторонее p.

Цитата
А польза этих методов именно здесь в том, что отличаться их результаты сильно не должны, и можно их использовать для проверки. Независимо от технологии вычисления, это эквивалентные тесты.

А вот и нет: у классических критериев нет "технического порога" 2/N перестановок, поэтому в случае особо малых выборок p может быть меньше на порядки.
Игорь
Удалено автором поста.
ИНО
R правильно считает. StatXact, наверное, тоже считает правильно (но за неимением исходных данных этого не проверить), поскольку при неравных выборках двустороне p действительно должно быть меньше удвоенного одностороннего. Рунион считает неправильно только для выборок неравного размера, для равных выборок правильно, хоть и неклассическим способом. Ваше ПО считает неправильно (судя по тем значению, что Вы привели для примера из Руниона с 5 и 5). А Вы сами неправильно читаете (или вообще не читаете) то, что что я тут пишу.
Игорь
Удалено автором поста.
ИНО
Вы неверно считаете двустороннее. Что есть одностороннее p перестановочного теста? Доля с перестановочных статистик, которые строго больше или строго меньше наблюдаемой. А двустороннее? Доля перестановочных статистик, которые больше или равны наблюдаемой. Когда Вы складываете оба односторонних p, то упускаете случае тождественного равенства! Поэтому coin считает правильно, а AtteStat и Criterial - нет.
Игорь
Удалено автором поста.
ИНО
Вот именно двустороннее и неверное, к односторонним претензий нет. Почему неверное, я написал. Не считаете нужным править и желаете подпортить правильное - дело барское. Все равно кроме Вас и Ваших студентов эти продукты практически никто не использует.
ИНО
Только что совершенно случайно в процессе чтения статьи по другой теме наткнулся на такой пассаж:
Цитата
When distributions are highly discrete, the mid-p-value [13, 14] is frequently used as an alternative to the p-value. The mid-p-value is equivalent to the p-value, except that it includes only half the probability of the observed statistic. This adjustment, which brings the p-value into better agreement with that for a continuous distribution, has been shown to be more accurate for analysis of 2×2 tables than Fisher?s exact test when marginal totals are not xed by design [15]. If the observed value of the test statistic is the most extreme possible, as in this case, the mid-p-value is half the p-value. Such a large correction may be unpalatable and suggests caution when interpreting p-values in these circumstances

Если я правильно понял, в случаях, когда достигаемый уровень значимости точного критерия упирается в "технический порог", предлагается тупо поделить его на два. Кажется, это какой-то волюнтаризм чистой воды, для которого трудно придумать математическое обоснование, но для прояснения ситуации не повредит ознакомиться с источниками 13, 14 и 15 из списка литературы.
Игорь
Удалено автором поста
ИНО
Игорь, полагаю, откуда и как установить R или еще что, желающие догадаются без Вашей развернутой справки. Давайте лучше обсудим постулируемую Вами безальтернативность минских соглашений AtteStat и Criterial. Какой смысл Вы вкладываете в это утверждение? Имеете в виду, что мало другого софта, считающего критерий Фишера-Питмена, только Ваши творения да R (в котором по Вашему мнению двусторонее p неправильное)? Это не так: короткое гугление показало, что он независимо реализован, как минимум, в Матлабе и Стате. Не знаю насчет кнопочных программ, это надо каждой разбираться индивидуально, поскольку может скрываться под каким-нибудь неопределенным именем типа просто "permutation test" или "randomization test". В любом случае это совсем не экзотика типа Лемана-Розенблатта.

Игорь
Удалено автором поста.
ИНО
Если Вы считаете слово "творения" оскорбительным, то ой. Даже в мыслях не было нарываться на конфронтацию, хотел просто подискутировать по существу. Однако, раз уж Вы первым перешли на личности, извольте алаверды:

1. Во всех темах данного форума, к месту и не к месту, Вы достаточно агрессивно рекламируете собственное ПО. Но при этом любую конструктивную критику в его адрес воспринимаете как личное оскорбление. Это не нормально. Если считаете, что раз оно бесплатное, то следует жрать, что дают без претензий и нахваливать, то это контрпродуктивно. Нормальный разработчик наоборот должен быть благодарен тестерам за любые выявленные баги.

2. Вы систематически не читаете или же игнорируете посты, посвящённые конкретным статистическим проблемам, и даже не отвечаете на прямые вопросы по существу. В том числе по работе Вашего же ПО. Например, на вопрос о том, какой прогноз даст ваша модель пуассоновской регрессии при равенстве правой части уравнения нулю, мне пришлось отвечать самому, путем изучения мануала. Только так я смог понять, что к моей задачи она не применима, вопреки Вашему предложению. За мануал, конечно спасибо, но все-таки очень странно, что единоличный автор и владелец не дает простой ответ на такой такой вопрос. Что уж говорить о вопросах более отвлеченных, относительно которых хотелось бы услышать Ваше мнения как статистика, например о чуть выше озвученном "mid-p".

3. Ваши предложения по решению статистических задач, более чем в половине случаев довольно странны. Как то предложение в соседней теме использовать Zero-trunpated для предсказания пуассоновского распределения с параметром ноль. Вследствие чего можно заподозрить, что мое ранее высказанное предположение о том, что несмотря на колоссальные библиографические списки в мануалах, Вы толком не читаете литературу, близко к истине.

Можете размышлять над этими "обвинениями" хоть 100 лет. Или не размышлять - мне безразлично.
Игорь
Думаю, что мы немного погорячились. Да и я, виноват, непроверенную информацию давал в качестве предмета обсуждения, а топикстартеру нужен конкретный ответ. Поэтому удалил предыдущие посты. Цель, во всяком случае моя, остается той же - используя информацию о замеченных ошибках и неточностях, но не навязывая, предоставить пользователям надежное ПО. Поэтому собрал в данном посте свои изыскания по теме.

Теория
----------
Как правильно считать p-значение. Если взглянуть на график функции плотности распределения статистики критерия (площадь под всей кривой равна 1), то видим, что левое одностороннее p-значение - это площадь под кривой, отмеченная от -∞ (теоретически) до левостороннего значения статистики критерия (например, p = 0,01) - это результат проверки гипотезы A > B (назовем условно так - пусть это будут средние, медианы или что-то еще). Правое одностороннее p-значение - площадь под кривой, отмеченная от -∞ (теоретически) до правостороннего значения статистики критерия (например, p = 0,99) - это результат проверки гипотезы B > A. Двустороннее значение - это сумма min(левостороннее, 1 - левостороннее) и min(правостороннее, 1 - правостороннее), т.е. сумма двух площадей, в данном примере 0,02. Правило действительно для любой функции плотности распределения - симметричной и несимметричной. Это очень важно. Для малых выборок, которые обсуждаются в данной теме, точная функция плотности распределения статистики несимметрична (примеры с иллюстрациями несложно найти), а убедиться в правильности данного тезиса легко, формально поменяв решающее правило и выполнив соответствующий расчет в соответствии со схемой вычисления статистического теста. Для больших выборок функция плотности распределения стремится к симметричной и поэтому может быть корректно аппроксимирована, например, нормальным распределением. Левостороннее p-значение в данном случае равно (1 - правостороннее), а двустороннее равно удвоенному одностороннему, точнее 2 * min(одностороннее, 1 - одностороннее). Повторю - для малых выборок это не так, и левостороннее p-значение не равно (1 - правостороннее), поэтому вычислять двустороннее p-значение удвоением одностороннего p-значения в данном случае некорректно.

Практика
-------------
Теперь практически, как вычислять. Рассмотрим одну из возможных схем, которую мы считаем удачной. Предположим, мы составили (или используем готовую) правильную функцию вычисления статистики и p-значения критерия, в соответствии со схемой его вычисления.
1. Функция вызывается с параметрами A,B. Выводим левостороннее p-значение.
2. Функция вызывается с параметрами B,A. Выводим правостороннее p-значение.
3. Вычисляем и выводим двустороннее значение min(левостороннее, 1 - левостороннее) + min(правостороннее, 1 - правостороннее).

Некоторые источники и программы в качестве двустороннего значения выводят удвоенное min(одностороннее, 1 - одностороннее). Это имеет место, например, в том случае, если распределение статистики аппроксимируется нормальным распределением (Mehta) либо симметрия распределения постулируется (Motulsky). Но позволю себе процитировать (машинный перевод) источник Kaiser "A general-purpose method for two-group randomization tests": "Значение p=0,03072 идентично значению permtest2; однако tsrtest даёт другое двустороннее значение, поскольку tsrtest, в отличие от permtest2, не предполагает симметрии верхнего и нижнего хвостов при расчёте двустороннего p-значения, а вместо этого отдельно подсчитывает значения в верхнем и нижнем хвостах." Как-то так.
ИНО
Тогда и меня простите. Но это касается исключительно тона общения, а ни коем образом не статистки, где я продолжу настаивать на своем. Во-первых, симметричность распределения в данном случае зависит не от объемов выборок, а от их равенства. При равных сколь угодно малых объемах "точное" распределение статистики типа Стьюдента или разности средних будет симметричным, при неравных - ассиметричным. Можете проверить моделированием. Во-вторых, повторю свой ранее заданный вопрос: при сложении левостороннего p c правосторонним куда Вы деваете случаи тождественного равенства наблюдаемой статистики моделируемой, которые ни то, ни другое не учитывает? Именно от этого, а вовсе не от симметрии появляется различие между вашим двусторонним значением, и тем, что выдает тот же coin. Последнему начхать на симметрию, он ничего не складывает и не умножает на на два, а тупо считает все случаи, когда моделируемая статистика столь или более экстремальна, сколь наблюдаемая. Данный эффект будет уменьшаться с ростом объемов выборок. А для асимптотических тестов такой проблемы нет вообще.

По последнему абзацу с цитатой, хотелось бы спросить: а в чем же мораль сей басни? Т. е. какой из наpванных тестов господин Кайзер считает верным и какие аргументы приводит в пользу той точки зрения?
Игорь
Цитата(ИНО @ 27.08.2025 - 00:54) *
Во-первых, симметричность распределения в данном случае зависит не от объемов выборок, а от их равенства. При равных сколь угодно малых объемах "точное" распределение статистики типа Стьюдента или разности средних будет симметричным, при неравных - ассиметричным. Можете проверить моделированием.
Встречал у авторов данное мнение, совпадающее с Вашим. Раз уж если мы обсуждаем перестановочный тест, сделал также вариант расчета по классической формуле из Higgins "An introduction to modern nonparametric statistics", чтобы по крайней мере для себя снять данный вопрос.
Цитата(ИНО @ 27.08.2025 - 00:54) *
Во-вторых, повторю свой ранее заданный вопрос: при сложении левостороннего p c правосторонним куда Вы деваете случаи тождественного равенства наблюдаемой статистики моделируемой, которые ни то, ни другое не учитывает? Именно от этого, а вовсе не от симметрии появляется различие между вашим двусторонним значением, и тем, что выдает тот же coin. Последнему начхать на симметрию, он ничего не складывает и не умножает на на два, а тупо считает все случаи, когда моделируемая статистика столь или более экстремальна, сколь наблюдаемая. Данный эффект будет уменьшаться с ростом объемов выборок. А для асимптотических тестов такой проблемы нет вообще.
Ответ, аналогичный предыдущему. Сделал отдельную функцию вычисления двустороннего значения по Higgins.
Цитата(ИНО @ 27.08.2025 - 00:54) *
По последнему абзацу с цитатой, хотелось бы спросить: а в чем же мораль сей басни? Т. е. какой из наpванных тестов господин Кайзер считает верным и какие аргументы приводит в пользу той точки зрения?
Лучше посмотреть источник. Для себя я понял, что в данной работе авторы не считают предпочтительным ни один из вариантов. Они как бы равноправно сосуществуют в STATA в виде различных функций. Интересно, что данная точка зрения также исповедуется в документации по программе Dataplot. Я также не анализировал несколько существующих модулей в R, ограничившись только coin, а встречались еще как минимум 3 модуля (https://www.cfholbert.com/blog/two_sample_permutation_test/), выполняющих вычисления рассматриваемым тестом, и надо бы посмотреть подробнее, хотя вводная информация по ссылке показывает, что не надо.
ИНО
Ну все ж хотелось бы докопаться до истины - какой вариант меньше врет. Думается, что на самом деле в случае малых выборок будут сильно врать все, поскольку распределение получается очень дискретным, соответственно любое "точное" p будет грубым приближением (да еще и с жестким порогом). Думается, врать будут в сторону ошибки второго рода. Т. е. та же история что с ДИ Клоппера-Пирсона, который точный в том смысле что свято блюдет номинальную ошибку первого рода, но ценой ужасной консервативности. А при больших выборках разница между всеми тремя методами должна сойти на нет.
Игорь
В комментариях исходников coin есть названия источников (в-основном по технике вычислений). Критерий с примерами и смежные проблемы описаны в нескольких монографиях (Runyon, Siegel, Higgins, Mehta, Motulsky) и статьях (Kaiser 2007 и 2009 года).

Цитата(ИНО @ 27.08.2025 - 17:26) *
А при больших выборках разница между всеми тремя методами должна сойти на нет.
Это так, но анализируем мы очень малые выборки. Три метода, это видимо: Runyon (предполагаемая симметрия функции плотности распределения, двустороннее как удвоенное одностороннее), Kaiser 2009 года (асимметрия функции плотности распределения, двустороннее значение вычисляется как минимум из 1, 2*левое и 2*правое) и представленный выше.

P.S. Прошу прощения, убрал весь мусор из своих предыдущих сообщений, оставив только факты и ссылки, которые считаю значимыми.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2026 IPS, Inc.