multifactor dimensionality reduction |
Здравствуйте, гость ( Вход | Регистрация )
multifactor dimensionality reduction |
21.03.2012 - 10:57
Сообщение
#46
|
|
Группа: Пользователи Сообщений: 42 Регистрация: 14.11.2011 Пользователь №: 23301 |
А по выборке есть закономерности: вероятность прогресса = 1 - A - B + 2AB где: В = (С + D) / 2 А - Shunt (1 - наличие, 0 - отсутствие) C - AG Terapia (1 - наличие, 0 - отсутствие) D - AIK (1 - наличие, 0 - отсутствие) наличие-2, отсутствие-1. как была получена такого рода закономерность вообще не понятно. |
|
21.03.2012 - 11:01
Сообщение
#47
|
|
Группа: Пользователи Сообщений: 63 Регистрация: 20.03.2012 Из: Ташкент Пользователь №: 23582 |
наличие-2, отсутствие-1. как была получена такого рода закономерность вообще не понятно. Банально. Элементарная теория вероятностей. Если выложите полные данные, то можно будет получить более уточненные закономерности в виде математической модели, где вместо вероятности будет частота. Yury V. Reshetov |
|
21.03.2012 - 11:01
Сообщение
#48
|
|
Группа: Пользователи Сообщений: 42 Регистрация: 14.11.2011 Пользователь №: 23301 |
лучше больше случаев видеть конечно. переменная Statiny : что означают её уровни? сейчас загружу остальное... но я ж говорю мне бы понять самой что делать да как.... Статины: 1-не применяются 2-применяются (неэффективная доза) 3-применяются (эффективная доза) 4-прекратили прием (эффективная доза) 5-прекратили прием (неэффективная доза) |
|
21.03.2012 - 11:05
Сообщение
#49
|
|
Группа: Пользователи Сообщений: 63 Регистрация: 20.03.2012 Из: Ташкент Пользователь №: 23582 |
но я ж говорю мне бы понять самой что делать да как.... Учиться, учиться и еще раз учиться (с) В. И. Ленин Теория вероятностей не является секретной, поэтому изучить ее никогда не поздно. Yury V. Reshetov |
|
21.03.2012 - 11:21
Сообщение
#50
|
|
Группа: Пользователи Сообщений: 42 Регистрация: 14.11.2011 Пользователь №: 23301 |
|
|
21.03.2012 - 11:45
Сообщение
#51
|
|
Группа: Пользователи Сообщений: 63 Регистрация: 20.03.2012 Из: Ташкент Пользователь №: 23582 |
файл СА уже точно можно исключать По остальным параметрам еще посмотрю. На это потребуется время. Сообщение отредактировал YVR - 21.03.2012 - 11:46 Yury V. Reshetov |
|
21.03.2012 - 11:52
Сообщение
#52
|
|
Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 |
сейчас загружу остальное... но я ж говорю мне бы понять самой что делать да как.... Статины: 1-не применяются 2-применяются (неэффективная доза) 3-применяются (эффективная доза) 4-прекратили прием (эффективная доза) 5-прекратили прием (неэффективная доза) хорошо еще и его учтем сейчас, по неполным данным логит регрессия полностью разделяет Progress минимальная модель --- glm(formula = Progres ~ OP + Shunt + ChSS + AG.therapia + cholesterin, family = binomial(logit), data = data.sh.f) сейчас расчеты закончу и прокомментирую |
|
21.03.2012 - 12:32
Сообщение
#53
|
|
Группа: Пользователи Сообщений: 42 Регистрация: 14.11.2011 Пользователь №: 23301 |
у меня есть много вопросов.... Что я уже делала с этими данными - строила корреляцию Кенделла и Тауба, результаты практически не отличаются...затем все переменные вводила в дискриминантный анализ и логистическую регрессию. результаты тоже между собой не давали особых отличий. Тоесть у меня если правильно - то появился список этих переменных? Есть еще вопрос который стоило задать вначале - правильно ли я определила тип переменных??? Если все до этого было более менее правильно то теперь мне еще нужно точно так же с помощью MDR проверить какие переменные влияют на "Прогресс" почему на мои вопросы никто не дал ни единого ответа |
|
21.03.2012 - 12:34
Сообщение
#54
|
|
Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 |
хорошо еще и его учтем сейчас, сейчас расчеты закончу и прокомментирую ха, над статинами думать надо как закодировать, так сходу не придумалось Код # читаем данные в таблицу data data<-read.csv2("1.csv") ## сменим уровни шкал в таблицу data.sh # копируем оригинальные данные data.sh <- data data.sh$Progres[data$Progres==1]<-0 # перекодируем все 1 по показателю Progres в # исходной таблице data в 0 таблицы data.sh data.sh$Progres[data$Progres==2]<-1 # тоже для 2, заменяем их на 1 data.sh$AIK[data$AIK==1]<-0 data.sh$AIK[data$AIK==2]<-1 data.sh$CA[data$CA==1]<-0 data.sh$CA[data$CA==2]<-1 data.sh$Progres[data$Progres==1]<-0 data.sh$Progres[data$Progres==2]<-1 data.sh$OP[data$OP==1]<-0 data.sh$OP[data$OP==2]<-1 data.sh$Shunt[data$Shunt==1]<-0 data.sh$Shunt[data$Shunt==2]<-1 data.sh$pol[data$pol==1]<-0 data.sh$pol[data$pol==2]<-1 data.sh$AG.therapia[data$AG.therapia==1]<-0 data.sh$AG.therapia[data$AG.therapia==2]<-1 data.sh$stenoz.a.renalis[data$stenoz.a.renalis==1]<-0 data.sh$stenoz.a.renalis[data$stenoz.a.renalis==2]<-1 data.sh$stenoz.arterij.nog[data$stenoz.arterij.nog==1]<-0 data.sh$stenoz.arterij.nog[data$stenoz.arterij.nog==2]<-1 data.sh$insult.v.anamnese[data$insult.v.anamnese==1]<-0 data.sh$insult.v.anamnese[data$insult.v.anamnese==2]<-1 data.sh$diabetus.melitus[data$diabetus.melitus==1]<-0 data.sh$diabetus.melitus[data$diabetus.melitus==2]<-1 # заменяем tip на три переменных, каждая из которых содержит признак только одного типа кровобращения tip.1<- rep(0,length(data.sh$tip.krovoobraschenija)) tip.2<- rep(0,length(data.sh$tip.krovoobraschenija)) tip.3<- rep(0,length(data.sh$tip.krovoobraschenija)) tip.1[data.sh$tip.krovoobraschenija==1]<-1 tip.2[data.sh$tip.krovoobraschenija==2]<-1 tip.3[data.sh$tip.krovoobraschenija==3]<-1 # склеиваем новые переменные тип в одну таблицу с трансформированными данными data.sh.f<- cbind(data.sh, tip.1, tip.2, tip.3) # определяем модель логистической регрессии model<- glm(Progres~AIK+OP+Shunt+vozrast+IMT+Stepen.Oz.+ChSS+AD+AG.therapia+cholesterin+diabetus.m elitus+tip.1+tip.2+tip.3, family=binomial(logit), data.sh.f) # оптимизируем модель по AIC, сокращая число предикторов до минимального model.f<-step(model) > model.f Call: glm(formula = Progres ~ Shunt + cholesterin + diabetus.melitus + tip.1 + tip.2, family = binomial(logit), data = data.sh.f) Coefficients: (Intercept) Shunt cholesterin diabetus.melitus -0.9145 1.8652 -0.3532 1.5293 tip.1 tip.2 1.5598 1.4139 Degrees of Freedom: 61 Total (i.e. Null); 56 Residual Null Deviance: 85.69 Residual Deviance: 67.62 AIC: 79.62 library(lattice) # как разделяет полная модель densityplot( ~ predict(model, type = "response"), groups = data.sh.f$Progres, plot.points = "rug", auto.key = TRUE) # как разделяет оптимальная по AIC densityplot( ~ predict(model.f, type = "response"), groups = data.sh.f$Progres, plot.points = "rug", auto.key = TRUE) # оцениваем насколько модели могут что то предсказывать library(pROC) roc.model <- roc(data.sh.f$Progres, # данные из выборки predict(model, type="response")) # предсказание модели roc.model.f <- roc(data.sh.f$Progres, # данные из выборки predict(model.f, type="response")) # предсказание модели # Рисуем ROC кривые для моделей > plot(roc.model) > lines.roc(roc.model.f, col="red") > auc(roc.model.f) Area under the curve: 0.7931 > auc(roc.model) Area under the curve: 0.8286 Вот как то так если логистическая регрессия используется вот протокол исключения параметров из модели Код Start: AIC=90.87
Progres ~ AIK + OP + Shunt + vozrast + IMT + Stepen.Oz. + ChSS + AD + AG.therapia + cholesterin + diabetus.melitus + tip.1 + tip.2 + tip.3 Step: AIC=90.87 Progres ~ AIK + OP + Shunt + vozrast + IMT + Stepen.Oz. + ChSS + AD + AG.therapia + cholesterin + diabetus.melitus + tip.1 + tip.2 Df Deviance AIC - Stepen.Oz. 1 62.873 88.873 - IMT 1 62.987 88.987 - ChSS 1 63.034 89.034 - AD 1 63.407 89.407 - AIK 1 63.509 89.509 - OP 1 63.598 89.598 - vozrast 1 63.662 89.662 - tip.2 1 63.776 89.776 - diabetus.melitus 1 63.925 89.925 - AG.therapia 1 64.572 90.572 - tip.1 1 64.742 90.742 <none> 62.869 90.869 - cholesterin 1 67.407 93.407 - Shunt 1 67.655 93.655 Step: AIC=88.87 Progres ~ AIK + OP + Shunt + vozrast + IMT + ChSS + AD + AG.therapia + cholesterin + diabetus.melitus + tip.1 + tip.2 Df Deviance AIC - ChSS 1 63.037 87.037 - IMT 1 63.389 87.389 - AD 1 63.409 87.409 - AIK 1 63.589 87.589 - OP 1 63.608 87.608 - vozrast 1 63.662 87.662 - tip.2 1 63.787 87.787 - diabetus.melitus 1 63.954 87.954 - AG.therapia 1 64.659 88.659 - tip.1 1 64.859 88.859 <none> 62.873 88.873 - cholesterin 1 67.409 91.409 - Shunt 1 67.658 91.658 Step: AIC=87.04 Progres ~ AIK + OP + Shunt + vozrast + IMT + AD + AG.therapia + cholesterin + diabetus.melitus + tip.1 + tip.2 Df Deviance AIC - AD 1 63.456 85.456 - IMT 1 63.640 85.640 - OP 1 63.721 85.721 - AIK 1 63.746 85.746 - tip.2 1 63.894 85.894 - vozrast 1 63.984 85.984 - diabetus.melitus 1 64.001 86.001 - AG.therapia 1 64.764 86.764 - tip.1 1 64.882 86.882 <none> 63.037 87.037 - cholesterin 1 67.423 89.423 - Shunt 1 68.079 90.079 Step: AIC=85.46 Progres ~ AIK + OP + Shunt + vozrast + IMT + AG.therapia + cholesterin + diabetus.melitus + tip.1 + tip.2 Df Deviance AIC - IMT 1 63.885 83.885 - AIK 1 64.043 84.043 - OP 1 64.053 84.053 - diabetus.melitus 1 64.535 84.535 - vozrast 1 64.610 84.610 - AG.therapia 1 64.863 84.863 - tip.2 1 64.873 84.873 <none> 63.456 85.456 - tip.1 1 65.866 85.866 - cholesterin 1 67.721 87.721 - Shunt 1 68.349 88.349 Step: AIC=83.89 Progres ~ AIK + OP + Shunt + vozrast + AG.therapia + cholesterin + diabetus.melitus + tip.1 + tip.2 Df Deviance AIC - AIK 1 64.305 82.305 - OP 1 64.479 82.479 - vozrast 1 65.102 83.102 - AG.therapia 1 65.497 83.497 - diabetus.melitus 1 65.546 83.546 - tip.2 1 65.785 83.785 <none> 63.885 83.885 - tip.1 1 66.413 84.413 - cholesterin 1 67.830 85.830 - Shunt 1 68.972 86.972 Step: AIC=82.31 Progres ~ OP + Shunt + vozrast + AG.therapia + cholesterin + diabetus.melitus + tip.1 + tip.2 Df Deviance AIC - OP 1 64.900 80.900 - AG.therapia 1 65.680 81.680 - vozrast 1 65.972 81.972 <none> 64.305 82.305 - diabetus.melitus 1 66.572 82.572 - tip.1 1 67.013 83.013 - tip.2 1 67.361 83.361 - cholesterin 1 68.211 84.211 - Shunt 1 70.676 86.676 Step: AIC=80.9 Progres ~ Shunt + vozrast + AG.therapia + cholesterin + diabetus.melitus + tip.1 + tip.2 Df Deviance AIC - AG.therapia 1 65.998 79.998 - vozrast 1 66.623 80.623 <none> 64.900 80.900 - diabetus.melitus 1 66.981 80.981 - tip.1 1 67.535 81.535 - tip.2 1 67.586 81.586 - cholesterin 1 68.635 82.635 - Shunt 1 70.988 84.988 Step: AIC=80 Progres ~ Shunt + vozrast + cholesterin + diabetus.melitus + tip.1 + tip.2 Df Deviance AIC - vozrast 1 67.619 79.619 <none> 65.998 79.998 - tip.2 1 68.893 80.893 - diabetus.melitus 1 69.058 81.058 - tip.1 1 69.349 81.349 - cholesterin 1 69.964 81.964 - Shunt 1 71.574 83.574 Step: AIC=79.62 Progres ~ Shunt + cholesterin + diabetus.melitus + tip.1 + tip.2 Df Deviance AIC <none> 67.619 79.619 - cholesterin 1 70.782 80.782 - tip.2 1 70.954 80.954 - diabetus.melitus 1 71.087 81.087 - tip.1 1 71.458 81.458 - Shunt 1 73.848 83.848 > model.f Call: glm(formula = Progres ~ Shunt + cholesterin + diabetus.melitus + tip.1 + tip.2, family = binomial(logit), data = data.sh.f) Coefficients: (Intercept) Shunt cholesterin diabetus.melitus -0.9145 1.8652 -0.3532 1.5293 tip.1 tip.2 1.5598 1.4139 Degrees of Freedom: 61 Total (i.e. Null); 56 Residual Null Deviance: 85.69 Residual Deviance: 67.62 AIC: 79.62 |
|
21.03.2012 - 12:41
Сообщение
#55
|
|
Группа: Пользователи Сообщений: 42 Регистрация: 14.11.2011 Пользователь №: 23301 |
ну все здорово...спасибо за ваш труд. но извините мне от этого не тепло не холодно... я в спсс расчитываю... а не в R. тут мне понятны ваши действия, но боюсь что я не буду сейчас изучать дополнительно еще один язык... сама ниче не делаю и людям голову морочу...
|
|
21.03.2012 - 12:46
Сообщение
#56
|
|
Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 |
почему на мои вопросы никто не дал ни единого ответа По поводу кодирования признаков и выбора шкал измерения признаков: тип кровообращения в одну переменную объединять не стоит, в анализе надо дать оценку наличию или отсутствию диагностического признака. поэтому заменяем один параметр "тип" на три эквивалентных --- тип1, тип 2, тип3. В случае со статинами все сложнее, на самом деле там есть бинарный признак "прекратил терапию", бинарный признак "доза-терапии-эффективна", и бинарный признак "терапия велась". Критерий эффективности признака для включения в модель целевой переменной это как меняется AIC модели в результате включения-исключения этого признака. |
|
21.03.2012 - 12:49
Сообщение
#57
|
|
Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 |
ну все здорово...спасибо за ваш труд. но извините мне от этого не тепло не холодно... я в спсс расчитываю... а не в R. тут мне понятны ваши действия, но боюсь что я не буду сейчас изучать дополнительно еще один язык... сама ниче не делаю и людям голову морочу... Не волнуйтесь так в SPSS есть и R и логистическая регрессия... чего там увы нет, так заветной кнопки - "сделать зашибись!" |
|
21.03.2012 - 12:59
Сообщение
#58
|
|
Группа: Пользователи Сообщений: 42 Регистрация: 14.11.2011 Пользователь №: 23301 |
чего там увы нет, так заветной кнопки - "сделать зашибись!" извините еще раз если вас обидела... просто действительно не знаю как с ним работать... в спсс вроде все просто выбрал выбрал все что интересует нажал кнопку и машина посчитала... вывела табличку... а как же тогда реализовать работу??? если вы говорите что там есть R??? алгоритмы закладены в спсс??? я запуталась. и относительно разбивки это получается эти 2 переменные будут категориальные??? а остальное правильно? |
|
21.03.2012 - 13:09
Сообщение
#59
|
|
Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 |
извините еще раз если вас обидела... просто действительно не знаю как с ним работать... в спсс вроде все просто выбрал выбрал все что интересует нажал кнопку и машина посчитала... вывела табличку... а как же тогда реализовать работу??? если вы говорите что там есть R??? алгоритмы закладены в спсс??? я запуталась. и относительно разбивки это получается эти 2 переменные будут категориальные??? а остальное правильно? 1. они не просто категориальные. Вам надо _готовить_ данные, текущие коды у этих переменных не несут информации. иначе ничего полезного в табличке после нажатия кнопки не будет. Можно например все переменные Вашей выборки свести к одной категориальной переменной. и что spss каким то способом выдаст что то полезное на выходе зная/ что это категориальная переменная? 2. В SPSS интегрирован R (по крайней мере в последних версиях). Алгоритм логистической регрессии и там и там остается алгоритмом логистической регрессии. 2. про "остальное" не понял. Сообщение отредактировал p2004r - 21.03.2012 - 13:10 |
|
21.03.2012 - 13:18
Сообщение
#60
|
|
Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 |
В случае со статинами все сложнее, на самом деле там есть бинарный признак "прекратил терапию", бинарный признак "доза-терапии-эффективна", и бинарный признак "терапия велась". Вот преобразование статинов Код Статины: 1-не применяются 2-применяются (неэффективная доза) 3-применяются (эффективная доза) 4-прекратили прием (эффективная доза) 5-прекратили прием (неэффективная доза) > statin.ter <- rep(1,length(data.sh$Statiny)) > statin.break <- rep(0,length(data.sh$Statiny)) > statin.doz <- rep(0,length(data.sh$Statiny)) > statin.ter[data.sh$Statiny==0]<-0 > statin.break[data.sh$Statiny==4 | data.sh$Statiny==5]<-1 > statin.doz[data.sh$Statiny==3 | data.sh$Statiny==4]<-1 > statin.ter [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 [39] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 > statin.break [1] 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 [39] 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 > statin.doz [1] 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 [39] 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 но они увы ничего в модели не добавляют Код > m.statin <-glm(Progres~ statin.break + statin.doz, + family=binomial(logit), + data.sh.f) > roc.m.statin <- roc(data.sh.f$Progres, # данные из выборки + predict(m.statin, type="response")) # предсказание модели > auc(roc.m.statin) Area under the curve: 0.512 AUC практически равен 0.5 Сообщение отредактировал p2004r - 21.03.2012 - 13:30 |
|