2015-02-07 3 views
5

У меня есть следующая модель:Как построить модель Кокса опасности со шлицами

coxph(Surv(fulength, mortality == 1) ~ pspline(predictor)) 

где fulength является продолжительность наблюдения (включая смертность), предсказатель является предиктором смертности.

Выход выше команды заключается в следующем:

      coef se(coef) se2 Chisq DF p  
pspline(predictor), line 0.174 0.0563 0.0562 9.52 1.00 0.002 
pspline(predictor), nonl      4.74 3.09 0.200 

Как я могу построить эту модель, так что я получаю хорошую извилистую линию с 95% доверительными полосами и отношением рисков по оси у? Что я стремлюсь что-то похожее на это:

enter image description here

+0

HTTP : //stat.ethz.ch/R-manual/R-devel/library/graphics/html/curve.html http://www.r-bloggers.com/plotting-95-confidence-bands-in-r- 2/ – efrem

+0

Я использую пакеты RMS/Hmisc Фрэнка Харрелла, которые, вероятно, способны доставлять что-то очень похожее на выход, хотя я не знаю о правильном сюжете. Я статистически оскорблен составлением нормального распределения под результатами мужчин и женщин. Я не знаю, поддерживает ли rms psplines, потому что Франк предпочитает ограниченные кубические сплайны, но если вы разместите некоторые данные, я с удовольствием попробую. –

+0

Спасибо BondedDust. как вы установили эти пакеты? Когда я пытаюсь установить, я получаю сообщения об ошибках, такие как эта установка пакета «TH.data» имела ненулевой статус выхода – Oposum

ответ

4

Это когда вы получаете, когда вы запускаете первый пример в CPH СУР-пакета:?

n <- 1000 
set.seed(731) 
age <- 50 + 12*rnorm(n) 
label(age) <- "Age" 
sex <- factor(sample(c('Male','Female'), n, 
       rep=TRUE, prob=c(.6, .4))) 
cens <- 15*runif(n) 
h <- .02*exp(.04*(age-50)+.8*(sex=='Female')) 
dt <- -log(runif(n))/h 
label(dt) <- 'Follow-up Time' 
e <- ifelse(dt <= cens,1,0) 
dt <- pmin(dt, cens) 
units(dt) <- "Year" 
dd <- datadist(age, sex) 
options(datadist='dd') 
S <- Surv(dt,e) 

f <- cph(S ~ rcs(age,4) + sex, x=TRUE, y=TRUE) 
cox.zph(f, "rank")    # tests of PH 
anova(f) 
plot(Predict(f, age, sex)) # plot age effect, 2 curves for 2 sexes 

enter image description here

Поскольку комбинация пакетов rms/Hmisc использует графики решетки, аннотация с предельной функцией плотности возраста должна выполняться с помощью функций решетки. С другой стороны, если вы хотите изменить значение ответа на относительный риск, вы можете просто добавить аргумент «FUN = ехр» на Предсказать вызов и relable график, чтобы получить:

png(); plot(Predict(f, age, sex, fun=exp), ylab="Relative Hazard");dev.off() 

enter image description here

+0

Мне удалось установить 'Hmisc', но не' rms'. ошибка, которую я получаю, такова: 'ERROR: установка объектов Rd не выполнена для пакета 'quantreg' ОШИБКА: зависимость 'TH.data' недоступна для пакета 'multcomp' ОШИБКА: кванты квантов зависимостей ',' multcomp 'не являются доступно для пакета 'rms'' – Oposum

+0

Похоже, что у используемого вами репозитория есть сломанные или отсутствующие версии multcomp и quantreg. Я просто попробовал установить двоичную версию Mac multcomp из репозитория Berkeley и не имел никаких ошибок. –

+0

Выяснил альтернативный способ установки недостающих пакетов. Я получаю все шаги, но когда я пытаюсь построить график (Predict (f, predor, fun = exp), ylab = "Relative Hazard") 'Я получаю ошибку' Ошибка в value.chk (at, which (name == n), NA, np, lim): переменный предиктор не имеет пределов, определяемых datadist' – Oposum

Смежные вопросы