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

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

5 страниц V   1 2 3 > » 

TheThing
Отправлено: 23.10.2014 - 23:29


Дух форума
*

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


Цитата(p2004r @ 23.10.2014 - 22:03) *
тон которым вы "просите" "помочь сообществу", а вернее себе, не оставляет никаких шансов что кто то кинется вам помогать.


Поверьте, что количество моих постов и личных сообщений, где я помог людям, значительно превосходят те случаи, когда я просил о помощи smile.gif
В этом вопросе мне помощь не нужна, я пользуюсь прекрасной реализацией MDR на Java, был интерес, как пользоваться этим алгоритмом в R, но благодаря Вам - интерес пропал, видимо это у нас взаимно smile.gif
  Форум: Медицинская статистика · Просмотр сообщения: #17639 · Ответов: 29 · Просмотров: 11273

TheThing
Отправлено: 23.10.2014 - 21:21


Дух форума
*

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


Цитата(p2004r @ 23.10.2014 - 20:49) *
внутри mdr.cv() как и любой другой кроссвалидации находится <s>неонка</s> цикл. В этом легко убедится набрав просто mdr.cv.

Данный цикл Вы должны заменить (в нем нету ни глобального присваивания, ни прочих императивных извратов), как истинный питонист на foreach(). Оная конструкция прекрасно параллелится и на кластеры, и на некластеры. Делать это за Вас мне тоже неинтересно.


С чего Вы взяли, что я истинный питонист?
Вы же сказали, что я не привел никакого кода в R по поводу метода MDR, поэтому обсуждать собственно нечего. Я привел пример своего ужасного неоптимизированного кода и в результате получил ответ чисто теоретического характера, а также что Вам это неинтересно. Почему просто не помочь сообществу в решении абсолютно конкретной задачи конкретным решением?
  Форум: Медицинская статистика · Просмотр сообщения: #17634 · Ответов: 29 · Просмотров: 11273

TheThing
Отправлено: 23.10.2014 - 21:07


Дух форума
*

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


Цитата(p2004r @ 23.10.2014 - 19:35) *
Ваш <s>питоновский</s> эровский код, на самом деле не так тормозной как Вы тут нам описываете. Просто кроме своего питона надо знать минимальные возможности продукта который Вы собрались облажать.


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

  Форум: Медицинская статистика · Просмотр сообщения: #17633 · Ответов: 29 · Просмотров: 11273

TheThing
Отправлено: 23.10.2014 - 07:09


Дух форума
*

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


Цитата(p2004r @ 13.10.2014 - 13:10) *
1) если так непосильно писать векторизированный код, а писать портянки с рекурсивными форами "массивного полинома" чувствуете себя в силе, то в Вашем распоряжении Rcpp и практически без изменений "код на ява" (в силу весьма ограниченного объема использования возможностей языка smile.gif ) можно вставить в инлайн вставку кода c++ smile.gif


Значит, чтобы решить задачу с полиномом (а таких примеров множество), человек должен знать как R так и с++? В вышеприведенном примере я использовал базовые возможности языка Java, Python и т.д., не пользуясь никакими сторонними библиотеками. Хотелось бы увидеть Вашу PRO-версию векторизированного родного R кода, которая бы могла составить конкуренцию хотя бы Python по скорости выполнения..

Цитата
2) никакого примера о тормозах MDR в письме нет -- и комментировать собственно нечего.


Прокомментируйте, пожалуйста и запаситесь терпением:

library(MDR)
data(mdr2)

fit.cv<-mdr.cv(data = mdr2, K = 3, cv = 10, ratio = NULL, equal = "HR", genotype = c(0, 1, 2))

Эта база имеет всего лишь 100 предикторов, у меня в реальной работе их тысячи. На Java и в SAS у меня это занимает секунды, а сколько у Вас в R? smile.gif
  Форум: Медицинская статистика · Просмотр сообщения: #17629 · Ответов: 29 · Просмотров: 11273

TheThing
Отправлено: 30.09.2014 - 14:07


Дух форума
*

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


Цитата(don @ 30.09.2014 - 10:34) *
А если имеет место взаимодействие снипов с параметрами? То есть, сам по себе снип и среди других снипов не информативен, а среди тех, у кого повышен какой то параметр, он играет роль?


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

Классификационная способность на выборке для обучения: 78%
Классификационная способность на выборке для тестирования: 63,8% (ну уже что-то smile.gif )

Наилучшая модель - 3-х локусная: IL6_G(-174)C,IL8_rs4073,IL12_rs3212227 кросс-валидация 10 из 10

Правила для комбинаций генотипов:
IF IL6_G(-174)C = 2 AND IL8_rs4073 = 1 AND IL12_rs3212227 = 1 THEN CLASSIFY AS 1.
IF IL6_G(-174)C = 2 AND IL8_rs4073 = 1 AND IL12_rs3212227 = 2 THEN CLASSIFY AS 0.
IF IL6_G(-174)C = 2 AND IL8_rs4073 = 1 AND IL12_rs3212227 = 0 THEN CLASSIFY AS 1.
IF IL6_G(-174)C = 2 AND IL8_rs4073 = 0 AND IL12_rs3212227 = 1 THEN CLASSIFY AS 0.
IF IL6_G(-174)C = 2 AND IL8_rs4073 = 0 AND IL12_rs3212227 = 0 THEN CLASSIFY AS 1.
IF IL6_G(-174)C = 2 AND IL8_rs4073 = 2 AND IL12_rs3212227 = 1 THEN CLASSIFY AS 0.
IF IL6_G(-174)C = 2 AND IL8_rs4073 = 2 AND IL12_rs3212227 = 2 THEN CLASSIFY AS 0.
IF IL6_G(-174)C = 2 AND IL8_rs4073 = 2 AND IL12_rs3212227 = 0 THEN CLASSIFY AS 0.
IF IL6_G(-174)C = 1 AND IL8_rs4073 = 1 AND IL12_rs3212227 = 1 THEN CLASSIFY AS 1.
IF IL6_G(-174)C = 1 AND IL8_rs4073 = 1 AND IL12_rs3212227 = 2 THEN CLASSIFY AS 0.
IF IL6_G(-174)C = 1 AND IL8_rs4073 = 1 AND IL12_rs3212227 = 0 THEN CLASSIFY AS 0.
IF IL6_G(-174)C = 1 AND IL8_rs4073 = 0 AND IL12_rs3212227 = 1 THEN CLASSIFY AS 0.
IF IL6_G(-174)C = 1 AND IL8_rs4073 = 0 AND IL12_rs3212227 = 2 THEN CLASSIFY AS 1.
IF IL6_G(-174)C = 1 AND IL8_rs4073 = 0 AND IL12_rs3212227 = 0 THEN CLASSIFY AS 0.
IF IL6_G(-174)C = 1 AND IL8_rs4073 = 2 AND IL12_rs3212227 = 1 THEN CLASSIFY AS 1.
IF IL6_G(-174)C = 1 AND IL8_rs4073 = 2 AND IL12_rs3212227 = 2 THEN CLASSIFY AS 0.
IF IL6_G(-174)C = 1 AND IL8_rs4073 = 2 AND IL12_rs3212227 = 0 THEN CLASSIFY AS 1.
IF IL6_G(-174)C = 0 AND IL8_rs4073 = 1 AND IL12_rs3212227 = 1 THEN CLASSIFY AS 0.
IF IL6_G(-174)C = 0 AND IL8_rs4073 = 1 AND IL12_rs3212227 = 2 THEN CLASSIFY AS 0.
IF IL6_G(-174)C = 0 AND IL8_rs4073 = 1 AND IL12_rs3212227 = 0 THEN CLASSIFY AS 1.
IF IL6_G(-174)C = 0 AND IL8_rs4073 = 0 AND IL12_rs3212227 = 1 THEN CLASSIFY AS 1.
IF IL6_G(-174)C = 0 AND IL8_rs4073 = 0 AND IL12_rs3212227 = 2 THEN CLASSIFY AS 0.
IF IL6_G(-174)C = 0 AND IL8_rs4073 = 0 AND IL12_rs3212227 = 0 THEN CLASSIFY AS 0.
IF IL6_G(-174)C = 0 AND IL8_rs4073 = 2 AND IL12_rs3212227 = 1 THEN CLASSIFY AS 0.
IF IL6_G(-174)C = 0 AND IL8_rs4073 = 2 AND IL12_rs3212227 = 0 THEN CLASSIFY AS 1.

0 - AA
1 - Aa
2 - aa
Classify as 0 - Control
Classify as 1 - Case

IL6_G(-174)C,IL8_rs4073,IL12_rs3212227

Cross-validation Statistics:

Training Balanced accuracy: 0.789
Training Accuracy: 0.6788
Training Sensitivity: 0.9444
Training Specificity: 0.6336
Training Odds Ratio: 29.3935 (4.5023,191.8959)
Training Χ²: 24.9117 (p < 0.0001)
Training Precision: 0.3049
Training Kappa: 0.3091
Training F-Measure: 0.461

Testing Balanced accuracy: 0.6348
Testing Accuracy: 0.6121
Testing Sensitivity: 0.6667
Testing Specificity: 0.6028
Testing Odds Ratio: 3.0357 (0.169,54.5173)
Testing Χ²: 0.6057 (p = 0.4364)
Testing Precision: 0.2222
Testing Kappa: 0.1473
Testing F-Measure: 0.3333
Cross-validation Consistency: 10/10

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение
  Форум: Медицинская статистика · Просмотр сообщения: #17546 · Ответов: 20 · Просмотров: 7104

TheThing
Отправлено: 30.09.2014 - 08:54


Дух форума
*

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


Цитата(don @ 30.09.2014 - 06:55) *
Представьте следующую картину. У нас есть большая база, порядка полутора тысяч чел., в которой собраны наблюдения по разным параметрам, но с разной степенью "перекрывания" данных между ними. Нам известны:
1) генотипы по нескольким снипам для 400 чел.,
2) параметр Х1 для 200 чел, из которых со снипами "перекрывается" 150,
3) параметр Х2 для 300 чел, из которых со снипами перекрывается 250, а с Х1 - только 15
4) параметр Х3 для 100 чел, из которых все перекрываются со снипами, но с Х2 и Х1 только 10-20.
5) и таких параметров еще десяток, с разной степенью "перекрывания" с другими.
6) для каждого из пациентов известен статус по болезни.
Чтобы лучше понять, о чем идет речь, приложу файл с большой первоначальной базой (don_base111.txt).

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

То есть, до урезания базу можно представить так (база1.png), после - как-то так (база2.png).


Наверное собирали базу одну люди, а анализировать приходится Вам smile.gif
Может быть для начала изучить полностью вопрос с генетикой по максимальной базе без добавления доп. клин. параметров? Если что-то найдем по снипам, будем хотя-бы знать, что некоторые ассоциированы с заболеванием. Если снипы обнаружить не получиться, это значительно облегчит проблему перекрытия в базе, поскольку тогда стоит копаться лишь в клин. параметрах.

Пока гляну сегодня по урезанной базе, что с остальными снипами..
  Форум: Медицинская статистика · Просмотр сообщения: #17544 · Ответов: 20 · Просмотров: 7104

TheThing
Отправлено: 29.09.2014 - 21:41


Дух форума
*

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


Цитата(don @ 29.09.2014 - 21:09) *
Прогнозируется cr (некое заболевание).
Это урезанная база, здесь cr 24 из 165, в оригинальной базе 55 из 439. Но в оригинальной базе 45 предикторов, включая 13 снипов, и громадное количество пропусков в некоторых из них (более 50%). Поэтому пришлось несколько сузить масштабы анализа, убрав часть предикторов. Возможно, это неверно. Поправьте меня, если я не прав.


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

Посмотрел немного Вашу базу, прикольная smile.gif (в том смысле, что собрано столько материала!!). Однако, например, первые три СНИПа IL1b_rs1143634, IL2_rs2069762, IL4_rs2070874, а точнее распределение их генотипов в группах больных и здоровых (cr) не позволяет их нормально анализировать, поскольку наблюдается или perfect separation (то есть классы больных и здоровых идеально расходятся и большинство алгоритмов сходит с ума поэтому) или алгоритм просто не сходится (did not converge), поскольку присутствуют не все комбинации генотипов в базе данных (может быть потому что Вы ее сократили) - это беда всех параметрических методов, в том числе и логит-регрессии(curse of dimensionality).

Что-то нужно думать с базой..
  Форум: Медицинская статистика · Просмотр сообщения: #17542 · Ответов: 20 · Просмотров: 7104

TheThing
Отправлено: 29.09.2014 - 15:07


Дух форума
*

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


Цитата(don @ 29.09.2014 - 14:00) *
anserovtv
Большое Вам спасибо за первую ссылочку (до второй пока не добрался, рабочая сеть не позволяет)! Наглядно и доступно представлен алгоритм "классического" random forests.
Однако, автор верно заметил, что классический вариант RF "не переваривает" анализ смешанных количественных и категориальных данных, в этом случае необходим cforest.
Коллеги, если кто-то натыкался на пример использования cforest, будьте добры, поделитесь!


C кодом cforest ответил Вам в личку.
Не совсем понятно, зачем Вам рассматривать каждое дерево по отдельности и что-то интерпретировать, ведь каждое дерево имеет свою индивидуальную структуру и свой прогноз, а конечный результат сводится к голосованию за результат, который дает большинство деревьев. Можно вывести структуру каждого из 100 (как в Вашем случае) деревьев, но потом все это интерпретировать будет заданием очень непростым и вряд ли полезным.

После того, как cforest выдает Вам наиболее значимые предикторы на уровне СНИПов, Вам интересно ведь посмотреть какой генотип ассоциируется с риском развития заболевания или имеет наоборот протективный эффект. Для этого очень удобно использовать комбинацию методов: случайный лес, MDR, логистическая регрессия. Случайный лес - в качестве фильтра наиболее важных СНИПов, MDR - оценка взаимодействия СНИПов и оценка каждого из генотипов, а также их комбинаций, нахождения типа связи между СНИПами. Лог. регрессия - финальный этап, создание модели, которая включает лишь факторы, которые определились как важные из первых двух методов, валидация результатов.

P.S. В Вашей базе - что прогнозируется? nat или cr? Если cr - получается, что исследуете очень редкое заболевание?
  Форум: Медицинская статистика · Просмотр сообщения: #17539 · Ответов: 20 · Просмотров: 7104

TheThing
Отправлено: 19.09.2014 - 11:13


Дух форума
*

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


Цитата(zira @ 19.09.2014 - 10:20) *
Здравствуйте, возник вопрос: ''Как SD и SE преобразовывать друг в друга?'' Может быть есть нешкольные формулы или converter? Величины необходимы для мета-анализа. Спасибо.


Что Вы имеете ввиду под нешкольными формулами? SE чего Вас интересует?
  Форум: Медицинская статистика · Просмотр сообщения: #17502 · Ответов: 2 · Просмотров: 1110

TheThing
Отправлено: 15.09.2014 - 13:59


Дух форума
*

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


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

Решил глянуть, как реализован пакет MDR в R - все хорошо, практически ничем по фичам не уступает аналогу GUI на JAVA http://sourceforge.net/projects/mdr/. Но ВРЕМЯ выполнения!! Массив из 250 наблюдений 25 предикторов - время анализа в R: 221 секунда, MDR Java: 1.2 секунд; массив 250 наблюдений 50 предикторов - R: 1950 секунд!!!, Java: 3,9 секунды. Ну и так далее...50 предикторов в генетических исследованиях - это очень мало, следовательно MDR в R пока сложно пользоваться (мне хотелось еще прикрутить алгоритм в shiny, там вообще браузер зависнет навека (((. Подобные пакеты,как mbMDR и другие работают также..

Решил взять другой пример, вычислить массивный полином (100) 500 000 раз. Код в R (время выполнения 4 минуты)

trpol2 <- function(n,x) {
mu <<- 10.0
pu <<- 0.0
pol <<- 1:100
tp1 <<- 2.0
tm1 <<- 1/2.0
for (i in 1:n) {
for (j in 1:100) {
mu <<- (mu + tp1) * tm1
pol[j] <<- mu
}
s <<- 0.0;
for (j in 1:100) {
s <<- x*s + pol[j];
}
pu <- s+pu;
}
print(pu)
}

trpol2(500000,0.2)

Код на Java, время выполнения в браузере! http://www.browxy.com/ - 2 секунды.

public class HelloWorld {
static public void main(String argv[]) {
float mu = (float)10.0;
float x,s;
float pu = (float)0.0;
int su, i, j, n;
float pol[] = new float[100];

n = 500000;
x = (float)0.2;
for(i=0; i<n; i++) {
for (j=0; j<100; j++) {
mu = (mu + (float)2.0) / (float)2.0;
pol[j] = mu;
}
s = (float)0.0;
for (j=0; j<100; j++) {
s = x*s + pol[j];
}
pu += s;
}
System.out.println(pu);
}
}

Самое смешное, код на Python, время выполнения 6 секунд:

n = 500000
x = 0.2

def t(x):
mu = 10.0
pu = 0.0
pol =[0] * 100
r = range(0,100)

for i in range(0,n):
for j in r:
pol[j] = mu = (mu + 2.0) / 2.0
su = 0.0
for j in r:
su = x * su + pol[j]
pu = pu + su
print pu

t(x)

Немного расстроился..Ладно с этими полиномами, но мне реально хотелось работать с многофакторным уменьшением размерности в R, видимо, не судьба.. weep.gif
  Форум: Медицинская статистика · Просмотр сообщения: #17488 · Ответов: 29 · Просмотров: 11273

TheThing
Отправлено: 15.09.2014 - 12:59


Дух форума
*

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


Цитата(Шахматист @ 26.08.2014 - 16:53) *
Объяснюсь. Я не крутой - поэтому по-деревянному.
Была создана база данных учитывающая симптомы, лабораторные и УЗИ данные в группе пациентов с и без заболевания. Критерии непараметриеские. Далее проанализированы различия непараметрических критериев (ОШ с ДИ, кси-квадрат). Отобраны симптомы, у которых различия отмечены при p<0,001.
Далее - идея в создании шкалы для диагностики заболевания с использованием данных симптомов. Т. е. предсказание исхода на основании имеющихся факторов. Для этого (Единственный с трудом переваренный источник - Реброва (ну еще BaseGroup), другие - ну не могу понять, от формул волосы дыбом встают), как понял, можно использовать логистическую регрессию.
В программу Statistica 6.0 занес свою базу. Модуль сТАТИСТИКА - НЕЛИНЕЙНЫЕ МОДЕЛИ - НЕЛИНЕЙНАЯ ОЦЕНКА - QUICK LOGIT REGRESSION. После выбора зависимой переменной (Наличие/отсутствие заболевания) ввожу набор независимых (в приведенном файле пока тупо все симптомы, для примера). Получаю Summary (текстовой файл прилагается). Где в этом саммэри коэффициенты регрессии для переменных? Первая строка Estimate?[attachment=1167:Model.txt]


Да, они самые в Estimate, при экспоненцировании которых, получаете отношения шансов (odds ratio).

P.S. Может все таки шахматы лучше? smile.gif
  Форум: Медицинская статистика · Просмотр сообщения: #17487 · Ответов: 3 · Просмотров: 1621

TheThing
Отправлено: 4.08.2014 - 14:52


Дух форума
*

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


Цитата(drZub @ 4.08.2014 - 00:50) *
Коллеги, помогите разобраться с терминологией нейронной сети. Есть обучающаяся выборка, тестовая и валидационная. Как правильно смотреть соотношения? Если обучающаяся имеет большее значение чем тестовая это значит, что нейронная сеть переобучилась?
Например,мне нравится самая первая модель. там TrainPerf=0,95, Testperf=0,80 Могу я скзать , что модель обладает хорошей прогностической способностью и для чего нужна валидационная выборка?


Существует Model Selection (выбор модели) - для этого ориентируемся на значения Training perf, test perf, valid. perf - понятно, что train.perf будет малоинформативной чаще всего.
Затем идет Model Assesment (оценка модели) по значениям ошибок train.error, test error & valid. error. В Вашем случае на обучающей выборке более-менее сносный результат правильной классификации, но на тестовой - очень все плохо, что говорит о возможном переобучении (overfitting).

Training set - для подгонки матрицы весов (weights).
Validation set - для тьюнинга самой архитектуры сети, например количества промежуточных слоев (hidden layers), но не изменения весов.
Test set - для общей оценки работы классификатора.
  Форум: Медицинская статистика · Просмотр сообщения: #17388 · Ответов: 2 · Просмотров: 9398

TheThing
Отправлено: 17.06.2014 - 11:05


Дух форума
*

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


Цитата(psychologist @ 15.06.2014 - 15:36) *
Скажите, нет ли сводной таблицы, где написан метод и ограничения по выборке

Например, в частности меня интересует:
Сколько минимально должно быть в выборке людей, чтобы проведение Пирсоновского и Спирмановского корр. анализа было корректным.
Хи-квадрата

Некоторые данные у меня есть. Например дисперсионный анализ надо проводить на выборке не менее в 60 ч-к и чтобы в одной группе было не менее 5
Факторный анализ требует испытуемых в 3 раза больше чем переменных


Какую величину эффекта Вы ожидаете обнаружить при проведении корреляции Пирсона или Спирмана? Если, например, 0.2 - то и минимальная выборка должна быть больше, чем если величину 0.5.

Если хотите конкретных значений, попробуйте это:
http://www.statstodo.com/SSizCorr_Pgm.php

Можно также скачать прогу GPower, там рассчитывается размер выборки для многих критериев (конечно при указании мощности, альфы и т.д.)
Можно построить стандартные ошибки для коэф. корреляции по формулам и увидеть, что приблизительно стандартная ошибка "скейлится" от размера выборки как 1/sqrt(n). Например, для коэф. корреляции 0.5, размер выборки 200 даст SE в 0.06, но для размера выборки в 50 - SE практически удвоится. Все зависит от Ваших предпочтений smile.gif
  Форум: Медицинская статистика · Просмотр сообщения: #17256 · Ответов: 16 · Просмотров: 11794

TheThing
Отправлено: 15.06.2014 - 15:15


Дух форума
*

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


1) Что означает adjusted..Вы включаете в модель один фактор_1, рассчитываете отношения шансов для этого одного "снипа"..затем создаете новую модель, в которую включаете фактор_2, получаете отношения шансов для фактора_2. Теперь, если Вы включите фактор_1 и фактор_2 в одну модель, то получите скорректированные (adjusted) отношения шансов для фактора_1 и фактора_2, поскольку в модель включаются оба фактора, поэтому OR фактора_1 корректируются относительно присутствия фактора_2 и наоборот. То есть adjusted в данном случае - это просто расчет OR относительно количества предикторов, включенных в модель..

2) Как Вы знаете, снипы (SNPs) сами по себе обладают очень маленькими величинами эффектов, то есть сам по себе 1 полиморфизм не может определить предрасположенность к заболеванию (если Вы только не исследуете моногенные заболевания, в чем я сомневаюсь). Следовательно, риск развития наиболее распространенных полигенных заболеваний, таких как артериальная гипертензия, инфаркт миокарда, сахарный диабет и др., определяется совокупностью влияний снипов, а также факторами внешней среды. Поэтому, изучая вклад каждого снипа без учета взаимодействия (строя аддитивные модели) Вы никогда не докопаетесь до истины. Для этого необходимо изучать межгенные взаимодействия с целью определить, например, усиливает ли Снип1 влияние Снипа 2, какая связь между Снипом1 и Снипом2? Для решения подобных задач был разработан целый спектр подходов и алгоритмов, основные из них приведены на рисунке ниже.
Прикрепленное изображение


Из этого списка очень хорошие результаты показывают Multifactorial Dimensionality reduction и Random Forest с модификацией Catherine Strobl. Про первых подход можно ознакомиться на сайте MDR:
http://www.multifactordimensionalityreduction.org/
Статьи про MDR, например:
http://www.ncbi.nlm.nih.gov/pmc/articles/PMC1226028/
Вторую прикрепил здесь.
Прикрепленный файл  multifactor1.pdf ( 648,61 килобайт ) Кол-во скачиваний: 276


Метод хороший и работает как для подхода ген-кандидат (как в Вашем случае), так и для полногеномных исследований, когда количество снипов будет от 100 тысяч (здесь логистическая регрессия загнется в результате "curse of dimensionality").
3) Какой из снипов делает наибольший вклад в риск развития заболевания позволит Вам определить, например, Random Forest с модификацией Catherine Strobl ("тетя" из Германии, которая всю жизнь занимается лишь случайными лесами, ей можно доверять smile.gif ). Погуглите Strobl C. An Introduction to Recursive Partitioning: Rationale, Application and Characteristics of Classification and Regression Trees, Bagging and Random Forests. Должны быть статьи в свободном доступе, если не найдете, вышлю Вам. Также этот метод реализовал в скрипте R, если работаете в R (или пока не работаете) - тоже могу выслать.

Для статьи в хорошем журнале или для кандидатской (докторской) хорошего уровня, расчет лишь OR c р-values - явно недостаточно. Любая хорошая конференция, посвященная проблемам биоинформатики и определения SNP's, включает вышеприведенные методы.
  Форум: Медицинская статистика · Просмотр сообщения: #17251 · Ответов: 20 · Просмотров: 7104

TheThing
Отправлено: 21.05.2014 - 17:26


Дух форума
*

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


Цитата(nokh @ 21.05.2014 - 16:46) *
По мне так именно так и получается smile.gif. Я - за грамотное использование терминов. Термины в науке нужны для ускорения передачи информации, а не для её искажения. Раз есть "связь" и "взаимосвязь" - можно выбрать более точный, и получается, что взаимосвязь - более узкий и конкретизированный (пусть даже его и употребляют не подразумевая механизмов). То, что это не синонимы - всё равно понятно. Например, мы говорим: "найти связь между такими-то показателями и возрастом", но не говорим "найти взаимосвязь между такими-то показателями и возрастом" - как-то не по-русски звучит ну или по-деревенски, слух режет. Но почему-то когда люди обнаруживают связь, часто тут же обзывают её "взаимосвязью" - по мне так так же безграмотно и слух режет. Ну это я так, поворчал о своём, с темой-то про r=0 всё понятно...


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

P.S. получается, что когда Вы ворчите, часто выплывают важные нюансы smile.gif Спасибо!

  Форум: Медицинская статистика · Просмотр сообщения: #17151 · Ответов: 15 · Просмотров: 5489

TheThing
Отправлено: 21.05.2014 - 11:23


Дух форума
*

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


Цитата(nokh @ 21.05.2014 - 04:57) *
Если ДИ перекрываются - различия статистически незначимы (р<0,05), если не перекрываются - значимы.


Это не всегда так..если ДИ не перекрываются - мы всегда можем быть уверены в том, что это стат. значимые отличия. Однако обратного мы сказать не можем - если ДИ перекрываются - это может быть как стат. значимый результат так и стат. незначимый..
  Форум: Медицинская статистика · Просмотр сообщения: #17147 · Ответов: 5 · Просмотров: 2643

TheThing
Отправлено: 21.05.2014 - 11:06


Дух форума
*

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


Цитата(nokh @ 21.05.2014 - 04:16) *
А при чём тут "зависимость" вообще? Зависимости мы оцениваем регрессией, а корреляция - это мера связи. Связь и зависимость - разные вещи. И в википедии правильно написано, что "Correlation refers to any of a broad class of statistical relationships involving dependence" (выделено мной). Связь - более общее явление; в основе связи может лежать как зависимость одного показателя от другого (прямая или обратная, непосредственная или опосредованная), так и зависимость обоих показателей от третьей величины. Известный пример - связь между ростом рождаемости у людей и ростом численности популяции аистов в которой нет зависимости одного от другого, только обоих от третьего. Т.о. связь двух показателей не всегда сводится к зависимости и при использовании r следует говорить о линейности связи. Также мне не нравятся термины "взаимодействуют" и "взаимосвязь", которые предполагают сразу знание механизма: первое действует на второе, а второе на первое, или первое связано со вторым, а второе с первым. Если обнаруживается связь между уровнем радиации и числом мутаций, то мы знаем, что она скорее всего обусловлена зависимостью, но действие здесь одностороннее: уровень мутаций в свою очередь никак не влияет на источник радиации, т.е. ни о каком "взаимо" речи не идёт. Т.о. расхожий в научных кругах термин "взаимосвязь" в подавляющем большинстве случаев употребляется неверно.


Тогда получается, что 90% русскоязычной литературы по статистике написано с ошибкой, даже в Вики "Корреля́ция (от лат. correlatio ? соотношение, взаимосвязь), корреляционная зависимость - статистическая взаимосвязь бла-бла..". Значит слово "relationship", которое по словарю переводится как связь и как взаимосвязь, нельзя применять к статистике как взаимосвязь, а только как связь.
Относительно корреляционной зависимости (если вообще можно так говорить..) - как статистическая взаимосвязь..мне кажется, что здесь основной акцент ставится на статистическую взаимосвязь, а не механизм в реальной жизни - так же как статистическая значимость не означает практическую (клиническую) значимость в реальной жизни и не свидетельствует о большом открытии..

Мне в основном приходится общаться на англ и читать англ. литературу, там все просто - relationship..русский язык как всегда сложнее, поэтому и открыл тему..
  Форум: Медицинская статистика · Просмотр сообщения: #17146 · Ответов: 15 · Просмотров: 5489

TheThing
Отправлено: 20.05.2014 - 23:58


Дух форума
*

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


Цитата(p2004r @ 20.05.2014 - 20:27) *
Вот так и интерпретирую http://en.wikipedia.org/wiki/Correlation_and_dependence

Если принципиально только два показателя взаимодействуют, то прежде всего смотрю на scatterplots. После этого и делаю заключение о природе relationship.


Да, в Вики четко выделяют,что условием является линейная зависимость (чего не скажешь про другие книги и журналы). В книге, в которой Вы являетесь со-автором (Наглядная статистика, используй R), тоже про это четко написано smile.gif

  Форум: Медицинская статистика · Просмотр сообщения: #17143 · Ответов: 15 · Просмотров: 5489

TheThing
Отправлено: 20.05.2014 - 23:52


Дух форума
*

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


Цитата(DoctorStat @ 20.05.2014 - 16:43) *
На уровне значимости тра-та-та-та линейная зависимость между нормально распределенными случайными величинами X и Y отсутствует.


Но ведь может быть, что они нормально распределены, но связь нелинейная. Я почему спросил - очень часто в книгах и на защитах упускают момент, что обязательным условием для применения и интерпретации r, является линейная зависимость и не проверяют, какая зависимость между переменными (хотя бы элементарно с помощью графиков) и просто говорят r ~ 0,00.., значит связь отсутствует. Но ведь может быть, что связь очень сильная, просто зависимость нелинейная, а r = 0.

Кстати, набрел на интересную статью:

M. D. Nefzger, James Drasgow, The needless assumption of normality in Pearson's r.
Это конечно тоже противоречит тому, что мы слышим везде и всюду. Статистика вроде точная наука, но почему столько мнений ? smile.gif
  Форум: Медицинская статистика · Просмотр сообщения: #17142 · Ответов: 15 · Просмотров: 5489

TheThing
Отправлено: 20.05.2014 - 23:43


Дух форума
*

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


Цитата(100$ @ 20.05.2014 - 14:37) *
Очень понравился перевод: в исходных предложениях фамилия Пирсона не встречалась, а в переводе - пожалуйста. Не зря говорится: "Мастерство не пропьешь". Народ давно заметил. )))


Имеется ввиду Пирсона, я ссылки копировал из разделов книг, где обсуждается Pearson's r. Сам раздел скопировать забыл smile.gif
  Форум: Медицинская статистика · Просмотр сообщения: #17141 · Ответов: 15 · Просмотров: 5489

TheThing
Отправлено: 20.05.2014 - 14:10


Дух форума
*

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


Очень часто (даже в солидных) в книгах встречаю утверждения, приблизительно следующего характера:
1) A correlation of zero means there is no relationship between the two variables.
2) When no relationship (or zero correlation) is present what we see is that no relationship can be seen between two variables.
3) If r = 0, then there is no relationship between the data y and x: we can?t make any prediction about how y should change if we vary x.

Для тех, кто в школе учил французкий - если коэфф. корреляции Пирсона = 0, между переменными х и у нет связи.

Интересно было бы узнать мнение участников форума, кто соглаен/ не согласен. Как Вы интерпретируете r = 0 ?
  Форум: Медицинская статистика · Просмотр сообщения: #17136 · Ответов: 15 · Просмотров: 5489

TheThing
Отправлено: 28.03.2014 - 11:17


Дух форума
*

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


Цитата(p2004r @ 27.03.2014 - 22:33) *
0. Имея в руках фактически Схему вспоминать о Питоне и прочих перлах просто неприлично (а регексы и так доступны в самом R) smile.gif Потребность в любой базе данных тоже сильно преувеличенна ввиду наличия куда более эффективных возможностей самого R (plyr, reshape & company), скорее понадобится использование mapreduce, чем окаменелого SQL

1. "S is one of several statistical computing languages that were designed at Bell Laboratories, and first took form between 1975?1976." © smile.gif Ну а потыренные возможности из APL представляют собой вообще первые диалоговые многопользовательские системы анализа данных.

2. Что касается размера обрабатываемых данных. а) В R есть возможность не только отправить на обработку данные _любого_ размера, но и дождаться результата данной обработки --- это реализация SPMD. б) вариант "просто запустить на обработку" тоже доступен -- ff: memory-efficient storage of large data on disk and fast access functions и куча аналогов (в этом случае даже синтаксис несколько усложниться, хотя SAS догнать не удастся smile.gif )

3. Что касается вообще идеи проприетарного неизвестного полностью в подробностях своей реализации алгоритма анализа в научной работе... Ну у меня нет слов smile.gif круче только делать ссылки на учебники smile.gif

4. Я _очень_ быстро читаю, но дочитать всю литературу о использовании R я просто физически не в состоянии smile.gif


0. Питон + Pandas могут обрабатывать огромные массивы данных значительно быстрее и эффективнее чем R, грустно, но факт. Я привел эту солянку не из своих собственных размышлений, а после просмотра многих требований по вакансии data scientist на западе. Вы можете (и я могу) использовать только R в своей работе, этого никто не запрещает, но этого недостаточно, чтобы получить data analytics например в google, а я все таки всегда ориентировался на западные тенденции, поскольку они лет на 200 впереди наших. К тому же на западе, Вы найдете намного быстрее и более оплачиваемую работу, если Вы знаете SAS, а не R (грустно, но тоже факт). Нужна кому-то эта вакансия или не нужна - это след. вопрос, может у нас (или у Вас) в стране data scientis и так жируют..

1. R и S - это ведь не на 100% одно и тоже (хотя даже S вышел позже SAS). В своем 1 пункте я писал, что огромные институты использовали SAS и написали кучу кода, которую не будут переводить на R. Разве это не объясняет, почему люди не будут переходить на R? Вы пишите про S, но это ведь не объясняет почему люди используют SAS smile.gif

2. Я также написал, что есть обходные пути обработки - можно дождаться (а можно и не дождаться) - но это все доп. пакеты, доп. функции, в SAS это работает по-умолчанию, просто разные модели хранения данных.

3. Иногда, наверное, лучше выбрать неизвестный проприетарный алгоритм от SAS, который был апробирован в течении 30 лет, чем известный open source от дяди Васи (Вы же согласны с тем, что среди 5000 пакетов есть и пакеты от Васей? smile.gif )

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

Я уважаю Вашу любовь к R (сам его очень люблю smile.gif ), но Вы подаете информацию так, как-будто в R нет недостатков и это единственное, что нужно знать data scientist. Это ведь не так..
  Форум: Медицинская статистика · Просмотр сообщения: #16766 · Ответов: 29 · Просмотров: 11273

TheThing
Отправлено: 27.03.2014 - 12:45


Дух форума
*

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


Цитата(p2004r @ 27.03.2014 - 11:53) *
"Дед Мороз существует!" ТМ


Вы не согласны с моими аргументами? Если нет, объясните, пжста, почему smile.gif

А вообще, в русскоязычном комьюнити подобные темы размножаются на многие страницы - это такие же холивары, как какой язык лучше С++ или C#? И пока наши умельцы будут спорить, что лучше R или SAS, профи на западе выучат R+SAS+mysql+немного Perl'a + разбавят Python - это стандартная солянка data scientist за бугром. А если человеку этого всего не нужно в ежедневной работе, то достаточно будет и Экселя.
  Форум: Медицинская статистика · Просмотр сообщения: #16748 · Ответов: 29 · Просмотров: 11273

TheThing
Отправлено: 27.03.2014 - 10:44


Дух форума
*

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



1) Первая и, наверное, самая главная причина, почему люди предпочитают SAS - это история, традиция и привычка. SAS работает начиная с 1970 года, R - значительно моложе. За эти годы в фармацевтических компаниях и банках было написано столько кода, что придется потратить десятилетия, чтобы переписать это на R. Никто этого делать не будет, поэтому все "серьезные" организации и конторы с историей работали и будут работать в SAS.

2) Качество литературы все таки на голову выше в SAS - про R в последние годы вышло довольно много хороших книг, однако в целом, еще не дотягивает до SAS - если в R отдельные книги хороши, то в SAS каждая книга - шедевр.

3) Функционал R поразительно возрастает с помощью пакетов, однако есть обалденные пакеты, а есть - откровенная лажа, поэтому Вам необходимо искать и хорошо искать, чтобы быть уверенным в корректном анализе. За качество функционала SAS отвечает SAS Institute - монстр с многолетней историей.

4) Для анализа данных за последние 15 лет, которые могут занимать несколько десятков гигабайт, в SAS можно обработать на машине с 4 Гб памяти, R - все данные хранит в ОЗУ, поэтому здесь могут возникнуть проблемы. И хотя есть обходные пути, которые позволяют обработать данные в R, которые занимают больше памяти, чем имеется на машине, над этим приходится шаманить, а в SAS все работает out-of-the-box.

5) Если в R что-то полетит или однажды он сойдет с ума у Вас на компе, разруливать эту ситуацию и форматировать жесткий диск будете Вы сами, а в SAS Вам всегда окажут техническую помощь в любое время суток SAS Institute.

6) SAS имеет несколько корявый синтаксис, но это дело привычки - за 30 лет пользования Вы этого не заметите.

7) Вы в курсе про стоимость SAS?

Не сочтите за рекламу SAS - сам пользуюсь и буду сидеть на R laugh.gif
  Форум: Медицинская статистика · Просмотр сообщения: #16744 · Ответов: 29 · Просмотров: 11273

TheThing
Отправлено: 21.01.2014 - 20:28


Дух форума
*

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


Цитата(Вале а @ 21.01.2014 - 19:39) *
покупайте лучше у Петрова R. В 21-й век с командной строкой!! )


Век здесь ни при чем, профи data science работают и будут работать с командной строкой R или командной строкой IPython, юзеры - жмут на кнопки в меню smile.gif
  Форум: Медицинская статистика · Просмотр сообщения: #16386 · Ответов: 12 · Просмотров: 6863

5 страниц V   1 2 3 > » 

Открытая тема (есть новые ответы)  Открытая тема (есть новые ответы)
Открытая тема (нет новых ответов)  Открытая тема (нет новых ответов)
Горячая тема (есть новые ответы)  Горячая тема (есть новые ответы)
Горячая тема (нет новых ответов)  Горячая тема (нет новых ответов)
Опрос (есть новые голоса)  Опрос (есть новые голоса)
Опрос (нет новых голосов)  Опрос (нет новых голосов)
Закрытая тема  Закрытая тема
Тема перемещена  Тема перемещена