![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#1
|
|
Группа: Пользователи Сообщений: 15 Регистрация: 4.09.2013 Пользователь №: 25228 ![]() |
Добрый день, уважаемые коллеги. Подскажите пожалуйста, каким образом можно обработать результаты проведенного исследования.
Цель исследования заключалась в том, чтобы доказать, что в определенной больнице кодироание диагнозов по МКБ осуществляется некорректно. Для этого была выбрана группа интересующих нас диагнозов за последние два года, таким образом получилось что-то подобное: КодМКБ1 - 150 человек КодМКБ2 - 3 человека КодМКБ3 - 250 человек и т.д. Далее в течение трех месяцев детально обследовались люди, которые лежали в тот момент в стационаре, им ставился корректный диагноз, соответственно получился еще один ряд значений: КодМКБ1 - 0 человек КодМКБ2 - 20 человек и т.д. Можно ли сделать вывод на основании подобных данных о корректности кодировки диагноза за последние два года и если да, то каким образом провести анализ. |
|
![]() |
![]() |
![]()
Сообщение
#2
|
|
![]() Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 ![]() |
Добрый день, уважаемые коллеги. Подскажите пожалуйста, каким образом можно обработать результаты проведенного исследования. Цель исследования заключалась в том, чтобы доказать, что в определенной больнице кодироание диагнозов по МКБ осуществляется некорректно. Для этого была выбрана группа интересующих нас диагнозов за последние два года, таким образом получилось что-то подобное: КодМКБ1 - 150 человек КодМКБ2 - 3 человека КодМКБ3 - 250 человек и т.д. Далее в течение трех месяцев детально обследовались люди, которые лежали в тот момент в стационаре, им ставился корректный диагноз, соответственно получился еще один ряд значений: КодМКБ1 - 0 человек КодМКБ2 - 20 человек и т.д. Можно ли сделать вывод на основании подобных данных о корректности кодировки диагноза за последние два года и если да, то каким образом провести анализ. Группу по данным прошедших двух лет используете для генерации кучи случайных выборок размером в тестовую группу "углубленной постановки диагноза". Для всех диагнозов которые ставились в больнице за последние два года получаете доверительные границы, например посчитав куда попадают перцентили 2.5 и 98.5 для соответствующего диагноза. Конечно если углубленной диагностике принципиально подвергался ограниченный по диагнозу набор больных, то аналогично должен быть ограничен и набор исторических данных. Хотя здесь надо хорошо подумать, лучше что бы никакой цензуры по диагнозам не велось (иначе можно семплер правдоподобный не родить). ![]() |
|
![]() |
![]() |
![]()
Сообщение
#3
|
|
Группа: Пользователи Сообщений: 1218 Регистрация: 13.01.2008 Из: Челябинск Пользователь №: 4704 ![]() |
(У вас - зависимые выборки, т.к. один и тот же человек присутствует одновремнно в двух диагностиках. Критерии типа хи-квадрат здесь не уместны, зависимые частоты сравниваются критериями на симметрию. Суть примерно такова. Создаётся таблица, где по строкам располагаются диагнозы истинные, а в колонках - те же названия для диагнозов, но выставленных в клинике. Она заполняется абсолютными частотами (в штуках) конкретных случаев диагностики (не сгруппированных как у вас). Если клиника выставляет диагнозы со 100%-ной точностью, то все значения окажутся на диагонали такой таблицы. Если есть ошибки диагностики, то чем их больше, тем меньше будет значений на диагонали таблицы (истинный и выставленный диагнозы совпадают), и тем больше их станет над и под диагональю (истинный и выставленный диагнозы не совпадают). Такая таблица позволит наглядно отобразить какие диагнозы выставляются неправильно и с чем путаются. Обсчитать статистическую значимость различий в диагностике целиком по такой таблице можно с помощью критерия Бокера (Bowker's test of symmetry). Однако не будет ответа по отдельным диагнозам.
Далее можно разделить задачу на несколько - по числу конкретных диагнозов. Принцип организации таблиц - тот же, но только строк и столбцов -2: КодМКБ1 и Прочие коды - одна таблица, КодМКБ2 и Прочие коды - вторая таблица и т.д. Такие таблицы обычно анализируют критерием Мак-Немара (McNemar's test); материалов в сети много, обсуждался и на этом фуруме. Т.о. для статистического анализа выших данных нужны правильно заполненные таблицы. Если сведёте данные как надо - поищем программу. А по приведённым вами суммарным данным можно посчитать только % несоответствий по каждому диагнозу, нельзя даже сказать что с чем и как часто путается.) >p2004r. Идея рандомизационного теста понятна, но идея очень голая, её бы одеть в какой-нибудь код:) Задача понята мной неверно, пост не стираю, но беру в скобки. Сообщение отредактировал nokh - 25.04.2014 - 00:22 |
|
![]() |
![]() |
![]()
Сообщение
#4
|
|
Группа: Пользователи Сообщений: 902 Регистрация: 23.08.2010 Пользователь №: 22694 ![]() |
|
|
![]() |
![]() |
![]()
Сообщение
#5
|
|
![]() Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 ![]() |
>p2004r. Идея рандомизационного теста понятна, но идея очень голая, её бы одеть в какой-нибудь код:) Пусть за два года получили 10 диагнозов A , 50 B, 150 C. Код > > data <- factor(c(rep("A", 10), ## исходные данные за два года rep("B", 50), rep("C", 150))) > apply(replicate(10000, ## число перевыборок из исходной совокупности table(sample(data, ## исходная совокупность за два года 30))), ## размер контрольной выборки 1, ## считать по строкам quantile, probs = c(2.5, 50, 98.5)/100) ## считать на указанные перцентили A B C 2.5% 0 3 17 50% 1 7 21 98.5% 4 12 26 чёртова табуляция ![]() По сути дела quantile() считают по строчкам вот такого результата перевыборок: Код > replicate(10, table(sample(data, 30))) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] A 2 1 2 2 3 1 0 1 0 3 B 11 6 2 10 7 7 9 7 6 8 C 17 23 26 18 20 22 21 22 24 19 PS опять 98.5 написал ![]() ![]() PPS надо приучить себя к практике писать 100-5/2 PPPS у sample() пропустил ключ replace = TRUE Сообщение отредактировал p2004r - 24.04.2014 - 10:21 ![]() |
|
![]() |
![]() |
![]()
Сообщение
#6
|
|
![]() Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 ![]() |
У вас - зависимые выборки, т.к. один и тот же человек присутствует одновремнно в двух диагностиках. Критерии типа хи-квадрат здесь не уместны, зависимые частоты Они не смогут такие данные получить, никто не будет "прилюдно" ставить окончательный диагноз. А ретроспективу тут даже патологоанатом не обеспечит ![]() ![]() |
|
![]() |
![]() |
![]()
Сообщение
#7
|
|
Группа: Пользователи Сообщений: 15 Регистрация: 4.09.2013 Пользователь №: 25228 ![]() |
|
|
![]() |
![]() |
![]()
Сообщение
#8
|
|
Группа: Пользователи Сообщений: 1218 Регистрация: 13.01.2008 Из: Челябинск Пользователь №: 4704 ![]() |
Они не смогут такие данные получить, никто не будет "прилюдно" ставить окончательный диагноз. А ретроспективу тут даже патологоанатом не обеспечит ![]() (Не согласен. Пока не будет построена большая таблица именно так, как я расписал выше - никаких выводов о том что с чем путается и насколько они сделать не смогут. И я думал о рандомизации применительно именно к такой таблице. Она имела бы преимущество перед тестами Бокера, Максвела и т.п., т.к. не опиралась бы на известные распределения. Ну а, собственно, грамотный статистический анализ никаком образом не подразумевает прилюдного оглашения его результатов. Должны быть сделаны обоснованные выводы и приняты обоснованные управленческие решения. Можно по-тихому ![]() Задача понята мной неверно, пост не стираю, но беру в скобки. Сообщение отредактировал nokh - 25.04.2014 - 00:22 |
|
![]() |
![]() |
![]()
Сообщение
#9
|
|
![]() Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 ![]() |
Не согласен. Пока не будет построена большая таблица именно так, как я расписал выше - никаких выводов о том что с чем путается и насколько они сделать не смогут. И я думал о рандомизации применительно именно к такой таблице. Она имела бы преимущество перед тестами Бокера, Максвела и т.п., т.к. не опиралась бы на известные распределения. Ну а, собственно, грамотный статистический анализ никаком образом не подразумевает прилюдного оглашения его результатов. Должны быть сделаны обоснованные выводы и приняты обоснованные управленческие решения. Можно по-тихому ![]() это выливается в дублирование всей диагностики в больнице + (такое нельзя спрятать) полный паралич выставления окончательных диагнозов (думаю всё будет выноситься консилиумами после 12 последовательных консультаций с дообследованиями ![]() ну и смотрите какая моральная дилемма --- выставляют диагноз и мы знаем что он "не правильный".... его скрыть невозможно, иначе это эксперименты над людьми. ![]() |
|
![]() |
![]() |
![]()
Сообщение
#10
|
|
Группа: Пользователи Сообщений: 1218 Регистрация: 13.01.2008 Из: Челябинск Пользователь №: 4704 ![]() |
Что-то я затупил! Прошу прощения!
![]() Сообщение отредактировал nokh - 25.04.2014 - 00:19 |
|
![]() |
![]() |
![]()
Сообщение
#11
|
|
![]() Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 ![]() |
Что-то я затупил! Прошу прощения! ![]() ну тогда, я бы лучше еще дополнительно "разности" и "суммы" построил бутстрепом при выпадении чего то из доверительного интервала сразу станет ясно с чем проблемы. Код data.boot <- replicate(10000, ## число перевыборок из исходной совокупности
table(sample(data, ## исходная совокупность за два года 30, ## размер контрольной выборки replace = TRUE ))) res.delta <- apply(sapply(1:ncol(data.boot), function(i) combn(data.boot[,i], 2, FUN = function(n) n[1]-n[2])), 1, quantile, probs = c(5/2, 50, 100-5/2)/100) ## считать на указанные перцентили colnames(res.delta) <- combn(c("A","B","C"),2, function(n) paste0(n[1],n[2])) res.sum <- apply(sapply(1:ncol(data.boot), function(i) combn(data.boot[,i], 2, FUN = function(n) n[1]+n[2])), 1, quantile, probs = c(5/2, 50, 100-5/2)/100) ## считать на указанные перцентили colnames(res.sum) <- combn(c("A","B","C"),2, function(n) paste0(n[1],n[2])) > res.delta AB AC BC 2.5% -11 -26 -23 50% -6 -20 -14 97.5% -1 -14 -5 > res.sum AB AC BC 2.5% 4 18 26 50% 8 23 29 97.5% 14 27 30 Сообщение отредактировал p2004r - 25.04.2014 - 11:01 ![]() |
|
![]() |
![]() |
![]()
Сообщение
#12
|
|
![]() Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 ![]() |
Что-то я затупил! Прошу прощения! ![]() Или можно сразу смотреть на результат эксперимента вот в таком пространстве помещая туда "результат проверки-инспекции" с помощью predict() Пространство отражает факт что три показателя являются фиксированной суммой. и число степеней свободы в данном случае 2. Если случай смеси 3х компонент можно легко отразить на стандартном графике смеси, то если "диагнозов" больше трех (ну и "контрольные выборки" разного размера), то удобнее смотреть в PCA (мы увидим "гиперпирамиду" перевыборок и точки "контрольных выборок"). Код biplot(prcomp(t(data.boot), center=F, scale.=F), xlabs=rep(".", 10000), choices=c(3,2)) biplot(prcomp(t(data.boot), center=F, scale.=F), xlabs=rep(".", 10000), choices=c(1,2)) PS надо наконец освоить генерацию мультипликационных гифов, а то так по фиксированным снимкам боюсь большинство не поймет "полета мысли" ![]() ![]() |
|
![]() |
![]() |
![]()
Сообщение
#13
|
|
![]() Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 ![]() |
Вот "дополнительные слои" в пирамиду
![]() Код data.boot.10 <- replicate(10000, ## число перевыборок из исходной совокупности
table(sample(data, ## исходная совокупность за два года 10, ## размер контрольной выборки replace = TRUE ))) data.boot.60 <- replicate(10000, ## число перевыборок из исходной совокупности table(sample(data, ## исходная совокупность за два года 60, ## размер контрольной выборки replace = TRUE ))) biplot(prcomp(t(cbind(data.boot, data.boot.10, data.boot.60)), center=F, scale.=F), xlabs=c(rep(".", 10000),rep("o", 10000),rep("0", 10000) ), choices=c(3,2)) ![]() |
|
![]() |
![]() |
![]()
Сообщение
#14
|
|
Группа: Пользователи Сообщений: 1218 Регистрация: 13.01.2008 Из: Челябинск Пользователь №: 4704 ![]() |
Подход, предлагаемый р2004r, буду осмысливать по мере появления времени. Более традиционный подход таков:
Например, было за 2 года: КодМКБ1 - 150 КодМКБ2 - 3 КодМКБ3 - 250 Всего: 150+3+250=403 Верифицированы: КодМКБ1 - 0 КодМКБ2 - 20 КодМКБ3 - 100 Всего: 0+20+100=120 Рассчитаем различия в диагностике КодМКБ1. 1) Расчёт средней частоты диагноза в группах. Калькулятор для расчёта точного 95%-ного интервала для частот методом Клоппера - Пирсона: http://statpages.org/confint.html В группе 1: x=150, N=403. Средняя частота диагноза = 37,22% (95% ДИ: 32,49 - 42,14) В группе 2: x=0, N=120. Средняя частота диагноза = 0,00% (95% ДИ: 0,00 - 0,03) 2)Расчёт разности частот. В группе 1: есть - 150, нет - 403-150=253 В группе 2: есть -0, нет -120-0=120. http://department.obg.cuhk.edu.hk/research...t_2x2_table.asp . Вбиваем таблицу: 150 0 253 120 Results: Chi.Sq=60.8204; df=1; p=0.0000 Prop 1=0.3722; Prop 2=0.0000; Diff=0.3722; SE(p1-p2)=0.0241 ; 95%CL=0.3250-0.4194; Разность: 37,22% (955 ДИ: 32,50-41,94). Т.к. ДИ не содержит нуля - различия в частотах статистически значимы. Об этом же говорит и критерий хи-квадрат. >p2004r. Буду признателен за ссылки на материал по ресэмплингу для композиционых данных и "гиперпирамиды". Сообщение отредактировал nokh - 28.04.2014 - 19:39 |
|
![]() |
![]() |
![]()
Сообщение
#15
|
|
![]() Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 ![]() |
>p2004r. Буду признателен за ссылки на материал по ресэмплингу для композиционых данных и "гиперпирамиды". Особых ссылок нет, все элементы "классика ML" против которой возражений как бы и нет. ![]() Предполагается что каждое наблюдение измеренное по нескольким характеристикам это точка в пространстве образованном осями этих характеристик. (Номинальные и ранговые шкалы сводятся к наборам шкалам "0-1".) Это пространство может быть приведено в некий "канонический вид", в котором шкалы-оси взаимно независимы (иначе говоря ортогональны). Некий минимальный набор этих ортогональных осей описывает "простую структуру" --- аля "state-space" представление оригинальной системы. Мы фактически идентифицировали (вернее получили линейную аппроксимацию) системы которая ведет себя "также как наша", но описание которой существенно проще. 1) Мои личные рассуждения и взгляд на сущность наблюдения за системой следующие. Теория этого дела, это хорошо освещенное в литературе svd разложения матрицы Хенкеля (или аналогичных ей матриц). Традиционно матрицы Хенкеля всех входов и выходов наблюдаемой системы склеивают cbind() и делают svd разложение, на выходе state-space описание идентифицируемой системы из которого в принципе можно получить параметры идентифицируемой системы. Как легко видно из описанного, простое традиционное наблюдение за системой в случайные моменты времени фактически дает нам "перемешанную по строкам" такую составную по наблюдаемым "входам-выходам" матрицу Хенкеля "с окном вырожденной единичной длинны". Ну для svd разложения совершенно всё равно в каком порядке поданы строки и столбцы ![]() Ссылки можно почитать (кроме википедии про матрицу Хенкеля и state space представление систем) это https://faculty.washington.edu/mfazel/Hankelrm23.pdf ftp://ftp.esat.kuleuven.be/sista/ida/reports/87-29.pdf Последний присоединяю просто ![]() 2) Ну и размерность системы в этом пространстве естественно полностью определяется степенями свободы. Если наблюдаем сумму, то естественно получаем "пирамиду". Если наблюдаем сумму "фиксированного размера" --- наблюдаем "треугольный срез" этой "пирамиды". Геометрия ![]()
Прикрепленные файлы
![]() |
|
![]() |
![]() |
![]()
Сообщение
#16
|
|
Группа: Пользователи Сообщений: 1218 Регистрация: 13.01.2008 Из: Челябинск Пользователь №: 4704 ![]() |
Благодарю! скопировал все себе, буду разбираться по-возможности.
|
|
![]() |
![]() |
![]()
Сообщение
#17
|
|
Группа: Пользователи Сообщений: 68 Регистрация: 21.01.2012 Пользователь №: 23436 ![]() |
"nokh: Можно обычным хи-квадратом сравнить"
т.е. использовать таблицу сопряжённости: 2 (больница, стационар) на n (МКБ1, МКБ2 ... МКБn) |
|
![]() |
![]() |
![]()
Сообщение
#18
|
||
Группа: Пользователи Сообщений: 15 Регистрация: 4.09.2013 Пользователь №: 25228 ![]() |
Спасибо большое, за столь подробное обсуждение.
Я выполнил расчет разности частот и ДИ, получились следующие данные (столбцы соответственно -- количество диагнозов за последние два года, количество диагнозов за последние два месяца, средняя разность частот, 95% ДИ) -- см. скриншот во вложении. Верно ли я интерпретирую данные: выделенные красным строки соответствуют кодам с гипердиагностикой, а синим с гиподиагностикой, белые -- корректная кодировка диагнозов. Можно ли сделать еще какие-либо выводы по данной таблице? И еще, поясните, пожалуйста, три момента: 1. Какой математический смысл имеет средняя разница частот (столбец 3), о чем нам говорит полученная цифра и влияет ли она каким-либо образом на интерпретацию результатов? 2. Как лучше представить данные в статье -- в виде такой же таблицы? 3. Цифры были получены, используя он-лайн калькулятор, на который выше давали ссылку, умножив полученный результат на 100, т.е. переведя в проценты. Для чего это преобразование выполнено и как корректно озаглавить столбцы 3 и 4 -- средняя разница частот и 95% доверительный интервал? |
|
|
![]() |
![]() |
![]()
Сообщение
#19
|
|
Группа: Пользователи Сообщений: 1218 Регистрация: 13.01.2008 Из: Челябинск Пользователь №: 4704 ![]() |
...Верно ли я интерпретирую данные: выделенные красным строки соответствуют кодам с гипердиагностикой, а синим с гиподиагностикой, белые -- корректная кодировка диагнозов. Можно ли сделать еще какие-либо выводы по данной таблице? И еще, поясните, пожалуйста, три момента: 1. Какой математический смысл имеет средняя разница частот (столбец 3), о чем нам говорит полученная цифра и влияет ли она каким-либо образом на интерпретацию результатов? 2. Как лучше представить данные в статье -- в виде такой же таблицы? 3. Цифры были получены, используя он-лайн калькулятор, на который выше давали ссылку, умножив полученный результат на 100, т.е. переведя в проценты. Для чего это преобразование выполнено и как корректно озаглавить столбцы 3 и 4 -- средняя разница частот и 95% доверительный интервал? Интерпретация верная. 1. Помимо вывода о статистической значимости различий необходима также оценка величины эффекта, а в вашем случае - ещё и направления. Т.к. статистически значимые разницы в 3%, в 30% или в 300% - всё-таки совсем разные вещи. Поэтому в итоговой таблице я бы ранжировал все диагнозы внутри групп завышения и занижения оценок по степени различий: от самых сильных, до самых слабых. 2. Первая колонка - диагноз, вторая - абсолютная частота (в шт.), относительная (в %) и с 95% ДИ для одной группы данных, третья - то же для другой группы данных, четвёртая - разность частот с 95% ДИ. 3. Никаких преобразований данных вы не использовали! Только расчёт ДИ. Грамотнее не "разница", а "разность", и она не средняя, поэтому просто "Разность частот (95% ДИ)". |
|
![]() |
![]() |
![]()
Сообщение
#20
|
|
Группа: Пользователи Сообщений: 15 Регистрация: 4.09.2013 Пользователь №: 25228 ![]() |
Всем огромное спасибо за обсуждение!
|
|
![]() |
![]() |
![]() ![]() |