LINUX.ORG.RU

Магам R - odds ratio

 ,


0

1

Необходимо посчитать отношение шансов в таблицах 3*3. В R для этого есть функция loddsratio (пакет vcd) но на считает «локальное» отношение шансов. То есть для столбцов a,b,c будет посчитано соотношение a:b и b:c. Конечно a:c можно вывести из соотношений a:b и b:c перемножив их (в случае логарифмов - сложив), но тут возникает вопрос расчета p-value, ведь отношения a:b и b:c могут быть недостоверными, а a:c - достоверным.
Опробовал две идеи: 1) разделить матрицу 3:3 на четыре 2:2 а потом склеить результат. 2) используя параметр ref функции loddsratio явно указать считать шансы сначала относительно первого столбца, потом второго и тд и отобрать все значимые различия по p-value.
А есть более корректные способы? Функцию для расчета шансов конечно можно написать самому, но не понятно как в таком случае считать p-value.

★★☆☆☆

Кажется там проблемы с независимостью возникают.

И, собственно, какая нулевая и альтернативная гипотеза? Может пермутации могут помочь?

Davidov ★★★★
()
Последнее исправление: Davidov (всего исправлений: 1)

Если хочется проверить все vs все, то можно попробовать байесовские сети с дискретными переменными. Они могут восстановить граф зависимостей, и у них нет проблем с переобучением, вроде.

Davidov ★★★★
()
Ответ на: комментарий от Davidov

Нулевая гипотеза - OR равен единице, то есть равномерное распределение.
Столбцы таблицы - генотипы (AA, AB, BB), строки - признаки (болезнь, отсутствие болезни и контроль). В случае таблицы 2*2, как я понял, все сводится к тесту Фишера.
Можно было бы сократить таблицу до (A,B)*(больной,здоровый), но так теряется информация.

DNA_Seq ★★☆☆☆
() автор топика
Ответ на: комментарий от DNA_Seq

Но в целом для таблиц смежности ещё есть chi^2. И в R fisher.test понимает таблицы больше, чем 2x2.

Job <- matrix(c(1,2,1,0, 3,3,6,1, 10,10,14,9, 6,7,12,11), 4, 4,
      dimnames = list(income = c("< 15k", "15-25k", "25-40k", "> 40k"),
                      satisfaction = c("VeryD", "LittleD", "ModerateS", "VeryS")))
fisher.test(Job)

Davidov ★★★★
()
Последнее исправление: Davidov (всего исправлений: 1)
Ответ на: комментарий от Davidov

Контроль это внешняя группа. Например, пациенты разделятся на тех у кого быстро и медленно заживал перелом, а контроль - те кто кости не ломали.

DNA_Seq ★★☆☆☆
() автор топика
Ответ на: комментарий от DNA_Seq

Тестом проверяется независимость столбцов и строк. То есть сначала посчитать p-value, а для тех, что значимы, посчитать odds ratio так, как хочется. Не забыв при этом какой-нибудь FDR.

Если хочется более тонкие зависимости смотреть, то см. про байесовские сети. Radhakrishnan Nagarajan, Marco Scutari, Sophie Lèbre auth. Bayesian Networks in R with Applications in Systems Biology. Там описывается дискретный случай в частности.

Davidov ★★★★
()
Последнее исправление: Davidov (всего исправлений: 1)
Ответ на: комментарий от Davidov

В общем написал функцию для матриц 3x3, при желании можно обобщить на матрицы произвольного размера. Мою задачу в принципе решает.

odds3<-function(x){
    idx<-list(1:2,2:3,c(1,3))
    OR<-sapply(idx, function(i) sapply(idx, function(j) fisher.test(x[i,j])$estimate))
    p.value<-sapply(idx, function(i) sapply(idx, function(j) fisher.test(x[i,j])$p.value))
    dimnames(OR)<-dimnames(p.value)<-dimnames(x)
    return(list(OR = OR, p.value = p.value))
}

PS За ссылку спасибо.

DNA_Seq ★★☆☆☆
() автор топика
Ответ на: комментарий от DNA_Seq

Ну, блин. Это же не p-value никакой, потому что нет независимости. :( Нельзя так считать.

Если не веришь, попробуй симулировать независимые события и посмотреть распределение. Должно быть равномерное между 0 и 1, а будет перекошено в сторону нуля.

Будет куча ошибок первого рода, вот это все.

Davidov ★★★★
()
Ответ на: комментарий от Davidov

Этого я в принципе и опасался в стартовом посте. В случае генотипов еще и само распределение не случайное, а по закону Харди-Вайнберга если нет отклонений.
PS Глянул на результаты - p.value меньше 0.05 между AA и BB лишь в одной таблице из десяти. Понятно почему авторы не стали считать OR сами, а вывалили таблицы.

DNA_Seq ★★☆☆☆
() автор топика

То есть для столбцов a,b,c будет посчитано соотношение a:b и b:c. Конечно a:c можно вывести из соотношений a:b и b:c перемножив их (в случае логарифмов - сложив), но тут возникает вопрос расчета p-value, ведь отношения a:b и b:c могут быть недостоверными, а a:c - достоверным.

Ну и организуйте перевыборки с построением CDF для интересующих статистик. По виду распределений можно решить какова степень уверенности в их существовании.

psv1967 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.