Почему функция MATLAB signrank возвращает одни и те же знаковые Ранговые статистические значения при переворачивании знаков точек данных?
Почему функция MATLAB signrank возвращает те же значения статистики знакового ранга при переворачивании знаков точек данных?
У меня есть последовательность точек данных, хранящихся в векторе x. Я использую signrank(x) для проверки ранга знака.
Matlab говорит
Когда вы используете тест для одной выборки, то W-сумма рангов положительных различий между наблюдениями и гипотетическим медианным значением M0 (которое равно 0 при использовании signrank (x) и m при использовании signrank (x, m)).
Поэтому я думаю, что результат
signrank(x) и signrank(-x) должен быть разным. Но я уже сталкивался с некоторыми примерами, и я получаю одно и то же значение статистики ранга знака для x и -x.Как определяется статистика ранга со знаком в функции signrank Matlab?
Спасибо!
2 ответов:
Спасибо! Фактически статистика-это минимум между суммой рангов положительных различий и суммой рангов отрицательных различий. Я не понимаю, почему для этого требуется минимум. А ты знаешь?
Интересный вопрос, и спасибо за ссылку на код matlab. Да, это заставило меня почесать голову в течение нескольких минут, они, конечно, делают это кудрявым способом, предположительно для вычислительной эффективности. Удивительно, однако он действительно делает подписанный ранг, точно как было опубликовано ранее.
Вот как это работает (я вставил соответствующие несколько строк кода ниже Для справки).
ОбозначимP Как сумму всех положительных рангов (рангов, соответствующих положительным баллам), N Как сумму всех отрицательных рангов и, наконец, A как абсолютную сумму всех рангов. Ясно A = P + N (кстати. Обратите внимание, что то, что я обозначил как "N", является переменной "w" в фактическом коде.)
По арифметическому ряду, A = n*(n+1)/2. Итак, как вы сказали, строка min (w, (n+1)*n/2-w) фактически возвращает либо N, либо P (=A-N), в зависимости от того, что является минимальным.
Но теперь взгляните на последнюю строку кода, которую я вставил ниже. Таким образом, числитель равен min (N, P) - A/2. Теперь, если N является минимумом, то это возвращает N-(P+N)/2, что равно -(P - N)/2.Однако если P является минимумом, то это возвращает P-(P+N)/2 , который равняется -(N-P)/2.
Так что в любом случае это действительно является возвращением (отрицательной) абсолютной разности положительных и отрицательных ранговых сумм, точно как ранее было указано в упрощенной форме,
| Sum{ sign(Xi) rank(|Xi|) } |Кстати. Причина, по которой они используют отрицательную абсолютную разницу, заключается просто в том, что это избавляет их от необходимости находить дополнительный cfd позже.
Фрагмент кода signrank для справки.
w = sum(tierank(neg)); w = min(w, n*(n+1)/2-w); ... z = (w-n*(n+1)/4) / sqrt((n*(n+1)*(2*n+1) - tieadj)/24);Редактировать:
Почему она принимает абсолютное значение? Для того чтобы z имел асимптотическую нормальность, разве не должно быть взято абсолютное значение?
Мое понимание этого таково, что это не совсем нормально, это "свернуто нормально". То есть сложить в положительную полуплоскость. Вот почему p-значение вычисляется как,
p = 2*(1 - normcdf(z,0,1));(в сторону). Я знаю, что в реальном коде они используют отрицание "z", чтобы не требовать cdf-дополнения там, но это одно и то же.
Значение p умножается на два, чтобы учесть сложенное распределение. Удобно, что это также работает точно так же, как называть его" двухвостым " значением p.
Подумайте на мгновение о том, что произошло бы, если бы мы не использовали здесь абсолютное значение. Скажем, мы взяли P-N и N было больше P. В этом случае значение p, 2*(1-normcdf (z,0,1)), будет оценивать больше , чем один, так что это не может быть хорошей идеей. :)
Почему функция MATLAB signrank возвращает одни и те же знаковые Ранговые статистические значения при переворачивании знаков точек данных?
Поскольку единственный аргумент формы signrank, например singrank (x), возвращает вероятность (pval), что нулевая гипотеза, Prob(x>0)==0.5, это правильно.
И по симметрии вероятность того, что Prob(x>0)==0.5 является правильным точно так же, как вероятность того, что Prob(x есть правильный.
Обновление:
"Спасибо! Мой вопрос: даже если x не симметричен относительно 0, signrank() все равно возвращает одно и то же статистическое значение как для x, так и для-x". - Tim
Да, я понимаю вашу точку зрения на путаницу, симметрия не совсем очевидна. Результат signrank () по существу является оценкой вероятности того, что медиана (x)==0. Итак, представьте, что мы сделали x асимметричными, скажем, добавив по одному к каждому элементу. Теперь "масса" перемещается так это больше в положительной половине числовой линии, поэтому signrank (x) вернет очень малую(близкую к нулю) вероятность того, что медиана (x)==0. Надеюсь, вы можете видеть, однако, что это в равной степени верно, что теперь - x сдвинут так, что его масса больше в отрицательной половине числовой линии, и поэтому также маловероятно, что медиана (- x)==0. Надеюсь, это поможет.Кстати. Фактическая (промежуточная) статистика, используемая для нахождения этой вероятности, такова:
| Sum{ sign(Xi) rank(|Xi|) } |Вы можете видеть, что это полностью симметричный для -X.
Comments