* Кривые ROC и индекс Юдена (Youden's Index). * (ROC - Receiver Operating Characteristic - рабочая характеристика приёмника) Кривые ROC используются для определения прогностических или классификационных способностей моделей - примеч. перев. * Подробнее о кривых ROC можно почитать в интернете на русском языке: http://www.basegroup.ru/regression/logistic.htm . * Данный синтаксис - "Кривые ROC и индекс Юдена" также вычисляет отношения правдоподобия и расстояния Кульбака-Лейблера (Likelihood Ratios and Kullback-Leibler distances, см. статью Wen-Chung Lee) для каждой точки отсечения (cut-off point) кривой ROC. Исполнение кода требует наличия SPSS 12 или более поздних версий. * Код размещён в SPSSX-L 09.03.2004, автор: Marta Garcia-Granero. ******************************************************************** * НАЧАЛО СИНТАКСИСА *. * Кривые ROC: индекс Юдена, отношения правдоподобия для положительных и отрицательных результатов, расстояния Кульбака-Лейблера для характеристики потенциала теста по подтверждению и опровержению диагнозов. (все индексы являются "prevalence-free", т.е. основаны не на доле положительных случаев в выборке, а на отношениях шансов дать положительный или отрицательный результат среди истинно положительных и истинно отрицательных случаев. Т.е. могут использоваться для характеристики тестов на выборках с малыми долями положительных случаев (для диагностики редких заболеваний, например - примеч. перев.). Вычисления требуют, по крайней мере, 12-й версии SPSS. * По статье Wen-Chung Lee, Selecting diagnostic tests for ruling out or ruling in disease: the use of the Kullback-Leibler distance, Int J of Epidemiol 1999;28:521–5. * См. http://ije.oxfordjournals.org/cgi/content/abstract/28/3/521 на 27.10.2007 статья была в открытом доступе - примеч. перев. * Набор данных из учебника Hosmer & Lemeshow. Applied Logistic Regression (прикладная логистическая регрессия) *. DATA LIST FREE/ age chd (2 F8.0). BEGIN DATA 20 0 23 0 24 0 25 0 25 1 26 0 26 0 28 0 28 0 29 0 30 0 30 0 30 0 30 0 30 0 30 1 32 0 32 0 33 0 33 0 34 0 34 0 34 1 34 0 34 0 35 0 35 0 36 0 36 1 36 0 37 0 37 1 37 0 38 0 38 0 39 0 39 1 40 0 40 1 41 0 41 0 42 0 42 0 42 0 42 1 43 0 43 0 43 1 44 0 44 0 44 1 44 1 45 0 45 1 46 0 46 1 47 0 47 0 47 1 48 0 48 1 48 1 49 0 49 0 49 1 50 0 50 1 51 0 52 0 52 1 53 1 53 1 54 1 55 0 55 1 55 1 56 1 56 1 56 1 57 0 57 0 57 1 57 1 57 1 57 1 58 0 58 1 58 1 59 1 59 1 60 0 60 1 61 1 62 1 62 1 63 1 64 0 64 1 65 1 69 1 END DATA. VAR LABELS age 'Возраст в начале реабилитационного лечения' /chd 'Коронарная болезнь'. VALUE LABELS chd 0 'Здоров' 1 'Болен'. OMS SELECT TABLES /IF SUBTYPES=['Coordinates of the Curve'] /DESTINATION FORMAT=SAV OUTFILE='c:\\temp\\coordinates.sav' /COLUMNS SEQUENCE=[C1 C2 C3]. ROC age BY chd (1) /PLOT = CURVE(REFERENCE) /PRINT = SE COORDINATES /CRITERIA = CUTOFF(INCLUDE) TESTPOS(LARGE) DISTRIBUTION(FREE) CI(95) /MISSING = EXCLUDE . OMSEND. GET FILE='C:\\Temp\\coordinates.sav' /DROP= Command_ TO Var1. * Диагностические индексы *. COMPUTE youden = Sensitivity-@1Specificity . DO IF NOT(ANY(Sensitivity,0,1)) AND NOT(ANY(@1Specificity,0,1)). - COMPUTE lrp=Sensitivity/@1Specificity. - COMPUTE lrn=(1-Sensitivity)/(1-@1Specificity). - COMPUTE dgf=(1-@1Specificity)*LN(1/lrn)+@1Specificity*LN(1/lrp). - COMPUTE dfg=(1-Sensitivity)*LN(lrn)+Sensitivity*LN(lrp). END IF. EXECUTE . * Отчёт *. VARIABLE LABEL youden "Индекс Юдена (Youden's Index)" /lrp "Отношение правдоподобия для положительных результатов (Likelihood Ratio Pos. Test)" /lrn "Отношение правдоподобия для отрицательных результатов (Likelihood Ratio Neg. Test)" /dgf "Потенциал теста для опровержения диагноза (Kullback-Leibler dist. Rule-out D(g/f))" /dfg "Потенциал теста для подтверждения диагноза (Kullback-Leibler dist. Rule-in D(f/g))". FORMAT youden to dfg (F8.3). SUMMARIZE /TABLES=ALL /FORMAT=VALIDLIST NOCASENUM NOTOTAL /TITLE='Диагностические индексы, основанные на отношениях шансов (Prevalence-free Diagnostic Indexes)' /MISSING=VARIABLE /CELLS=NONE.