Я встретил парадоксальное поведение так называемых «точных тестов» или «тестов перестановки», прототипом которых является тест Фишера. Вот.
Представьте, что у вас есть две группы по 400 человек (например, 400 контрольных против 400 случаев) и ковариата с двумя модальностями (например, открытая / неэкспонированная). Есть только 5 разоблаченных людей, все во второй группе. Тест Фишера выглядит так:
> x <- matrix( c(400, 395, 0, 5) , ncol = 2)
> x
[,1] [,2]
[1,] 400 0
[2,] 395 5
> fisher.test(x)
Fisher's Exact Test for Count Data
data: x
p-value = 0.06172
(...)
Но теперь во второй группе (случаях) есть некоторая неоднородность, например, форма заболевания или центр рекрутинга. Его можно разделить на 4 группы по 100 человек. Нечто подобное может произойти:
> x <- matrix( c(400, 99, 99 , 99, 98, 0, 1, 1, 1, 2) , ncol = 2)
> x
[,1] [,2]
[1,] 400 0
[2,] 99 1
[3,] 99 1
[4,] 99 1
[5,] 98 2
> fisher.test(x)
Fisher's Exact Test for Count Data
data: x
p-value = 0.03319
alternative hypothesis: two.sided
(...)
Теперь у нас есть ...
Это только пример. Но мы можем смоделировать силу двух стратегий анализа, предполагая, что у первых 400 человек частота воздействия равна 0, а у 400 оставшихся - 0,0125.
Мы можем оценить силу анализа с двумя группами по 400 человек:
> p1 <- replicate(1000, { n <- rbinom(1, 400, 0.0125);
x <- matrix( c(400, 400 - n, 0, n), ncol = 2);
fisher.test(x)$p.value} )
> mean(p1 < 0.05)
[1] 0.372
И с одной группой из 400 и 4 группами по 100 человек:
> p2 <- replicate(1000, { n <- rbinom(4, 100, 0.0125);
x <- matrix( c(400, 100 - n, 0, n), ncol = 2);
fisher.test(x)$p.value} )
> mean(p2 < 0.05)
[1] 0.629
Там довольно разница в силе. Разделение случаев на 4 подгруппы дает более мощный тест, даже если нет различий в распределении между этими подгруппами. Конечно, это увеличение мощности не связано с увеличением частоты ошибок типа I.
Известно ли это явление? Означает ли это, что первая стратегия недостаточно эффективна? Будет ли загрузочное значение p лучшим решением? Все ваши комментарии приветствуются.
Пост скриптум
Вот мой код
B <- 1e5
p0 <- 0.005
p1 <- 0.0125
# simulation under H0 with p = p0 = 0.005 in all groups
# a = 2 groups 400:400, b = 5 groupe 400:100:100:100:100
p.H0.a <- replicate(B, { n <- rbinom( 2, c(400,400), p0);
x <- matrix( c( c(400,400) -n, n ), ncol = 2);
fisher.test(x)$p.value} )
p.H0.b <- replicate(B, { n <- rbinom( 5, c(400,rep(100,4)), p0);
x <- matrix( c( c(400,rep(100,4)) -n, n ), ncol = 2);
fisher.test(x)$p.value} )
# simulation under H1 with p0 = 0.005 (controls) and p1 = 0.0125 (cases)
p.H1.a <- replicate(B, { n <- rbinom( 2, c(400,400), c(p0,p1) );
x <- matrix( c( c(400,400) -n, n ), ncol = 2);
fisher.test(x)$p.value} )
p.H1.b <- replicate(B, { n <- rbinom( 5, c(400,rep(100,4)), c(p0,rep(p1,4)) );
x <- matrix( c( c(400,rep(100,4)) -n, n ), ncol = 2);
fisher.test(x)$p.value} )
# roc curve
ROC <- function(p.H0, p.H1) {
p.threshold <- seq(0, 1.001, length=501)
alpha <- sapply(p.threshold, function(th) mean(p.H0 <= th) )
power <- sapply(p.threshold, function(th) mean(p.H1 <= th) )
list(x = alpha, y = power)
}
par(mfrow=c(1,2))
plot( ROC(p.H0.a, p.H1.a) , type="b", xlab = "alpha", ylab = "1-beta" , xlim=c(0,1), ylim=c(0,1), asp = 1)
lines( ROC(p.H0.b, p.H1.b) , col="red", type="b" )
abline(0,1)
plot( ROC(p.H0.a, p.H1.a) , type="b", xlab = "alpha", ylab = "1-beta" , xlim=c(0,.1) )
lines( ROC(p.H0.b, p.H1.b) , col="red", type="b" )
abline(0,1)
Вот результат:
Таким образом, мы видим, что сравнение с той же самой истинной ошибкой типа I все еще приводит к (действительно намного меньшим) различиям.
Ответы:
Почему р-значения разные
Происходит два эффекта:
Вот почему значение р отличается почти в 2 раза (не совсем из-за следующего пункта)
Пока вы теряете 5 0 0 0 0 как столь же экстремальный случай, вы получаете 1 4 0 0 0 как более экстремальный случай, чем 0 2 1 1 1.
пример кода:
вывод этого последнего бита
Как это влияет на власть при разделении групп
Есть некоторые различия из-за дискретных шагов в «доступных» уровнях p-значений и консервативности точного критерия Фишера (и эти различия могут стать довольно большими).
также критерий Фишера соответствует (неизвестной) модели, основанной на данных, а затем использует эту модель для вычисления p-значений. Модель в этом примере состоит в том, что в ней ровно 5 человек. Если вы смоделируете данные с помощью бинома для разных групп, то вы получите иногда больше или меньше 5 человек. Когда вы примените к этому критерий Фишера, некоторые ошибки будут учтены, а остатки будут меньше по сравнению с тестами с фиксированными маргинальными значениями. В результате тест слишком консервативный, а не точный.
Остается вопрос, верно ли это для всех возможных ситуаций.
3-кратная корректировка кода вашего анализа мощности (и 3 изображения):
с использованием биномиального ограничения на случай 5 подверженных лиц
Интересно видеть, что эффект гораздо сильнее для случая 400-400 (красный) по сравнению с 400-100-100-100-100 (синий). Таким образом, мы действительно можем использовать это разделение для увеличения мощности, чтобы сделать более вероятным отклонение H_0. (хотя мы не очень заботимся о том, чтобы сделать ошибку типа I более вероятной, поэтому смысл такого разделения для увеличения мощности не всегда может быть таким сильным)
использование биномиального не ограничивающего 5 человек
Если мы используем бином, как вы, то ни один из двух случаев 400-400 (красный) или 400-100-100-100-100 (синий) не дает точного значения p. Это связано с тем, что точный тест Фишера предполагает фиксированные итоги по строкам и столбцам, но биноминальная модель позволяет им быть свободными. Тест Фишера «подгоняет» итоги строки и столбца, делая остаточный член меньшим, чем истинный член ошибки.
увеличенная мощность приходит за плату?
Почему это влияет на власть
Я считаю, что суть проблемы заключается в разнице значений результатов, которые выбраны как «значимые». Ситуация такова, что пять подвергшихся воздействию лиц были взяты из 5 групп размером 400, 100, 100, 100 и 100 человек. Можно сделать разные выборы, которые считаются «экстремальными». очевидно, мощность увеличивается (даже если эффективная ошибка типа I такая же), когда мы переходим ко второй стратегии.
Если бы мы наметили разницу между первой и второй стратегией графически. Затем я представляю систему координат с 5 осями (для групп 400, 100, 100, 100 и 100) с точкой для значений гипотезы и поверхностью, которая изображает расстояние отклонения, за которым вероятность находится ниже определенного уровня. При первой стратегии эта поверхность является цилиндром, а при второй стратегии эта поверхность является сферой. То же самое верно для истинных значений и поверхности вокруг нее для ошибки. Мы хотим, чтобы перекрытие было как можно меньше.
Мы можем сделать реальную графику, когда рассмотрим немного другую проблему (с меньшей размерностью).
На графике показано, как распределяются группы из 500 и 500 (вместо одной группы из 1000).
Стандартный тест гипотезы оценил бы (для альфа-уровня 95%), является ли сумма X и Y больше 531 или меньше 469.
Но это включает очень маловероятное неравное распределение X и Y.
Это, однако, неверно (необязательно), когда мы не выбираем расщепление групп случайным образом и когда в них может быть смысл.
источник