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

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

> Как выделить сочетания признаков?, Есть девять признаков (поражений) надо выделить самые частые сочетания
Листопадничек
сообщение 19.10.2014 - 20:36
Сообщение #1





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



Здравствуйте, коллеги. Проблема такая: в конце работы возникла потребность выделить наиболее частые сочетания поражений. Имеется девять видов поражений, которые выявлены у определенного процента обследованных пациентов. И было бы неплохо как-то обозначить, какие именно сочетания этих поражений встречаются чаще.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
 
Открыть тему
Ответов
anserovtv
сообщение 19.10.2014 - 21:50
Сообщение #2





Группа: Пользователи
Сообщений: 219
Регистрация: 4.06.2013
Из: Тверь
Пользователь №: 24927



Такие задачи можно решать с помощью TURF-анализа. Читайте http://alexwin1961.livejournal.com/86183.html
Программная реализация есть в SPSS версии 22 ( но обновленной!).
Процедура не является очень сложной.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
p2004r
сообщение 19.10.2014 - 22:31
Сообщение #3





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



Цитата(anserovtv @ 19.10.2014 - 21:50) *
Такие задачи можно решать с помощью TURF-анализа. Читайте http://alexwin1961.livejournal.com/86183.html
Программная реализация есть в SPSS версии 22 ( но обновленной!).
Процедура не является очень сложной.


ну такое ещё проще, вот 10 пациентов:

Код
> d<-replicate(10, sample(c(1,0), 9, replace=TRUE))
> d
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    1    0    0    1    1    0    1    1    0     0
[2,]    0    0    1    0    1    0    1    0    1     0
[3,]    0    0    0    0    0    0    1    1    0     1
[4,]    1    1    1    0    0    1    1    0    1     0
[5,]    1    0    1    0    1    0    1    0    0     0
[6,]    0    1    0    0    0    0    1    0    0     0
[7,]    0    0    0    0    0    1    0    0    0     1
[8,]    1    1    1    0    0    0    0    1    0     1
[9,]    1    1    1    1    1    1    1    1    0     0


вот их сочетания "Maximum Group Size: 3." smile.gif

"сырые"

Код
> dd <- sapply(1:10, function(ii) combn(9, 3, FUN=function(i) do.call(paste0,as.list(d[i,ii]))))
      [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7]  [,8]  [,9]  [,10]
[1,] "101" "001" "000" "011" "001" "010" "000" "111" "101" "010"
[2,] "101" "000" "000" "010" "000" "010" "001" "110" "101" "010"
[3,] "100" "000" "000" "011" "001" "011" "000" "111" "101" "011"
[4,] "101" "001" "001" "010" "001" "010" "000" "110" "101" "010"
[5,] "101" "000" "000" "011" "000" "011" "001" "110" "100" "010"
[6,] "100" "000" "001" "011" "001" "010" "001" "110" "101" "011"
[7,] "101" "000" "001" "010" "001" "011" "001" "111" "101" "010"
[8,] "111" "010" "000" "010" "010" "000" "001" "110" "111" "000"
[9,] "110" "010" "000" "011" "011" "001" "000" "111" "111" "001"
[10,] "111" "011" "001" "010" "011" "000" "000" "110" "111" "000"
[11,] "111" "010" "000" "011" "010" "001" "001" "110" "110" "000"
[12,] "110" "010" "001" "011" "011" "000" "001" "110" "111" "001"
[13,] "111" "010" "001" "010" "011" "001" "001" "111" "111" "000"
[14,] "110" "000" "000" "001" "001" "001" "010" "101" "111" "001"
[15,] "111" "001" "001" "000" "001" "000" "010" "100" "111" "000"
[16,] "111" "000" "000" "001" "000" "001" "011" "100" "110" "000"
[17,] "110" "000" "001" "001" "001" "000" "011" "100" "111" "001"
[18,] "111" "000" "001" "000" "001" "001" "011" "101" "111" "000"
[19,] "101" "001" "001" "010" "011" "010" "000" "110" "111" "010"
[20,] "101" "000" "000" "011" "010" "011" "001" "110" "110" "010"
[21,] "100" "000" "001" "011" "011" "010" "001" "110" "111" "011"
[22,] "101" "000" "001" "010" "011" "011" "001" "111" "111" "010"
[23,] "111" "010" "010" "001" "010" "001" "001" "100" "110" "000"
[24,] "110" "010" "011" "001" "011" "000" "001" "100" "111" "001"
[25,] "111" "010" "011" "000" "011" "001" "001" "101" "111" "000"
[26,] "110" "000" "001" "011" "001" "010" "011" "100" "101" "001"
[27,] "111" "000" "001" "010" "001" "011" "011" "101" "101" "000"
[28,] "101" "000" "011" "010" "011" "001" "011" "101" "111" "010"
[29,] "011" "010" "000" "110" "010" "100" "001" "110" "011" "100"
[30,] "010" "010" "000" "111" "011" "101" "000" "111" "011" "101"
[31,] "011" "011" "001" "110" "011" "100" "000" "110" "011" "100"
[32,] "011" "010" "000" "111" "010" "101" "001" "110" "010" "100"
[33,] "010" "010" "001" "111" "011" "100" "001" "110" "011" "101"
[34,] "011" "010" "001" "110" "011" "101" "001" "111" "011" "100"
[35,] "010" "000" "000" "101" "001" "101" "010" "101" "011" "101"
[36,] "011" "001" "001" "100" "001" "100" "010" "100" "011" "100"
[37,] "011" "000" "000" "101" "000" "101" "011" "100" "010" "100"
[38,] "010" "000" "001" "101" "001" "100" "011" "100" "011" "101"
[39,] "011" "000" "001" "100" "001" "101" "011" "101" "011" "100"
[40,] "001" "001" "001" "110" "011" "110" "000" "110" "011" "110"
[41,] "001" "000" "000" "111" "010" "111" "001" "110" "010" "110"
[42,] "000" "000" "001" "111" "011" "110" "001" "110" "011" "111"
[43,] "001" "000" "001" "110" "011" "111" "001" "111" "011" "110"
[44,] "011" "010" "010" "101" "010" "101" "001" "100" "010" "100"
[45,] "010" "010" "011" "101" "011" "100" "001" "100" "011" "101"
[46,] "011" "010" "011" "100" "011" "101" "001" "101" "011" "100"
[47,] "010" "000" "001" "111" "001" "110" "011" "100" "001" "101"
[48,] "011" "000" "001" "110" "001" "111" "011" "101" "001" "100"
[49,] "001" "000" "011" "110" "011" "101" "011" "101" "011" "110"
[50,] "110" "100" "000" "101" "101" "001" "010" "101" "111" "001"
[51,] "111" "101" "001" "100" "101" "000" "010" "100" "111" "000"
[52,] "111" "100" "000" "101" "100" "001" "011" "100" "110" "000"
[53,] "110" "100" "001" "101" "101" "000" "011" "100" "111" "001"
[54,] "111" "100" "001" "100" "101" "001" "011" "101" "111" "000"
[55,] "101" "101" "001" "110" "111" "010" "000" "110" "111" "010"
[56,] "101" "100" "000" "111" "110" "011" "001" "110" "110" "010"
[57,] "100" "100" "001" "111" "111" "010" "001" "110" "111" "011"
[58,] "101" "100" "001" "110" "111" "011" "001" "111" "111" "010"
[59,] "111" "110" "010" "101" "110" "001" "001" "100" "110" "000"
[60,] "110" "110" "011" "101" "111" "000" "001" "100" "111" "001"
[61,] "111" "110" "011" "100" "111" "001" "001" "101" "111" "000"
[62,] "110" "100" "001" "111" "101" "010" "011" "100" "101" "001"
[63,] "111" "100" "001" "110" "101" "011" "011" "101" "101" "000"
[64,] "101" "100" "011" "110" "111" "001" "011" "101" "111" "010"
[65,] "101" "001" "001" "010" "011" "010" "100" "010" "111" "010"
[66,] "101" "000" "000" "011" "010" "011" "101" "010" "110" "010"
[67,] "100" "000" "001" "011" "011" "010" "101" "010" "111" "011"
[68,] "101" "000" "001" "010" "011" "011" "101" "011" "111" "010"
[69,] "111" "010" "010" "001" "010" "001" "101" "000" "110" "000"
[70,] "110" "010" "011" "001" "011" "000" "101" "000" "111" "001"
[71,] "111" "010" "011" "000" "011" "001" "101" "001" "111" "000"
[72,] "110" "000" "001" "011" "001" "010" "111" "000" "101" "001"
[73,] "111" "000" "001" "010" "001" "011" "111" "001" "101" "000"
[74,] "101" "000" "011" "010" "011" "001" "111" "001" "111" "010"
[75,] "011" "010" "010" "101" "110" "101" "001" "100" "110" "100"
[76,] "010" "010" "011" "101" "111" "100" "001" "100" "111" "101"
[77,] "011" "010" "011" "100" "111" "101" "001" "101" "111" "100"
[78,] "010" "000" "001" "111" "101" "110" "011" "100" "101" "101"
[79,] "011" "000" "001" "110" "101" "111" "011" "101" "101" "100"
[80,] "001" "000" "011" "110" "111" "101" "011" "101" "111" "110"
[81,] "110" "100" "101" "011" "101" "010" "011" "000" "101" "001"
[82,] "111" "100" "101" "010" "101" "011" "011" "001" "101" "000"
[83,] "101" "100" "111" "010" "111" "001" "011" "001" "111" "010"
[84,] "101" "000" "011" "110" "011" "101" "111" "001" "011" "010"


и отсортированные в порядке убывания частоты одной комбинации

Код
> head(dd[order(sapply(1:nrow(dd), function(i)max(table(dd[i,]))), decreasing=TRUE),])
     [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7]  [,8]  [,9]  [,10]
[1,] "101" "001" "001" "101" "101" "011" "101" "101" "000" "010"
[2,] "000" "010" "000" "000" "000" "001" "110" "100" "000" "101"
[3,] "001" "011" "001" "001" "001" "001" "111" "101" "000" "100"
[4,] "001" "001" "001" "001" "001" "011" "101" "101" "000" "110"
[5,] "001" "101" "001" "001" "001" "011" "101" "001" "000" "010"
[6,] "101" "001" "001" "100" "100" "001" "111" "110" "001" "010"


ну и номера "осложнений" этих комбинаций

Код
> head(t(combn(9,3))[order(sapply(1:nrow(dd), function(i)max(table(dd[i,]))), decreasing=TRUE),])
     [,1] [,2] [,3]
[1,]    1    7    9
[2,]    3    6    7
[3,]    3    6    9
[4,]    3    7    9
[5,]    6    7    9
[6,]    1    3    4


можно всё легко объединить в одну функцию.


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

Сообщений в этой теме


Добавить ответ в эту темуОткрыть тему