Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум врачей-аспирантов _ Медицинская статистика _ multifactor dimensionality reduction

Автор: _alena_ 14.11.2011 - 13:19

всем привет. очень нуждаюсь в помощи и советах.... кто то знаком с multifactor dimensionality reduction??? что можно почитать о том как работать в этой среде? для каких видов данных она предназначена??? а то мне все что встречалось касается генной информации. можно ли применять другие выборки? спасибо

Автор: p2004r 14.11.2011 - 18:01

Цитата(_alena_ @ 14.11.2011 - 12:19) *
всем привет. очень нуждаюсь в помощи и советах.... кто то знаком с multifactor dimensionality reduction??? что можно почитать о том как работать в этой среде? для каких видов данных она предназначена??? а то мне все что встречалось касается генной информации. можно ли применять другие выборки? спасибо


А что за данные Вы собираетесь обрабатывать? И какой результат ожидаете?

Автор: _alena_ 14.11.2011 - 22:28

есть данные по кардиологии. предоперационных набор параметров и постоперационных.планирую применить логистическую регрессиюю для определения риска того или иного вмешатальства и ислледования влияния пороков. посоветовали воспользоваться multifactor dimensionality reduction и permutation test.пока понятия не имею с чего начать и к чему приступить

Автор: p2004r 15.11.2011 - 21:55

Цитата(_alena_ @ 14.11.2011 - 21:28) *
есть данные по кардиологии. предоперационных набор параметров и постоперационных.планирую применить логистическую регрессиюю для определения риска того или иного вмешатальства и ислледования влияния пороков. посоветовали воспользоваться multifactor dimensionality reduction и permutation test.пока понятия не имею с чего начать и к чему приступить


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

Практически у Вас получится облако значений параметра модели для данных бутстрепа, и облако (некая базовая точка отсчета) значений параметра модели когда связи заведомо нет.


Применимо это к любой процедуре обработки данных полезность которой хочется доказать, а теория еще для неё не разработана.

Метод multifactor dimensionality reduction интерполяционный, без перечисленных выше мер проверки его бесполезно использовать для экстраполяции. Как всякий интерполяционный метод он будет находить "зависимости" везде, даже в чисто случайных данных.

Откровенно говоря логистическая регрессия выглядит предпочтительнее (и к ней можно смело применять бутстреп и пермутацию smile.gif

Автор: _alena_ 16.11.2011 - 10:40

weep.gif ого го... чувствую себя вообще стерильной.... наверно надо чтоб вы мне посоветовали вообще с чего начать так как ниразу не проводила такого рода анализа... скажем так у меня есть база с кучей данных, а что теперь с ними делать - без понятия... то что вы сказали для меня совсем туго... frown.gif и на ряду с пермишин тестом и MDR также советовал руководитель ознакомится с лог регрессией.. я только начала рассмотрение этой темы

Автор: _alena_ 16.11.2011 - 10:43

если я правильно поняла мне нужно начать с логрегрессии??? как тогда ее применять на практике???

Автор: p2004r 16.11.2011 - 11:45

Цитата(_alena_ @ 16.11.2011 - 09:40) *
weep.gif ого го... чувствую себя вообще стерильной.... наверно надо чтоб вы мне посоветовали вообще с чего начать так как ниразу не проводила такого рода анализа... скажем так у меня есть база с кучей данных, а что теперь с ними делать - без понятия... то что вы сказали для меня совсем туго... frown.gif и на ряду с пермишин тестом и MDR также советовал руководитель ознакомится с лог регрессией.. я только начала рассмотрение этой темы


не сдаваться! smile.gif

вот например бутстреп и пермутация для графика собственных значений анализа принципиальных компонент http://p2004r.blogspot.com/2011/04/blog-post.html

вместо анализа принципиальных компонент может быть _любой_ другой метод анализа данных, принцип от этого не меняется

посмотрите только на рисунок ---- вместо одной линии (на самом деле это точки соединенные линией) собственных значений мы получили их 1000 штук. естественно они точно не совпали. мы 1000 раз случайно _копировали_ (не извлекали!, тоесть у объекта оставалась возможность быть скопированным повторно!) объекты наблюдения (строки в таблице данных).

Каждый раз из 1000 мы копировали случайно столько объектов сколько составлял размер исходной анализируемой выборки. Это бутстреп.

Таким образом у нас получилась первая группа линий (похожая на экспоненциальный распад). хм и почему я вывел обе группы не разным цветом ? smile.gif)


Пермутацией получена более пологая группа линий. Там мы только перемешивали 1000 раз _отдельно_ каждую из переменных описывающих объект наблюдения. Тем самым мы разрушали корреляционные связи.


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

Автор: p2004r 16.11.2011 - 11:58

Цитата(_alena_ @ 16.11.2011 - 09:43) *
если я правильно поняла мне нужно начать с логрегрессии??? как тогда ее применять на практике???


давайте на примере каких то Ваших данных (в соседней ветке в принципе я делал пример этой регрессии на примере данных о метастазах)

нужно набор переменных "до" и переменная типа да-нет (или которую можно сделать такой) "после" вмешательства.

Автор: _alena_ 16.11.2011 - 12:25

Цитата(p2004r @ 16.11.2011 - 10:58) *
давайте на примере каких то Ваших данных (в соседней ветке в принципе я делал пример этой регрессии на примере данных о метастазах)

нужно набор переменных "до" и переменная типа да-нет (или которую можно сделать такой) "после" вмешательства.


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

Автор: p2004r 16.11.2011 - 15:12

Цитата(_alena_ @ 16.11.2011 - 11:25) *
ну в какой то степени понятно...
что касается данных - вас интересуют все параметры которые есть в таблице или просто несколько для обьяснения работы??? и в каком виде?
а не сможете ли вы дать мне ссылочку на ту тему где рассматривался пример?


вот с этого сообщения начинается http://forum.disser.ru/index.php?showtopic=2909&view=findpost&p=12230


"до" можно несколько, можно все (на сложности демонстрации это практически не скажется)

"после" лучше выбрать одну две самые интересные (иначе Вам ничего не останется для самостоятельной работы smile.gif )

Автор: _alena_ 20.11.2011 - 17:48

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

мои данные.
решила брать те параметры которые применяются в евроскоре. проблема что их еще всех у меня на сегодняшний день нету. но как вы сказали мне главное суть понять...
"до"
ID - Familia - Vozrast - Data_operatsii - Pol - HronichZabol_Legkih - Nevrolgiya - PerenOperatsii - Stenokardiya - Vremya_posle_posled_IM - Gipertrof_L_ZH IM
"после"
жив - мертв

пока наверное так хотя хочется привязаться к патологии

Автор: p2004r 20.11.2011 - 18:11

Цитата(_alena_ @ 20.11.2011 - 17:48) *
здравствуйте, решила попытаться сделать вот что. задача пока не поставлена передо мной конкретная поэтому сама думаю что можно делать... попытаться сравнить диеагностическую эффективность Euroscor и данных полученных мною при логрегрессии. возможно бред. тогда остановите меня заранее.

мои данные.
решила брать те параметры которые применяются в евроскоре. проблема что их еще всех у меня на сегодняшний день нету. но как вы сказали мне главное суть понять...
"до"
ID - Familia - Vozrast - Data_operatsii - Pol - HronichZabol_Legkih - Nevrolgiya - PerenOperatsii - Stenokardiya - Vremya_posle_posled_IM - Gipertrof_L_ZH IM
"после"
жив - мертв

пока наверное так хотя хочется привязаться к патологии


а сам файл с данными?

по названиям не очень понятно...

ну и вот дата например, само по себе понятно, но возникает вопрос: будем на день недели преобразовывать? или лето-зима-осень весна?

Автор: _alena_ 20.11.2011 - 18:58

креплю

 файл_с_данными.rar ( 4,09 килобайт ) : 380
 

Автор: _alena_ 20.11.2011 - 20:35

Цитата(p2004r @ 16.11.2011 - 14:12) *
вот с этого сообщения начинается http://forum.disser.ru/index.php?showtopic=2909&view=findpost&p=12230


в чем пишутся все эти коды??? я думала нужно будет в каком то пакете типа статистика или спсс делать

Автор: _alena_ 20.11.2011 - 20:41

Цитата(_alena_ @ 20.11.2011 - 19:35) *
в чем пишутся все эти коды??? я думала нужно будет в каком то пакете типа статистика или спсс делать

а все я поняла.... язык и среда для статистических вычислений и графики R.

Автор: p2004r 21.11.2011 - 15:21

Цитата(_alena_ @ 20.11.2011 - 18:58) *
креплю


так время операции в качестве чего будет использоваться?

Автор: _alena_ 21.11.2011 - 17:44

Цитата(p2004r @ 21.11.2011 - 14:21) *
так время операции в качестве чего будет использоваться?


скорее всего оно бы использовалось не для анализа, а просто для общих сведений, как айдишка. а вообще задача немного поменялась.... сказали из базы проанализировать 4 столбца. к примеру инфаркт миокарда. и найти какие то зависящие факторы. из этого сделать выборку и посмотреть будет ли достаточное количество данных.

Автор: 9oclock 21.11.2011 - 17:50

Цитата(_alena_ @ 14.11.2011 - 23:28) *
есть данные по кардиологии. предоперационных набор параметров и постоперационных.планирую применить логистическую регрессиюю для определения риска того или иного вмешатальства и ислледования влияния пороков. посоветовали воспользоваться multifactor dimensionality reduction и permutation test.пока понятия не имею с чего начать и к чему приступить


Алена, советую всегда действовать от простого к сложному:
у вас есть данные по пациенту до операции и после - с точки зрения статистики это очень удачный случай, так как совокупности напрямую связаны (т.е. вы знаете не "что в среднем бывает после такой-то операции" а конкретную выборку "значение до" - "значение после") Поэтому вы легко сможете оценить эффективность и риски каждого из типов вмешателсьств с помощью критериев для связанных совокупностей. Это первое что вам, на мой взгляд, стоит сделать.

следующий шаг - попытаться применить регрессионный анализ. Что это по сути? А то, что вы не просто хотите поисследовать эффективность и риски операции и успокоиться, а еще и предложить коллегам методику прогнозирования рисков для каждого типа вмешательства. То есть, я вам даю набор параметров конкретного (!) пациента, а вы мне даете оценки его параметров после операции. Этим и занимается регрессионный анализ - в общем случае пытаемся построить функцию, которая на входе имеет параметры до операции, а на выходе дает математическое ожидание и дисперсию параметра после операции. Получится или нет - это тоже вопрос исследования.

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

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

Автор: p2004r 21.11.2011 - 18:00

Цитата(9oclock @ 21.11.2011 - 17:50) *
вот например после постов p2004r я тоже чувствую себя стерильным, хотя и имею кандидатскую степень в физмат науках)))


ну значит круче к кандидатской по медицине иметь магистерскую в информатике smile.gif

... и книжки читать по многомерному анализу данных (можно даже изданные в СССР).

Автор: _alena_ 21.11.2011 - 18:10

Цитата(9oclock @ 21.11.2011 - 16:50) *
Алена, советую всегда действовать от простого к сложному:
......

спасибо! я с вами согласна... я всегда начинаю с поиска похожего чтобы хоть как то понять суть вопроса... я и начинала тему с просьбой о совете что почитать на тему MDR и пермишн теста. но так же понимала что в самой статистике пока не ас. начинаю изучать азы... ситуация так сложилась... 2 года трудилась ни над чем научрук говорил - давай давай, а там посмотрим... когда решилась менять его естественно новая тема, новое направление... вот и буду изучать сию науку...
так что сегодня вечером анализирую базу, все параметры до/после. дальше отпишусь с вопросами

Автор: _alena_ 21.11.2011 - 18:12

просто сама не могла толком сформулировать свои пожелания... извините!

Автор: p2004r 21.11.2011 - 18:16

Цитата(_alena_ @ 21.11.2011 - 17:44) *
скорее всего оно бы использовалось не для анализа, а просто для общих сведений, как айдишка. а вообще задача немного поменялась.... сказали из базы проанализировать 4 столбца. к примеру инфаркт миокарда. и найти какие то зависящие факторы. из этого сделать выборку и посмотреть будет ли достаточное количество данных.


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

просто так запихивать в glm() (generalized linear models) предикторы явно не стоит. сейчас понятно что имеет место зависимая бинарная --- выжил-нет.

как я понял мы ищем что связано с этой переменной? (и её в самом файле с примером данных нет?)

тогда нам надо подготовить предикторы,
Код
> read.csv2("файл с данными.csv")
    ID  Familia Vozrast Data_operatsii     Pol
1   13 Абдула?в      72     24.06.2010 Мужской
2  506   Бунчук      57     17.12.2010 Мужской
3  862  Гладчук      85     01.06.2010 Мужской
4  951 Горбенко      60     11.05.2010 Мужской
5 2163     Крoт      56     15.12.2010 Мужской
                               HronichZabol_Legkih Nevrolgiya PerenOperatsii
1                                              нет        нет             да
2                                   лёгкой степени        нет            нет
3 тяжёлые (требующие ингаляционную гормонотерапию)        нет             да
4                                  средней степени         да             да
5 тяжёлые (требующие ингаляционную гормонотерапию)        нет             да
      Stenokardiya Vremya_posle_posled_IM Gipertrof_L_ZH  IM
1 напряжения+покоя                    нет      умеренная нет
2       напряжения                    нет      умеренная нет
3 напряжения+покоя                    нет      умеренная нет
4       напряжения                    нет      умеренная нет
5              нет                    нет      умеренная нет


например словесно записана степень проявления HronichZabol_Legkih. если это степень проявления и все уровни нарастают от нет, то надо её преобразовать в ранговую величину. "нет" - 0, "легкая" - 1 и т.д. (при этом если гормонотерапия приписывается к разным уровням, то это выносится в отдельный бинарный признак).

аналогично преобразуется Gipertrof_L_ZH, тоже в ранговую величину.

если это все уровни у стенокардии то её тоже в ранговую

наиболее трудно с Vremya_posle_posled_IM. "нет" и время очень даже различные вещи что бы быть в одной переменной. тут надо думать как это представить.

Автор: p2004r 21.11.2011 - 19:01

Цитата(9oclock @ 21.11.2011 - 17:50) *
Поэтому вы легко сможете оценить эффективность и риски каждого из типов вмешателсьств с помощью критериев для связанных совокупностей. Это первое что вам, на мой взгляд, стоит сделать.


В "вашей реальности" в курсе кто такой Бонферонни?

"Ковровое бомбометание тестами" вообще самое отвратительное что можно советовать начинающему изучать анализ данных.

PS http://languagelog.ldc.upenn.edu/nll/?p=3074

Автор: TheThing 27.11.2011 - 00:10

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

Довольно продолжительное время работаю с MDR, программа в основном предназначена для поиска ассоциаций полиморфизмов одиночных нуклеотидов (single nucleotide polymprphism, SNP) и риском развития мультифакторной патологии. Метод имеет определенные преимущества над логистической регрессией, хотя обычно их применяют в "пачке" smile.gif

Для того, чтобы понять принцип работы метода, начните с этого:

http://www.ncbi.nlm.nih.gov/pubmed/12584123 (закачивайте полный текст статьи).

Кроме этого, MDR уже реализован в R: http://www.ncbi.nlm.nih.gov/pubmed/21846375

Также очень будет полезным почитать блог самого автора, если у Вас работа связана с изучением межгенных взаимодействий (эпистазис) - http://compgen.blogspot.com/

Если что-то будет не понятно - буду рад помочь!

Автор: _alena_ 30.11.2011 - 11:23

Цитата(TheThing @ 26.11.2011 - 23:10) *
Здравствуйте!

Довольно продолжительное время работаю с MDR

ой пасибки! я так рада что смогу с кем то советоваться! обещаю сильно не надоедать... пока просматриваю все материалы...

Автор: _alena_ 30.11.2011 - 12:32

TheThing, извините еще за глуппый вопрос. я алгоритм и статьи почитала... насколько поняла то этот MDR можно применять не только используя какие то гены для определения риска патологии или нахождения взаимосвязей но и в других отраслях.моя проблема в том что у меня не будет ни одного параметра по генам... а патологию нужно будет определять в зависимости от скажем инфаркта или сердечно сосудистой недостаточности. нету ли каких то ссылок с такого рода материалом??? я просмотрела и все статьи с основных сайтов и в паб меде прорылась. пока безрезультатно....или мне просто нужно будет те пераметры что есть у меня закодировать в файлик ноликами и единичками и дальше работать с ним? тогда что если не 2 значения а больше...

Автор: TheThing 2.12.2011 - 16:28

Цитата(_alena_ @ 30.11.2011 - 12:32) *
TheThing, извините еще за глуппый вопрос. я алгоритм и статьи почитала... насколько поняла то этот MDR можно применять не только используя какие то гены для определения риска патологии или нахождения взаимосвязей но и в других отраслях.моя проблема в том что у меня не будет ни одного параметра по генам... а патологию нужно будет определять в зависимости от скажем инфаркта или сердечно сосудистой недостаточности. нету ли каких то ссылок с такого рода материалом??? я просмотрела и все статьи с основных сайтов и в паб меде прорылась. пока безрезультатно....или мне просто нужно будет те пераметры что есть у меня закодировать в файлик ноликами и единичками и дальше работать с ним? тогда что если не 2 значения а больше...


Прошу прощения за столь длительный ответ, был в командировке.

Дело в том, что MDR действительно разрабатывалась для оценки межгенных взаимодействий, а также взаимодействий ген-окружающая среда, поэтому если у Вас данные не имеют генетической природы, я не советую применять этот метод (возникает вопрос, кто и зачем посоветовал Вам применять его для не генетических исследований?) В PubMed Вы таких работ не найдете. Насколько я представил Вашу задачу, то логистическая регрессия вполне может справиться. Единственное, обратите внимание, сколько у вас предикторов (и какие они - категориальные, количественные и т.д) на входе и какой размер выборки? Часто бывает, что люди запихивают абсолютно все данные, которые удалось внести в базу данных (например около 20 независимых переменных) и при этом размер выборки 40 человек. И если у "нас" такое еще может пройти, то на западе одним из главных вопросов будет - what is the power of the test?




Автор: _alena_ 11.02.2012 - 19:45

всем привет. буду благодарна за подсказки! скажите в МDR как кодируются данные? я смотрела пример там 0,1,2 когда я попыталась ввести скажем еще 3 то уже не работало... и что кодируется нулем что 1 и 2? я о том что к примеру если да то 1, если нет то 0?

Автор: p2004r 11.02.2012 - 23:04

Цитата(_alena_ @ 11.02.2012 - 19:45) *
всем привет. буду благодарна за подсказки! скажите в МDR как кодируются данные? я смотрела пример там 0,1,2 когда я попыталась ввести скажем еще 3 то уже не работало... и что кодируется нулем что 1 и 2? я о том что к примеру если да то 1, если нет то 0?


На входе метода

the dataset; an n by (p+1) matrix where the first column is the binary response
vector (coded 0 or 1) and the remaining columns are the p SNP genotypes (coded
numerically)

0 1 2 это "case of two biallelic markers with three possible genotypes"

http://en.wikipedia.org/wiki/Single-nucleotide_polymorphism

как то сразу тяжело предложить как SNP переложить на что то другое smile.gif


Автор: Olga_ 11.02.2012 - 23:48

Цитата(_alena_ @ 11.02.2012 - 17:45) *
всем привет. буду благодарна за подсказки! скажите в МDR как кодируются данные? я смотрела пример там 0,1,2 когда я попыталась ввести скажем еще 3 то уже не работало... и что кодируется нулем что 1 и 2? я о том что к примеру если да то 1, если нет то 0?


Если вы НЕ анализируете межгенные взаимодействия или же взаимодействие ген-окружающая среда, то зачем вам нужно использовать метод MDR??
MDR разрабатывался для анализа генетических данных.

Автор: _alena_ 13.02.2012 - 09:18

Цитата(Olga_ @ 11.02.2012 - 22:48) *
Если вы НЕ анализируете межгенные взаимодействия или же взаимодействие ген-окружающая среда, то зачем вам нужно использовать метод MDR??
MDR разрабатывался для анализа генетических данных.

мне сказали что если правильно закодировать данные то не важно межгенные там взаимодействия или какие то другие

Автор: Olga_ 13.02.2012 - 14:54

Цитата(_alena_ @ 13.02.2012 - 07:18) *
мне сказали что если правильно закодировать данные то не важно межгенные там взаимодействия или какие то другие


Странный совет вам дали. 0, 1, 2 обычно кодируется генотип (АА, Аа, аа).
Используйте обычные статистические пакеты, т.к. не понимая ни основ статистики, ни генетического анализа, вы не сможете правильно закодировать данные и посчитать результат.

Автор: Larina Tatjana 5.03.2012 - 19:40

Цитата(_alena_ @ 15.11.2011 - 04:58) *
есть данные по кардиологии. предоперационных набор параметров и постоперационных.планирую применить логистическую регрессиюю для определения риска того или иного вмешатальства и ислледования влияния пороков. посоветовали воспользоваться multifactor dimensionality reduction и permutation test.пока понятия не имею с чего начать и к чему приступить


Привет, _alena_ !
Хочу напомнить, что термин "Reduction" означает свёртку, уменьшение, снижение (в контексте письма) размерности пространства признаков. Т.е. это не 1 какой-то конкретный метод, а целый набор различных методов. Многие из этих методов описаны в книгах по многомерной статистике, и не только в книгах. Можете найти на Ютюбе "Канал пользователя biostat1911", где некоторые из этих методов кратко описаны в видео-формате. Это означает, что неправильно ориентироваться на выбор 1 единственного метода. Все методы этой группы взаимно дополняют друг друга. В принципе я согласна с "p2004r" в том, что логит-регрессия в данном случае более предпочтительна. Однако для того чтобы выбрать лучшие уравнения логистической регрессии, и далее верно интерпретировать эти уравнения, нужны результаты и по другим методам. А сделать корректно это под силу лишь профессиональным биостатистикам. Это ведь не вычисление дисперсии или коэффициентов корреляции. У меня тоже в своё время были аналогичные данные и задачи. И я сама кое-что наковыряла. Но когда познакомилась с результатами лог-регрессии у своего научного руководителя, которому считал профессионал, поняла, что мои результаты не имеют никакой ценности. И далее списалась с профи. В результате из сотни с лишним уравнений, полученных для разных подгрупп больных, выбрала около десятка самых ценных и удобных. Вообще надо понимать, на что лучше с большей пользой потратить время: на самоделки в сложной статистике, или на осмысление результатов, полученных профи. Я лично за второй вариант. Кстати, у америкосов в журналах прямо об этом говорится. Потому у них среди соавторов статей так много профессиональных биостатистиков.

Автор: _alena_ 18.03.2012 - 22:50

Цитата(Larina Tatjana @ 5.03.2012 - 18:40) *
Вообще надо понимать, на что лучше с большей пользой потратить время: на самоделки в сложной статистике, или на осмысление результатов, полученных профи.

Здравствуйте, Татьяна!

Я понимаю, но особо противоречить научруку не могу....сказал посмотреть что этим методом получится вот и пытаюсь как то разобраться и в логрегрессии и дискриминантном анализе и в MDR....

(((

уж совсем отчаялась....

Автор: p2004r 19.03.2012 - 11:29

Цитата(_alena_ @ 18.03.2012 - 22:50) *
Здравствуйте, Татьяна!

Я понимаю, но особо противоречить научруку не могу....сказал посмотреть что этим методом получится вот и пытаюсь как то разобраться и в логрегрессии и дискриминантном анализе и в MDR....

(((

уж совсем отчаялась....


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

Автор: _alena_ 20.03.2012 - 11:43

Цитата(p2004r @ 19.03.2012 - 10:29) *
так данные загрузите в форум в формате csv (если они не секретные конечно), с небольшим пояснением что из показателей выход, а что вход классификации. давайте вместе посмотрим что в них видно.


а вы и в МDR сможете мне что то подсказать?

Автор: TheThing 20.03.2012 - 14:00

Да выкладывайте уже, сможем-сможем smile.gif

Автор: _alena_ 21.03.2012 - 09:19

Цитата(TheThing @ 20.03.2012 - 13:00) *
Да выкладывайте уже, сможем-сможем smile.gif

Cпасибо, только не хочу чтоб кто то что то сделал, выложил и все... я хочу сама разобраться... у меня есть много вопросов....

Задача моя посмотреть какие переменные влияют на исходную "Прогресс".

Что я уже делала с этими данными - строила корреляцию Кенделла и Тауба, результаты практически не отличаются...затем все переменные вводила в дискриминантный анализ и логистическую регрессию. результаты тоже между собой не давали особых отличий. Тоесть у меня если правильно - то появился список этих переменных?
Есть еще вопрос который стоило задать вначале - правильно ли я определила тип переменных???

Если все до этого было более менее правильно то теперь мне еще нужно точно так же с помощью MDR проверить какие переменные влияют на "Прогресс"

 1.rar ( 12,36 килобайт ) : 323
 

Автор: YVR 21.03.2012 - 09:49

Цитата(_alena_ @ 21.03.2012 - 11:19) *
Cпасибо, только не хочу чтоб кто то что то сделал, выложил и все... я хочу сама разобраться... у меня есть много вопросов....

Задача моя посмотреть какие переменные влияют на исходную "Прогресс".


С уверенностью можно сказать какие переменные точно не влияют на Прогресс: СА, Stenoz артерий ног, Insult V. anemneze

Эти переменные можно исключить из рассмотрения.

Под сомнением стоят: Пол и Stenoz A. Realis, т.к. у них есть всего одно различие.

Автор: _alena_ 21.03.2012 - 10:18

мне сам принцип понять.... я просто взяла выборку из 20 человек... и не проследила что там нету различных значений

Автор: YVR 21.03.2012 - 10:22

Цитата(_alena_ @ 21.03.2012 - 12:18) *
мне сам принцип понять.... я просто взяла выборку из 20 человек... и не проследила что там нету различных значений


Чтобы понять принцип, нужны полные данные, а не отдельные выборки. У меня телепатические способности не развиты, поэтому что увидел в выборке, то и сообщил.

Автор: p2004r 21.03.2012 - 10:27

Цитата(_alena_ @ 21.03.2012 - 09:19) *
Cпасибо, только не хочу чтоб кто то что то сделал, выложил и все... я хочу сама разобраться... у меня есть много вопросов....

Задача моя посмотреть какие переменные влияют на исходную "Прогресс".


У Вас только 20 случаев? Или это маленькая выборка из основной?

Автор: _alena_ 21.03.2012 - 10:41

извините, не думала что прям так важно все данные скидывать.

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

Автор: YVR 21.03.2012 - 10:49

Цитата(_alena_ @ 21.03.2012 - 12:41) *
извините, не думала что прям так важно все данные скидывать.

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


Загружайте все что есть, если данные не секретные

А по выборке есть закономерности:

вероятность прогресса = 1 - A - B + 2AB

где:

В = (С + D) / 2

А - Shunt (1 - наличие, 0 - отсутствие)
C - AG Terapia (1 - наличие, 0 - отсутствие)
D - AIK (1 - наличие, 0 - отсутствие)

При условии, что обозначения в файле выборки соответствуют: 2 - наличие, 1 - отсутствие

Автор: p2004r 21.03.2012 - 10:53

Цитата(_alena_ @ 21.03.2012 - 10:41) *
извините, не думала что прям так важно все данные скидывать.

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


лучше больше случаев видеть конечно.

переменная Statiny : что означают её уровни?

Автор: _alena_ 21.03.2012 - 10:57

Цитата(YVR @ 21.03.2012 - 09:49) *
А по выборке есть закономерности:
вероятность прогресса = 1 - A - B + 2AB
где:
В = (С + D) / 2
А - Shunt (1 - наличие, 0 - отсутствие)
C - AG Terapia (1 - наличие, 0 - отсутствие)
D - AIK (1 - наличие, 0 - отсутствие)

наличие-2, отсутствие-1. как была получена такого рода закономерность вообще не понятно.

Автор: YVR 21.03.2012 - 11:01

Цитата(_alena_ @ 21.03.2012 - 12:57) *
наличие-2, отсутствие-1. как была получена такого рода закономерность вообще не понятно.


Банально. Элементарная теория вероятностей. Если выложите полные данные, то можно будет получить более уточненные закономерности в виде математической модели, где вместо вероятности будет частота.

Автор: _alena_ 21.03.2012 - 11:01

Цитата(p2004r @ 21.03.2012 - 09:53) *
лучше больше случаев видеть конечно.

переменная Statiny : что означают её уровни?

сейчас загружу остальное... но я ж говорю мне бы понять самой что делать да как....
Статины:
1-не применяются
2-применяются (неэффективная доза)
3-применяются (эффективная доза)
4-прекратили прием (эффективная доза)
5-прекратили прием (неэффективная доза)

Автор: YVR 21.03.2012 - 11:05

Цитата(_alena_ @ 21.03.2012 - 13:01) *
но я ж говорю мне бы понять самой что делать да как....


Учиться, учиться и еще раз учиться (с) В. И. Ленин

Теория вероятностей не является секретной, поэтому изучить ее никогда не поздно.

Автор: _alena_ 21.03.2012 - 11:21

файл

 1.rar ( 13,48 килобайт ) : 277
 

Автор: YVR 21.03.2012 - 11:45

Цитата(_alena_ @ 21.03.2012 - 13:21) *
файл


СА уже точно можно исключать

По остальным параметрам еще посмотрю. На это потребуется время.

Автор: p2004r 21.03.2012 - 11:52

Цитата(_alena_ @ 21.03.2012 - 11:01) *
сейчас загружу остальное... но я ж говорю мне бы понять самой что делать да как....
Статины:
1-не применяются
2-применяются (неэффективная доза)
3-применяются (эффективная доза)
4-прекратили прием (эффективная доза)
5-прекратили прием (неэффективная доза)


хорошо еще и его учтем сейчас,

по неполным данным логит регрессия полностью разделяет Progress

минимальная модель --- glm(formula = Progres ~ OP + Shunt + ChSS + AG.therapia + cholesterin,
family = binomial(logit), data = data.sh.f)


сейчас расчеты закончу и прокомментирую

Автор: _alena_ 21.03.2012 - 12:32

Цитата(_alena_ @ 21.03.2012 - 08:19) *
у меня есть много вопросов....
Что я уже делала с этими данными - строила корреляцию Кенделла и Тауба, результаты практически не отличаются...затем все переменные вводила в дискриминантный анализ и логистическую регрессию. результаты тоже между собой не давали особых отличий. Тоесть у меня если правильно - то появился список этих переменных?
Есть еще вопрос который стоило задать вначале - правильно ли я определила тип переменных???
Если все до этого было более менее правильно то теперь мне еще нужно точно так же с помощью MDR проверить какие переменные влияют на "Прогресс"

почему на мои вопросы никто не дал ни единого ответа frown.gif

Автор: p2004r 21.03.2012 - 12:34

Цитата(p2004r @ 21.03.2012 - 11:52) *
хорошо еще и его учтем сейчас,

сейчас расчеты закончу и прокомментирую


ха, над статинами думать надо как закодировать, так сходу не придумалось smile.gif

Код
# читаем данные в таблицу 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


 

Автор: _alena_ 21.03.2012 - 12:41

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

Автор: p2004r 21.03.2012 - 12:46

Цитата(_alena_ @ 21.03.2012 - 12:32) *
почему на мои вопросы никто не дал ни единого ответа frown.gif


По поводу кодирования признаков и выбора шкал измерения признаков:

тип кровообращения в одну переменную объединять не стоит, в анализе надо дать оценку наличию или отсутствию диагностического признака. поэтому заменяем один параметр "тип" на три эквивалентных --- тип1, тип 2, тип3.

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


Критерий эффективности признака для включения в модель целевой переменной это как меняется AIC модели в результате включения-исключения этого признака.

Автор: p2004r 21.03.2012 - 12:49

Цитата(_alena_ @ 21.03.2012 - 12:41) *
ну все здорово...спасибо за ваш труд. но извините мне от этого не тепло не холодно... я в спсс расчитываю... а не в R. тут мне понятны ваши действия, но боюсь что я не буду сейчас изучать дополнительно еще один язык... frown.gif сама ниче не делаю и людям голову морочу...



Не волнуйтесь так smile.gif
в SPSS есть и R smile.gif и логистическая регрессия... чего там увы нет, так заветной кнопки - "сделать зашибись!" frown.gif

Автор: _alena_ 21.03.2012 - 12:59

Цитата(p2004r @ 21.03.2012 - 11:49) *
чего там увы нет, так заветной кнопки - "сделать зашибись!" frown.gif

извините еще раз если вас обидела... просто действительно не знаю как с ним работать... в спсс вроде все просто выбрал выбрал все что интересует нажал кнопку и машина посчитала... вывела табличку... а как же тогда реализовать работу??? если вы говорите что там есть R??? алгоритмы закладены в спсс??? я запуталась.
и относительно разбивки это получается эти 2 переменные будут категориальные??? а остальное правильно?

Автор: p2004r 21.03.2012 - 13:09

Цитата(_alena_ @ 21.03.2012 - 12:59) *
извините еще раз если вас обидела... просто действительно не знаю как с ним работать... в спсс вроде все просто выбрал выбрал все что интересует нажал кнопку и машина посчитала... вывела табличку... а как же тогда реализовать работу??? если вы говорите что там есть R??? алгоритмы закладены в спсс??? я запуталась.
и относительно разбивки это получается эти 2 переменные будут категориальные??? а остальное правильно?


1. они не просто категориальные. Вам надо _готовить_ данные, текущие коды у этих переменных не несут информации. иначе ничего полезного в табличке после нажатия кнопки не будет.

Можно например все переменные Вашей выборки свести к одной категориальной переменной. и что spss каким то способом выдаст что то полезное на выходе зная/ что это категориальная переменная?

2. В SPSS интегрирован R (по крайней мере в последних версиях). Алгоритм логистической регрессии и там и там остается алгоритмом логистической регрессии.

2. про "остальное" не понял.

Автор: p2004r 21.03.2012 - 13:18

Цитата(p2004r @ 21.03.2012 - 12:46) *
В случае со статинами все сложнее, на самом деле там есть бинарный признак "прекратил терапию", бинарный признак "доза-терапии-эффективна", и бинарный признак "терапия велась".


Вот преобразование статинов

Код
Статины:
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

Автор: YVR 21.03.2012 - 20:50

Цитата(p2004r @ 21.03.2012 - 14:34) *
вот протокол исключения параметров из модели

Код
Progres ~ Shunt + cholesterin + diabetus.melitus + tip.1 + tip.2


Что интересно у меня нелинейная модель, но попробовал два варианта:

  1. Взял 9 первых в таблице параметров (кроме CA)
  2. Оставшиеся после исключения 5 параметров, как получилось у Вас


По п. 1 модель дала сепарабельность 96.77% т.е. в 60 из 62 наличие или отсутствие Прогресса было вычислено правильно. Теоретически подогнать модель можно и под 100% сепарабельность, но практически нельзя, т.к. модель со 100% сепарабельностью, полученная на обучающей выборке (31 пример) нестационарна. Т.е. на контрольной выборке (тоже 31 пример) имеет значительно отличающиеся матожидание и дисперсию, вычисленные по остаткам на выборке обучающей. А нестационарная модель нерепродуктивна, т.е. может быть опровергнута независимыми экспериментами.

По п. 2 модель дала сепарабельность 75.81% т.е. в 47 из 62 случаев наличие или отсутствие Прогресса было вычислено правильно. Но модель нестационарна, даже по количеству распознанных Прогрессов - на обучающей выборке их 32, а на контрольной только 15. Да впрочем почему модель нестационарна понять не сложно: все признаки кроме холестерина бинарны и распределены неравномерно, т.е. добиться более или менее приемлемой стационарности при таких данных можно только на очень больших выборках.

Автор: p2004r 22.03.2012 - 01:17

Цитата(YVR @ 21.03.2012 - 20:50) *
Что интересно у меня нелинейная модель, но попробовал два варианта:

  1. Взял 9 первых в таблице параметров (кроме CA)
  2. Оставшиеся после исключения 5 параметров, как получилось у Вас


По п. 1 модель дала сепарабельность 96.77% т.е. в 60 из 62 наличие или отсутствие Прогресса было вычислено правильно. Теоретически подогнать модель можно и под 100% сепарабельность, но практически нельзя, т.к. модель со 100% сепарабельностью, полученная на обучающей выборке (31 пример) нестационарна. Т.е. на контрольной выборке (тоже 31 пример) имеет значительно отличающиеся матожидание и дисперсию, вычисленные по остаткам на выборке обучающей. А нестационарная модель нерепродуктивна, т.е. может быть опровергнута независимыми экспериментами.

По п. 2 модель дала сепарабельность 75.81% т.е. в 47 из 62 случаев наличие или отсутствие Прогресса было вычислено правильно. Но модель нестационарна, даже по количеству распознанных Прогрессов - на обучающей выборке их 32, а на контрольной только 15. Да впрочем почему модель нестационарна понять не сложно: все признаки кроме холестерина бинарны и распределены неравномерно, т.е. добиться более или менее приемлемой стационарности при таких данных можно только на очень больших выборках.


Все можно проверить бутстрепом

Код
> ci.auc(roc.model.f)
95% CI: 0.6836-0.9026 (DeLong)
> ci.auc(roc.model.f,method="bootstrap")
95% CI: 0.6677-0.8945 (2000 stratified bootstrap replicates)
> ci.auc(roc.model)
95% CI: 0.7209-0.926 (DeLong)
> ci.auc(roc.model,method="bootstrap")
95% CI: 0.7126-0.9164 (2000 stratified bootstrap replicates)
>


если коэффициенты модели, то они тоже могут быть оценены

Код
r.boot <- t(replicate(200,
                      as.numeric((glm(Progres ~ Shunt + cholesterin + diabetus.melitus + tip.1 + tip.2,
                                      family=binomial(logit),
                                      data.sh.f[sample.int(length(data.sh.f[,1]),
                                                           replace = TRUE),]))$coefficients)))

parallel(r.boot, horizontal.axis=FALSE)


безусловно случаев крайне немного даже для сколько нибудь уверенных выводах даже для линейной модели

 

Автор: YVR 23.03.2012 - 09:37

Собрал экспертную систему в Excel файле. Вычисляет вероятность Progress по данным из выборки.

 probability.zip ( 13,49 килобайт ) : 240

Автор: _alena_ 23.03.2012 - 16:35

так а в MDR можно что то сделать???? если да то подскажите как. Спасибо!

Автор: p2004r 23.03.2012 - 17:25

Ну нелинейно так нелинейно smile.gif

Итак randomForest, он сразу пишет бутстреп оценку насколько можно доверять его результатам (естественно обучающую выборку пилит со 100% точностью)

Код
> names(data.sh.f)
[1] "X..bolnogo"            "AIK"                   "CA"                  
[4] "Progres"               "OP"                    "Shunt"                
[7] "Srok.gruppy"           "vozrast"               "IMT"                  
[10] "Stepen.Oz."            "pol"                   "tip.krovoobraschenija"
[13] "ChSS"                  "AD"                    "AG.therapia"          
[16] "Statiny"               "cholesterin"           "stenoz.a.renalis"    
[19] "stenoz.arterij.nog"    "insult.v.anamnese"     "diabetus.melitus"    
[22] "tip.1"                 "tip.2"                 "tip.3"                
[25] "statin.ter"            "statin.break"          "statin.doz"    

> randomForest(data.sh.f[,-c(1,4,16,12)], y=factor(data.sh.f$Progres))

Call:
randomForest(x = data.sh.f[, -c(1, 4, 16, 12)], y = factor(data.sh.f$Progres))
               Type of random forest: classification
                     Number of trees: 500
No. of variables tried at each split: 4

        OOB estimate of  error rate: 40.32%
Confusion matrix:
   0  1 class.error
0 15 14   0.4827586
1 11 22   0.3333333
>

важность переменных

> randomForest(data.sh.f[,c(7,8,9,17)], y=factor(data.sh.f$Progres))

Call:
randomForest(x = data.sh.f[, c(7, 8, 9, 17)], y = factor(data.sh.f$Progres))
               Type of random forest: classification
                     Number of trees: 500
No. of variables tried at each split: 2

        OOB estimate of  error rate: 40.32%
Confusion matrix:
   0  1 class.error
0 18 11   0.3793103
1 14 19   0.4242424

varImpPlot(randomForest(data.sh.f[,-c(1,4,16,12)], y=factor(data.sh.f$Progres)), type=2)


ну типа вот нелинейная важность данных для классификации.

присоединим картинку как он классифицирует по первым самым важным.

а не такая плохая модель

Код
> m.rf <-glm(Progres ~ Srok.gruppy + cholesterin + IMT + vozrast ,
+            family=binomial(logit),
+            data.sh.f)


> roc.m.rf.f <- roc(data.sh.f$Progres,               # данные из выборки
+                   predict(m.rf, type="response")) # предсказание модели


> densityplot( ~ predict(m.rf,
+                        type = "response"),
+             groups = data.sh.f$Progres,
+             plot.points = "rug",
+             auto.key = TRUE)


> plot(roc.m.rf.f)

Call:
roc.default(response = data.sh.f$Progres, predictor = predict(m.rf,     type = "response"))

Data: predict(m.rf, type = "response") in 29 controls (data.sh.f$Progres 0) < 33 cases (data.sh.f$Progres 1).
Area under the curve: 0.7827

> ci.auc(roc.m.rf.f)
95% CI: 0.6579-0.9074 (DeLong)



 

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)