Hayatta kalma coxph ve rms cph'den farklı tahmin grafiği


9

Bu örnekte kullandığım termplotun kendi biraz geliştirilmiş versiyonunu oluşturdum, burada bulabilirsiniz . Daha önce SO üzerine yayınladım, ancak daha çok düşündüğümde, bunun muhtemelen gerçek kodlamadan daha çok Cox Orantılı tehlikeler modelinin yorumlanması ile ilgili olduğuna inanıyorum.

Sorun

Bir Tehlike Oranı grafiğine baktığımda, güven aralığının doğal olarak 0 olduğu bir referans noktasına sahip rms packageolmayı umuyorum ve bu durumdan cph () 'yi kullandığım halde survival package. Coxph () ile doğru davranış mı ve referans noktası nedir? Ayrıca, coxph () içindeki kukla değişken bir aralığa sahiptir ve değere0?

Misal

İşte test kodum:

# Load libs
library(survival)
library(rms)

# Regular survival
survobj <- with(lung, Surv(time,status))

# Prepare the variables
lung$sex <- factor(lung$sex, levels=1:2, labels=c("Male", "Female"))
labels(lung$sex) <- "Sex"
labels(lung$age) <- "Age"

# The rms survival
ddist <- datadist(lung)
options(datadist="ddist")
rms_surv_fit <- cph(survobj~rcs(age, 4)+sex, data=lung, x=T, y=T)

Cph grafikleri

Bu kod:

termplot2(rms_surv_fit, se=T, rug.type="density", rug=T, density.proportion=.05,
          se.type="polygon", yscale="exponential", log="y", 
          xlab=c("Age", "Sex"), 
          ylab=rep("Hazard Ratio", times=2),
          main=rep("cph() plot", times=2),
          col.se=rgb(.2,.2,1,.4), col.term="black")

bu çizimi verir:

cph () Instagram Hesabındaki Resim ve Videoları termplot2

Coxx grafikleri

Bu kod:

termplot2(surv_fit, se=T, rug.type="density", rug=T, density.proportion=.05, 
          se.type="polygon", yscale="exponential", log="y", 
          xlab=c("Age", "Sex"), 
          ylab=rep("Hazard Ratio", times=2),
          main=rep("coxph() plot", times=2),
          col.se=rgb(.2,.2,1,.4), col.term="black")

bu çizimi verir:

coxph () Instagram Hesabındaki Resim ve Videoları termplot2

Güncelleme

@Frank Harrell'in önerdiği ve son yorumunda öneriyi ayarladıktan sonra:

p <- Predict(rms_surv_fit, age=seq(50, 70, times=20), 
             sex=c("Male", "Female"), fun=exp)
plot.Predict(p, ~ age | sex,
             col="black",
             col.fill=gray(seq(.8, .75, length=5)))

Bu çok güzel bir arsa verdi:

Kafes grafiği

Ben yorumdan sonra tekrar contrast.rms baktım ve bir arsa veren bu kodu denedim ... her ne kadar muhtemelen çok daha fazla yapılabilir :-)

w <- contrast.rms(rms_surv_fit, 
                  list(sex=c("Male", "Female"), 
                       age=seq(50, 70, times=20)))

xYplot(Cbind(Contrast, Lower, Upper) ~ age | sex, 
       data=w, method="bands")

Bu çizimi ver:

Kontrast grafiği

GÜNCELLEME 2

Prof. Thernau, arazilerin güven bel eksikliği hakkında yorum yapmak için yeterince nazikti:

Kuyruktaki yumuşatıcı yivler, gamdakiler gibi, toplam (tahmin) = 0 olacak şekilde normalleştirilir. Dolayısıyla varyansın çok küçük olduğu sabit bir tek noktam yok.

Henüz GAM'ı tanımamış olmama rağmen bu sorumu yanıtlıyor gibi görünüyor : Bu bir yorum meselesi gibi görünüyor.


3
Birkaç yorum. Rms ve Design paketleri arasındaki farklar için önce biostat.mc.vanderbilt.edu/Rrms adresini okuyun . İkinci olarak, işi kaydetmek için plot.Predict yerine plot () kullanın. Üçüncüsü, her iki cinsiyet için kolayca grafik oluşturabilirsiniz, örneğin Predict kullanarak (form, yaş, seks, eğlence = exp) # exp = anti-log; sonra çizin (sonuç) veya çizin (sonuç, ~ yaş | seks). Tahmin'de "x = NA" kullanmazsınız. rms kafes grafikleri kullanır, bu nedenle normal par grafik parametreleri ve mfrow geçerli değildir. Biostat.mc.vanderbilt.edu/rms adresindeki rms ders notumdaki örneklere bakın . Contrast.rms için belgeleri daha fazla inceleyin.
Frank Harrell

1
Katkıların için teşekkür ederim. Daha iyi örneklerle kodu güncelledim ve prof ekledim. Thernau'nun yanıtı. Not: Kitabın yeni bir versiyonunu planlamanız, kesme noktası yanlılığı bölümünü genişletmeniz referans olarak çok yararlı olacaktır
Max Gordon

1
Sen kullanabilirsiniz plotve contrastyerine plot.Predictve contrast.rms. Bunun yerine byveya lengthiçinde seqkullanmak timesve contrasttam olarak ne kontrast olduğunu belirtmek böylece iki liste verecekti . Gölgelemeyi xYplotgüven bantları için de kullanabilirsiniz .
Frank Harrell

1
Teşekkürler. Ben plot.Predict kullanmayı seviyorum, çünkü o zaman RStudio'da doğru yardıma ulaşıyorum - benim durumumda tam işlev adını yazmak için harcanan zamandan çok daha hayati bir şey (autocomplete (sekme) kullanarak aslında bu kadar zaman kaybetmeden).
Max Gordon

Yanıtlar:


5

Bence güven aralığının sıfır genişlik olduğu bir nokta olmalı. Ayrıca yalnızca rms işlevlerini kullanmak için üçüncü bir yol deneyebilirsiniz. Tehlike oranı grafiği almak için contrast.rms için yardım dosyasının altında bir örnek vardır. # Yorumla başlar, tedavi ve cinsiyete göre ayrı tahminler gösterir. Oranı elde etmek için anti-log yapmanız gerekir.


1
Cevabınız için teşekkür ederim. Sence bu problemi prof. Terry Therneau bir hata / yanlış yorum olarak düşünülecekse? Ayrıca rms paketindeki grafik çözümlerini de inceledim, kontrastlar için contrast.rms kullanımını anlayamıyorum. Plot.Predict bir termplot benzer çıktı yapmak gibi görünüyor ama tam olarak ne istediğimi yapamıyorum ... soru güncellememe bakın.
Max Gordon

2
Onu soruşturmak için yazmak ve birkaç dakika önce bana verdiği havaalanına teşekkür etmek iyi olur. Yukarıda diğer sorulara yorum yapacağım.
Frank Harrell
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.