Как сравнить результаты регрессии Кокса |
Здравствуйте, гость ( Вход | Регистрация )
Как сравнить результаты регрессии Кокса |
8.03.2012 - 21:10
Сообщение
#16
|
|
Группа: Пользователи Сообщений: 27 Регистрация: 5.02.2012 Пользователь №: 23464 |
Просто средние ковариат? тогда вот они:
gal 25,234 cys 3341,777 efmss 0,280 |
|
8.03.2012 - 22:27
Сообщение
#17
|
|
Группа: Пользователи Сообщений: 1325 Регистрация: 27.11.2007 Пользователь №: 4573 |
...
Сообщение отредактировал DrgLena - 7.11.2022 - 01:15 |
|
8.03.2012 - 23:09
Сообщение
#18
|
|
Группа: Пользователи Сообщений: 27 Регистрация: 5.02.2012 Пользователь №: 23464 |
Н0(t) это базовый риск в момент времени t, а не функция выживаемости. Да согласен, совершенно неправильно сказал Вот по этим средним и полученным коэффициентам и получаете базовый риск, вначале в единицу времени наблюдения А чем является единица времени наблюдения? У меня максимальный период наблюдения 26 месяцев, а в полученных днях время жизни в днях Сообщение отредактировал propedevt - 8.03.2012 - 23:52 |
|
9.03.2012 - 01:00
Сообщение
#19
|
|
Группа: Пользователи Сообщений: 1325 Регистрация: 27.11.2007 Пользователь №: 4573 |
Вы сами выбираете единицу измерения времени, в зависимости от того как вы определяли время наблюдения, если вычитали две даты и преобразовывали разницу в месяцы или сразу вводили месяцы наблюдения за больным, тогда единица будет месяц, в приведенной вами ссылке, по моему, год (умножение на 1 и на 5 при расчете 5 летней выживаемости). Большинство исследователей не используют кокс медели для целей оценки времени жизни. Оцениваются exp(b) для предикторов. Ограничения не столько технические, сколько нравственные.
|
|
9.03.2012 - 08:15
Сообщение
#20
|
|
Группа: Пользователи Сообщений: 27 Регистрация: 5.02.2012 Пользователь №: 23464 |
Вычитал даты и получал дни жизни (до 805 дней максимум), в месяцы не преобразовывал.
Так, банально подсчитал PI для средних, он равен (-3.75697 х 0,280) + (0.09448 х 25,234) + (0.00019 х 3341,777) = 1,96709435 Как теперь построить график функции риска? (Н0(t) подобный такому: |
|
9.03.2012 - 10:04
Сообщение
#21
|
|
Группа: Пользователи Сообщений: 27 Регистрация: 5.02.2012 Пользователь №: 23464 |
Уважаемый p2004r, прошу меня извинить, но не сразу заметил в Вашем сообщении кроме кода, который привели, Вы указали функцию basehaz.
Написал такой простой код: baseline <- basehaz(model4, centered=FALSE) plot(baseline$time,baseline$hazard,xlab="Time",ylab="Hazard",col="red",type="l") и получил в итоге график: и для средних: baseline1 <- basehaz(model4, centered=TRUE) plot(baseline1$time,baseline1$hazard,xlab="Time",ylab="Hazard",col="red",type="l") Уважаемая DrgLena, скажите пожалуйста это и есть нужный мне график H0(t) ? Сообщение отредактировал propedevt - 9.03.2012 - 10:45 |
|
9.03.2012 - 10:59
Сообщение
#22
|
|
Группа: Пользователи Сообщений: 1325 Регистрация: 27.11.2007 Пользователь №: 4573 |
...
Сообщение отредактировал DrgLena - 7.11.2022 - 01:17 |
|
9.03.2012 - 11:25
Сообщение
#23
|
|
Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 |
Уважаемый p2004r, прошу меня извинить, но не сразу заметил в Вашем сообщении кроме кода, который привели, Вы указали функцию basehaz. Написал такой простой код: baseline <- basehaz(model4, centered=FALSE) plot(baseline$time,baseline$hazard,xlab="Time",ylab="Hazard",col="red",type="l") и получил в итоге график: Уважаемая DrgLena, скажите пожалуйста это и есть нужный мне график H0(t) ? Код > basehaz function (fit, centered = TRUE) { if (!inherits(fit, "coxph")) stop("must be a coxph object") sfit <- survfit(fit) H <- -log(sfit$surv) strata <- sfit$strata if (!is.null(strata)) strata <- factor(rep(names(strata), strata), levels = names(strata)) if (!centered) { z0 <- fit$means bz0 <- sum(z0 * coef(fit)) H <- H * exp(-bz0) } if (is.null(strata)) return(data.frame(hazard = H, time = sfit$time)) else return(data.frame(hazard = H, time = sfit$time, strata = strata)) } <environment: namespace:survival> В Вашем случае срабатывает Код sfit <- survfit(fit) H <- -log(sfit$surv) z0 <- fit$means bz0 <- sum(z0 * coef(fit)) H <- H * exp(-bz0) Именно hazard у одиночного случая по времени h(t)=h0(t)*exp(sum(z_случая*coef(fit))) h0(t) hazard для случая когда z<-0, и его считают как -log(sfit$surv) Как показывает код функция считает именно то что Вы хотели. Подставляет средние всех ковариант. Цитата Finally, the program lists the baseline cumulative hazard H0(t), with the cumulative hazard and survival at mean of all covariates in the model. Вообще то для расчетов проще использовать predict(), весь этот закат солнца в ручную признаться утомителен. Если конечно это не самоцель http://stat.ethz.ch/R-manual/R-devel/libra...dict.coxph.html Цитата The Cox model is a relative risk model; predictions of type "linear predictor", "risk", and "terms" are all relative to the sample from which they came. By default, the reference value for each of these is the mean covariate within strata. The primary underlying reason is statistical: a Cox model only predicts relative risks between pairs of subjects within the same strata, and hence the addition of a constant to any covariate, either overall or only within a particular stratum, has no effect on the fitted results. Using the reference="strata" option causes this to be true for predictions as well.
When the results of predict are used in further calculations it may be desirable to use a fixed reference level. Use of reference="sample" will use the overall means, and agrees with the linear.predictors component of the coxph object (which uses the overall mean for backwards compatability with older code). Predictions of type "expected" incorportate the baseline hazard and are thus absolute instead of relative; the reference option has no effect on these. |
|
9.03.2012 - 11:29
Сообщение
#24
|
|
Группа: Пользователи Сообщений: 27 Регистрация: 5.02.2012 Пользователь №: 23464 |
Да понял, что если риск 0,8 то выживаемость 0,2
График нужен для того чтобы научному руководителю его показать, и потом когда описывать модель его нужно будет наверное показывать:) Для конкретного больного например подсчитываю: Pi (-3.75697 х 0,4) + (0.09448 х 8) + (0.00019 х 2400) = 0,290948 Дальше беру риск например на 600 день с графика и подставляю в формулу: s(t) = exp (-0,25 x 0,290948) = 0,93 (93%) правильно? или я чего-то не понимаю |
|
9.03.2012 - 11:56
Сообщение
#25
|
|
Группа: Пользователи Сообщений: 1325 Регистрация: 27.11.2007 Пользователь №: 4573 |
|
|
9.03.2012 - 12:32
Сообщение
#26
|
|
Группа: Пользователи Сообщений: 1325 Регистрация: 27.11.2007 Пользователь №: 4573 |
Закат солнца в ручную у меня не получается с такими же значениями.
|
|
9.03.2012 - 13:24
Сообщение
#27
|
|
Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 |
Закат солнца в ручную у меня не получается с такими же значениями. Думаю надо наконец загрузить в тред конкретный датасет, зафитить конкретную модель, и пошагово сравнить все что для неё относительно этого датасета рекомендовано посчитать |
|
9.03.2012 - 13:41
Сообщение
#28
|
|
Группа: Пользователи Сообщений: 1325 Регистрация: 27.11.2007 Пользователь №: 4573 |
...
Сообщение отредактировал DrgLena - 7.11.2022 - 01:18 |
|
9.03.2012 - 14:04
Сообщение
#29
|
|
Группа: Пользователи Сообщений: 27 Регистрация: 5.02.2012 Пользователь №: 23464 |
Что-то Вы меня совсем запутали:( перечитал что мне ответили по десять раз.. не знаю что делать дальше..
Давайте начнем с начала по порядку: Есть формула в нее я подставляю pi , вычисленный для конкретного больного по его данным. Далее я должен найти h0(t) базовый риск во время t. его например беру со своего второго графика. Правильно? или Вы хотите сказать можно вычислять риск с помощью функции predict() ? |
|
9.03.2012 - 14:14
Сообщение
#30
|
|
Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 |
Что-то Вы меня совсем запутали:( перечитал что мне ответили по десять раз.. не знаю что делать дальше.. Давайте начнем с начала по порядку: Есть формула в нее я подставляю pi , вычисленный для конкретного больного по его данным. Далее я должен найти h0(t) базовый риск во время t. его например беру со своего второго графика. Правильно? или Вы хотите сказать можно вычислять риск с помощью функции predict() ? не не не Девид Блейн (С) давайте датасет (можно приатачить csv заархививовав его например rar) и на какой модели Вы остановились PS погода хорошая --- схожу в город и вернувшись непременно по шагам датасет посчитаем Сообщение отредактировал p2004r - 9.03.2012 - 14:16 |
|