Predict.coxph çıktısı nasıl yorumlanır?


17

Bir coxmodel takıldıktan sonra, tahminler yapmak ve yeni verilerin göreceli riskini almak mümkündür. Anlamadığım şey, bir kişi için göreceli riskin nasıl hesaplandığı ve neye göre (yani nüfusun ortalaması)? Anlamaya yardımcı olacak kaynaklar için herhangi bir öneri (Hayatta kalma analizinde çok gelişmiş değilim, bu yüzden daha basit daha iyi)?

Yanıtlar:


32

predict.coxph()Tüm öngörücü değişkenleri için numune ortalamasına göre tehlike oranını hesaplar . Faktörler, her zamanki gibi ortalaması hesaplanabilen kukla tahminlere dönüştürülür. Cox PH modelinin log-hazard ln h ( t ) için doğrusal bir model olduğunu hatırlayın :plnh(t)

lnh(t)=lnh0(t)+β1X1++βpXp=lnh0(t)+Xβ

Burada belirtilmemiş temel tehlike. Eşdeğer, tehlike h ( t ) olarak modellenmiştir h ( t ) = h 0 ( t ) E β 1 x 1 + + β p x p = h 0 ( t ) E X- β . İki kişi arasındaki risk oranı i ve I ' belirleyici değerleri ileh0(t)h(t)h(t)=h0(t)eβ1X1++βpXp=h0(t)eXβii ve X i ' zaman bu şekilde taban tehlike bağımsız ve bağımsızt:XiXit

hi(t)hi(t)=h0(t)eXiβh0(t)eXiβ=eXiβeXiβ

Kişiler arasında hesaplanan tehlike oran için ve i ' , sadece katsayı tahminleri takın b 1 , ... , b p içiniib1,,bp , veren e X i b ve e X i ' b .β1,,βpeXibeXib

R'de bir örnek olarak, çok güzel bir tanıtım metni sağlayan Cox-PH modelindeki John Fox'un ekindeki verileri kullanıyorum . İlk olarak, verileri getiriyoruz ve serbest bırakılan mahkumların tutuklanması için basit bir Cox-PH modeli oluşturuyoruz ( fin: faktör - kukla kodlama ile mali yardım aldı "no"-> 0, "yes"-> 1 age,: serbest bırakılma sırasındaki yaş, prio: önceki mahkumiyet sayısı):

> URL   <- "http://socserv.mcmaster.ca/jfox/Books/Companion/data/Rossi.txt"
> Rossi <- read.table(URL, header=TRUE)                  # our data
> Rossi[1:3, c("week", "arrest", "fin", "age", "prio")]  # looks like this
  week arrest fin age prio
1   20      1  no  27    3
2   17      1  no  18    8
3   25      1  no  19   13

> library(survival)                                      # for coxph()    
> fitCPH <- coxph(Surv(week, arrest) ~ fin + age + prio, data=Rossi)    # Cox-PH model
> (coefCPH <- coef(fitCPH))                              # estimated coefficients
     finyes         age        prio 
-0.34695446 -0.06710533  0.09689320 

Şimdi, tahmincilerimiz için örnek ortalamaları formülüne ekliyoruz:eXb

meanFin  <- mean(as.numeric(Rossi$fin) - 1)   # average of financial aid dummy
    meanAge  <- mean(Rossi$age)                   # average age
meanPrio <- mean(Rossi$prio)                  # average number of prior convictions
rMean <- exp(coefCPH["finyes"]*meanFin        # e^Xb
           + coefCPH["age"]   *meanAge
           + coefCPH["prio"]  *meanPrio)

Şimdi ilk 4 kişinin öngörücü değerlerini formülüne ekliyoruz.eXb

r1234 <- exp(coefCPH["finyes"]*(as.numeric(Rossi[1:4, "fin"])-1)
           + coefCPH["age"]   *Rossi[1:4, "age"]
           + coefCPH["prio"]  *Rossi[1:4, "prio"])

Şimdi ilk 4 kişi için rölatif riski örnek ortalamasına göre hesaplayın ve çıktı ile karşılaştırın predict.coxph().

> r1234 / rMean
[1] 1.0139038 3.0108488 4.5703176 0.7722002

> relRisk <- predict(fitCPH, Rossi, type="risk")   # relative risk
> relRisk[1:4]
        1         2         3         4 
1.0139038 3.0108488 4.5703176 0.7722002

Tabakalı bir modeliniz varsa, karşılaştırma, predict.coxph()ortalamaların karşısındadır, bu reference, yardım sayfasında açıklanan seçenekle kontrol edilebilir .


2
+1 çünkü predict.coxph 'in yardım sayfasından tam olarak ne yaptığını açık değildir!
ocram

Bu harikaydı! Anlamak çok basit!
user4673

meanFin <- mean(as.numeric(Rossi$fin) - 1)çok mantıklı değil, çünkü finkategoriktir. modeFin <- get_Mode(Rossi$fin)Bu durumda gerek yok mu?
Zhubarb

1
@Zhubarb ikiliktir fin, bu nedenle faktörün sayısal gösterimi sadece 1 ve 2 değerlerine sahiptir. 1'in çıkarılması bize tasarım matrisinde de görünen 0 ve 1 değerleriyle kukla kodlanmış değişkeni verir. Bunun 2'den fazla seviyeye sahip faktörler için işe yaramayacağını unutmayın. Kukla değişkenlerin ortalamasının mantıklı olup olmadığı kesinlikle tartışmalıdır, ama olan budur predict.coxph().
caracal

Yani 3.01 tehlike oranını nasıl değerlendirirsiniz (örneğin relRisk [2])?
RNB
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.