Форум врачей-аспирантов

Здравствуйте, гость ( Вход | Регистрация )

5 страниц V   1 2 3 > »   
Добавить ответ в эту темуОткрыть тему
> Определение чувствительности и специфичности комбинации маркеров
Zaycho
сообщение 2.08.2012 - 14:20
Сообщение #1





Группа: Пользователи
Сообщений: 10
Регистрация: 2.08.2012
Пользователь №: 24035



Здравствуйте!

Есть задача определить диагностическую ценность ряда маркеров (допустим, А, В и С) и их комбинаций в диагностике некоторого заболевания.
Я расчитал все параметры (чувствительность, специфичность, PPV, NPV, LR) и построил в SPSS ROC-кривые отдельно для А, В и С.
Как теперь сделать то же самое для комбинаций этих маркеров, допустим, А+В и В+С? Где копать?

Заранее огромное спасибо!
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
p2004r
сообщение 2.08.2012 - 14:24
Сообщение #2





Группа: Пользователи
Сообщений: 1091
Регистрация: 26.08.2010
Пользователь №: 22699



Цитата(Zaycho @ 2.08.2012 - 14:20) *
Здравствуйте!

Есть задача определить диагностическую ценность ряда маркеров (допустим, А, В и С) и их комбинаций в диагностике некоторого заболевания.
Я расчитал все параметры (чувствительность, специфичность, PPV, NPV, LR) и построил в SPSS ROC-кривые отдельно для А, В и С.
Как теперь сделать то же самое для комбинаций этих маркеров, допустим, А+В и В+С? Где копать?

Заранее огромное спасибо!


можно рандомфорест применить и вклад маркеров по его результатам определить. можно логистическую регрессию для полной модели построить и для комбинаций. модели сравнивать через сравнение ROC.


Signature
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
Zaycho
сообщение 2.08.2012 - 14:37
Сообщение #3





Группа: Пользователи
Сообщений: 10
Регистрация: 2.08.2012
Пользователь №: 24035



Цитата(p2004r @ 2.08.2012 - 15:24) *
можно рандомфорест применить и вклад маркеров по его результатам определить. можно логистическую регрессию для полной модели построить и для комбинаций. модели сравнивать через сравнение ROC.


Big thx за ответ, но я не такой великий спец в статистике - если не затруднит, можно чуть подробнее? Как построить логистическую регрессию для полной модели (как сгруппировать исходные данные?) В идеале - где это все в SPSS и/или Статистике? Ну а если с примером........ smile.gif))

Сообщение отредактировал Zaycho - 2.08.2012 - 14:40
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
p2004r
сообщение 2.08.2012 - 19:38
Сообщение #4





Группа: Пользователи
Сообщений: 1091
Регистрация: 26.08.2010
Пользователь №: 22699



Цитата(Zaycho @ 2.08.2012 - 14:37) *
Big thx за ответ, но я не такой великий спец в статистике - если не затруднит, можно чуть подробнее? Как построить логистическую регрессию для полной модели (как сгруппировать исходные данные?) В идеале - где это все в SPSS и/или Статистике? Ну а если с примером........ smile.gif))


могу в R показать smile.gif, но для полного примера нужны данные smile.gif)

как понимаю есть эксперимент или наблюдение в котором каждому случаю наличия-отсутствия заболевания соответствует строка наличия-отсутствия признаков? если случаи наблюдения-эксперимента не представляют сочетания наличия-отсутствия признаков то естественно ничего хорошего скорее всего не получится.

на такую таблицу (назовем её table) легко натравить randomForest

Код
rf <- randomForest(Болезнь ~ ., data=table,
                             importance=TRUE,
                             proximity=TRUE)


После этого смотрим вклад признаков

Код
varImpPlot(rf)




Signature
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
Zaycho
сообщение 2.08.2012 - 21:55
Сообщение #5





Группа: Пользователи
Сообщений: 10
Регистрация: 2.08.2012
Пользователь №: 24035



А можно я все-таки покажу исходные данные?
А, В и С - непрерывные величины
Выжил/умер - принимает только 2 значения smile.gif)
Прикрепленные файлы
Прикрепленный файл  Исходник.zip ( 15,51 килобайт ) Кол-во скачиваний: 323
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
TheThing
сообщение 3.08.2012 - 08:55
Сообщение #6





Группа: Пользователи
Сообщений: 116
Регистрация: 20.02.2011
Пользователь №: 23251



Цитата(Zaycho @ 2.08.2012 - 14:20) *
Здравствуйте!

Есть задача определить диагностическую ценность ряда маркеров (допустим, А, В и С) и их комбинаций в диагностике некоторого заболевания.
Я расчитал все параметры (чувствительность, специфичность, PPV, NPV, LR) и построил в SPSS ROC-кривые отдельно для А, В и С.
Как теперь сделать то же самое для комбинаций этих маркеров, допустим, А+В и В+С? Где копать?

Заранее огромное спасибо!


Если Вы лучше знакомы с СПСС, постройте модель с помощью логистической регрессии. Заходите в Analyze-Regression-Binary. Факторы А,Б,С перемещаете в Covariates (independent variables), наличие/отсутсвие заболевания в Dependent variable. Закладка Categorical Вам не нужна, поскольку, как я понял, предикторы все у вас количественные. В закладке Save выбираете сохранить вероятности группы (group probabilities). В опциях 95% ДИ, тест Хосмера-Лемешова и все остальное по-желанию. Нажимаете ОК, строится модель, которая включает в себя набор всех предикторов А,Б,С, рассчитанные коэффициенты, р-значения, ДИ и т.д. ROC-кривая строится с помощью меню ROC-curve, где в Test-variable Вы закидываете рассчитанные групповые вероятности, а в State - указываете код, которым у Вас закодировано состояние больного человека (1 например).

Построенная логистическая модель может предсказывать аддитивный (суммационный) эффект всех факторов А,Б,С на риск развития заболевания. То есть, все факторы представлены главными эффектами (main effects) - не учитывается возможность взаимодействия фактора А например с фактором Б. Если Вас такое устраивает, можно на этом остановиться. А если Вам интересно посмотреть взаимодействует ли фактор А с фактором Б (присутствует ли синергетический эффект например), нужно построить модель, которая учитывала бы взаимодействие факторов (для этого используется кнопочка a*b в логистической регрессии). Интерпретировать результаты будет намного сложнее, могу посоветовать хорошую книгу на эту тему от Sage publishing - Interaction effects (terms) in logistic regression.

Если нравятся случайные леса, установите SPSS Clementine или используйте код, который привел p2004r smile.gif

Сообщение отредактировал TheThing - 3.08.2012 - 08:56
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
p2004r
сообщение 3.08.2012 - 12:04
Сообщение #7





Группа: Пользователи
Сообщений: 1091
Регистрация: 26.08.2010
Пользователь №: 22699



Цитата(Zaycho @ 2.08.2012 - 21:55) *
А можно я все-таки покажу исходные данные?
А, В и С - непрерывные величины
Выжил/умер - принимает только 2 значения smile.gif)


таблицу чуток пришлось отредактировать от пояснений

Код
rf<-randomForest(data.na[,2:4],factor(data.na$выжил.умер), proximity=TRUE)

> rf

Call:
randomForest(x = data.na[, 2:4], y = factor(data.na$выжил.умер),      proximity = TRUE)
               Type of random forest: classification
                     Number of trees: 500
No. of variables tried at each split: 1

        OOB estimate of  error rate: 31.43%
Confusion matrix:
   0  1 class.error
0 22 11   0.3333333
1 11 26   0.2972973


> round(importance(rf), 2)
  MeanDecreaseGini
A            10.93
B            12.09
C            10.97

> MDSplot(rf, factor(data.na$выжил.умер), k=2, palette=c(1, 2), pch=data.na$выжил.умер)


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

Эскизы прикрепленных изображений
Прикрепленное изображение
 


Signature
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
Zaycho
сообщение 3.08.2012 - 14:27
Сообщение #8





Группа: Пользователи
Сообщений: 10
Регистрация: 2.08.2012
Пользователь №: 24035



Огромное спасибо за разъяснения! А можете теперь ткнуть пальцем ламеру, где здесь групповые вероятности, которые можно подставить в ROC-анализ?


Прикрепленные файлы
Прикрепленный файл  Результат.zip ( 12,6 килобайт ) Кол-во скачиваний: 283
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
p2004r
сообщение 3.08.2012 - 14:59
Сообщение #9





Группа: Пользователи
Сообщений: 1091
Регистрация: 26.08.2010
Пользователь №: 22699



Цитата(Zaycho @ 3.08.2012 - 14:27) *
Огромное спасибо за разъяснения! А можете теперь ткнуть пальцем ламеру, где здесь групповые вероятности, которые можно подставить в ROC-анализ?


для первого датасета

Код
> data.frame(votes=rf$votes, alive=data.na$выжил.умер, n=data.na$N )
      votes.0    votes.1 alive  n
1  0.76243094 0.23756906     0  1
2  0.80203046 0.19796954     1  2
3  0.72067039 0.27932961     0  3
4  0.17486339 0.82513661     0  4
5  0.74054054 0.25945946     0  5
6  0.82352941 0.17647059     1  6
7  0.37055838 0.62944162     1  7
8  0.80213904 0.19786096     1  8
9  0.27472527 0.72527473     1  9
10 0.70322581 0.29677419     0 10
11 0.60215054 0.39784946     0 11
12 0.39512195 0.60487805     1 12
13 0.83815029 0.16184971     0 13
14 0.89893617 0.10106383     0 14
15 0.40101523 0.59898477     0 15
16 0.79081633 0.20918367     0 16
17 0.68333333 0.31666667     0 17
18 0.67875648 0.32124352     0 18
19 0.75126904 0.24873096     0 19
20 0.91847826 0.08152174     1 20
21 0.61931818 0.38068182     1 21
22 0.35955056 0.64044944     1 22
23 0.95480226 0.04519774     0 23
24 0.61271676 0.38728324     0 24
25 0.84574468 0.15425532     0 25
26 0.91256831 0.08743169     0 26
27 0.43930636 0.56069364     1 27
28 0.22857143 0.77142857     1 28
29 0.15346535 0.84653465     1 29
31 0.12626263 0.87373737     0 31
33 0.29444444 0.70555556     0 33
34 0.28571429 0.71428571     1 34
35 0.07692308 0.92307692     1 35
36 0.04216867 0.95783133     1 36
37 0.59259259 0.40740741     1 37
38 0.63725490 0.36274510     1 38
39 0.38596491 0.61403509     1 39
40 0.41340782 0.58659218     0 40
41 0.08074534 0.91925466     1 41
42 0.39779006 0.60220994     0 42
43 0.31428571 0.68571429     1 43
44 0.16666667 0.83333333     1 44
45 0.38636364 0.61363636     0 45
46 0.24043716 0.75956284     0 46
47 0.66883117 0.33116883     0 47
48 0.69540230 0.30459770     0 48
49 0.60679612 0.39320388     0 49
50 0.45180723 0.54819277     1 50
51 0.08152174 0.91847826     1 51
52 0.09696970 0.90303030     1 52
53 0.20329670 0.79670330     0 53
54 0.30898876 0.69101124     1 54
55 0.63783784 0.36216216     1 55
56 0.58285714 0.41714286     0 56
57 0.09826590 0.90173410     1 57
58 0.08045977 0.91954023     1 58
59 0.07608696 0.92391304     1 59
60 0.30508475 0.69491525     0 60
61 0.40000000 0.60000000     1 61
62 0.28342246 0.71657754     1 62
63 0.63068182 0.36931818     1 63
64 0.58252427 0.41747573     1 64
65 0.87730061 0.12269939     1 65
66 0.08982036 0.91017964     1 66
67 0.36898396 0.63101604     1 67
68 0.72881356 0.27118644     0 68
69 0.71022727 0.28977273     0 69
70 0.74033149 0.25966851     0 70
71 0.37158470 0.62841530     1 71
72 0.47849462 0.52150538     0 72


Signature
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
Zaycho
сообщение 3.08.2012 - 16:05
Сообщение #10





Группа: Пользователи
Сообщений: 10
Регистрация: 2.08.2012
Пользователь №: 24035



Глубокоуважаемый p2004r, правильно ли я понял, что первый столбец цифр с большим количеством знаков после запятой - это для А+В, а второй столбец - для В+С?
Если да, то можно то же самое для А+С?
СПАСИБО!
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
p2004r
сообщение 3.08.2012 - 16:30
Сообщение #11





Группа: Пользователи
Сообщений: 1091
Регистрация: 26.08.2010
Пользователь №: 22699



Цитата(Zaycho @ 3.08.2012 - 16:05) *
Глубокоуважаемый p2004r, правильно ли я понял, что первый столбец цифр с большим количеством знаков после запятой - это для А+В, а второй столбец - для В+С?
Если да, то можно то же самое для А+С?
СПАСИБО!


нет, не так.

первые два столбца это вероятность для 0, и вероятность для 1 исхода (они зеркальны). нелинейная модель включает в себя все три исходных фактора.

Ваша группа неоднородна. Надо смотреть что из исходных факторов на что влияет. Иными словами --- какой вклад в два фактора про которых я написал в предыдущем посте (группообразующий и повышающий вероятность неблагоприятного исхода).


Signature
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
Zaycho
сообщение 3.08.2012 - 16:38
Сообщение #12





Группа: Пользователи
Сообщений: 10
Регистрация: 2.08.2012
Пользователь №: 24035



Я вконец запутался. А,В и С - это параметры, не влияющие на наступление исхода. А и В - это результаты биохимических тестов, С - оценка тяжести состояния по интегральной шкале. Все три параметра выше при неблагоприятном исходе. Определенный уровень каждого из них с известной чувствительностью и специфичностью является предиктором неблагоприятного исхода. Нас не устраивает их недостаточная прогностическая ценность по отдельности. Как расчитать эти показатели для комбинаций - я так и не понял...........
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
p2004r
сообщение 3.08.2012 - 19:29
Сообщение #13





Группа: Пользователи
Сообщений: 1091
Регистрация: 26.08.2010
Пользователь №: 22699



Цитата(Zaycho @ 3.08.2012 - 16:38) *
Я вконец запутался. А,В и С - это параметры, не влияющие на наступление исхода. А и В - это результаты биохимических тестов, С - оценка тяжести состояния по интегральной шкале. Все три параметра выше при неблагоприятном исходе. Определенный уровень каждого из них с известной чувствительностью и специфичностью является предиктором неблагоприятного исхода. Нас не устраивает их недостаточная прогностическая ценность по отдельности. Как расчитать эти показатели для комбинаций - я так и не понял...........


B имеет несколько больший вес чем A и C. Но сама картина существенно нелинейна. Имеют место две группы --- 1я с более высоким уровнем смертности и низкой прогнозируемостью исхода, и 2я с низким уровнем смертности и визуально более предсказуемым исходом. За разбиение на эти две группы отвечает некая комбинация ABC (её надо проанализировать). В каждой из этих групп действует некий дополнительный фактор определяющий смертность, причем действует количественно разно. Что входит в этот фактор тоже нужно проанализировать.

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


Signature
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
TheThing
сообщение 3.08.2012 - 20:07
Сообщение #14





Группа: Пользователи
Сообщений: 116
Регистрация: 20.02.2011
Пользователь №: 23251



Согласно моим расчетам лишь фактор С (тяжесть состояния больного) статистически значимо ассоциирован с риском смерти (повышенный риск). Первый столбец цифр - групповые вероятности факторов А+Б+С, второй столбец - вероятности А+Б, третий столбец - А+С, четвертый - Б+С.

0,34015 0,40888 0,34989 0,39730
0,49263 0,50523 0,38566 0,55469
0,42836 0,26548 0,39794 0,62781
0,59121 0,36225 0,60615 0,70132
0,25785 0,31131 0,25945 0,36786
0,43051 0,43519 0,44927 0,47932
0,57229 0,30174 0,58240 0,72457
0,25236 0,38984 0,23751 0,31511
0,48796 0,40442 0,50717 0,56495
0,28626 0,39493 0,29287 0,34319
0,49658 0,37706 0,51123 0,59569
0,37246 0,31495 0,38091 0,50680
0,12237 0,25227 0,11330 0,21316
0,12748 0,31118 0,10785 0,19567
0,53328 0,46286 0,54719 0,57564
0,52075 0,45196 0,49164 0,58775
0,49832 0,42483 0,47445 0,58010
0,36305 0,40782 0,37485 0,42414
0,45776 0,43172 0,47040 0,51505
0,36475 0,42263 0,34469 0,43039
0,57694 0,45255 0,59446 0,62775
0,76129 0,46953 0,75743 0,81078
0,14571 0,39503 0,14859 0,16921
0,13010 0,47251 0,11741 0,13051
0,18435 0,41960 0,15968 0,21998
0,11134 0,39310 0,10980 0,12896
0,86965 0,82693 0,66838 0,83274
0,72274 0,61052 0,74657 0,68379
0,88778 0,82411 0,75763 0,84437
0,86492
0,79245 0,63566 0,81702 0,75099
0,74476
0,35380 0,73615 0,40006 0,19948
0,83108 0,69577 0,83671 0,77659
0,73978 0,64728 0,77173 0,67595
0,67489 0,61222 0,70833 0,62232
0,79319 0,67501 0,82141 0,72640
0,69415 0,70943 0,72958 0,57129
0,70840 0,70052 0,74604 0,59504
0,73655 0,79736 0,77758 0,54065
0,58925 0,63310 0,62808 0,50647
0,55043 0,71285 0,58524 0,40279
0,69639 0,67085 0,71908 0,61115
0,88188 0,67862 0,89790 0,84678
0,46330 0,67591 0,50338 0,33916
0,49648 0,53330 0,52366 0,48054
0,74687 0,58398 0,77340 0,72615
0,47468 0,57482 0,49834 0,42908
0,54642 0,51868 0,56019 0,55171
0,34062 0,60430 0,36285 0,27085
0,73011 0,55340 0,75691 0,72478
0,76456 0,50137 0,78571 0,78991
0,60758 0,46409 0,63096 0,64996
0,66616 0,59398 0,69391 0,62750
0,76595 0,57299 0,74402 0,77482
0,53226 0,56143 0,52938 0,51339
0,65210 0,57569 0,68407 0,62190
0,55687 0,54630 0,58823 0,53632
0,82779 0,56820 0,84837 0,82598
0,63646 0,52353 0,63253 0,65455
0,25158 0,48530 0,26149 0,24793
0,76566 0,53693 0,78297 0,77582
0,66544 0,55563 0,69248 0,65225
0,35473 0,50851 0,36883 0,34657
0,47536 0,54117 0,50240 0,45183
0,68043 0,58309 0,71167 0,64929
0,32747 0,47152 0,34773 0,33673
0,12440 0,56551 0,13399 0,09099
0,74684 0,58395 0,77340 0,72612
0,47667 0,58016 0,50408 0,42592
0,32795 0,59106 0,35756 0,26315
0,56675 0,64000 0,45425 0,54231

Коэффициент конкордации около 65%, что в принципе совпадает с классификационной способностью модели, полученной с помощью случайного леса (100 - OOB error = 100 - 31,43 = 68,57%).

Сообщение отредактировал TheThing - 3.08.2012 - 20:12
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
p2004r
сообщение 3.08.2012 - 21:12
Сообщение #15





Группа: Пользователи
Сообщений: 1091
Регистрация: 26.08.2010
Пользователь №: 22699



Цитата(TheThing @ 3.08.2012 - 20:07) *
Согласно моим расчетам лишь фактор С (тяжесть состояния больного) статистически значимо ассоциирован с риском смерти (повышенный риск). Первый столбец цифр - групповые вероятности факторов А+Б+С, второй столбец - вероятности А+Б, третий столбец - А+С, четвертый - Б+С.



Код
plot(cmdscale(dist(rf$proximity), k=2),
       col=c("red","green")[factor(data.na$выжил.умер)],
       cex=c(seq(from=1,
                       to=1.8,
                       along.with=levels(factor(data.na$A))))[factor(data.na$A)])

plot(cmdscale(dist(rf$proximity), k=2),
       col=c("red","green")[factor(data.na$выжил.умер)],
       cex=c(seq(from=1,
                       to=1.8,
                       along.with=levels(factor(data.na$B))))[factor(data.na$B)])

plot(cmdscale(dist(rf$proximity), k=2),
       col=c("red","green")[factor(data.na$выжил.умер)],
       cex=c(seq(from=1,
                       to=1.8,
                       along.with=levels(factor(data.na$C))))[factor(data.na$C)])


Согласно трем графикам (по A, B, и C размер кругов) в пространстве mds полученном из proximity рандомфореста. Если и можно сомневаться в связи какого то фактора так это C smile.gif.

Ну а разделяет группы больных B. Это очевидно из графика. Его маленькое значение во второй группе наступает ступенчато и ведет к низкому риску летального исхода. И этот фактор по мнению рандом фореста самый весомый.

Два остальных фактора --- маленькие значения A в обоих группах у выздоровевших. С ведет себя аналогично A но менее выражена разница у противоположных исходов.

Сообщение отредактировал p2004r - 3.08.2012 - 21:19
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
 


Signature
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 

5 страниц V   1 2 3 > » 
Добавить ответ в эту темуОткрыть тему