R'de regresyon spline'ları ile Lojistik Regresyon


12

İngiltere'de kafa travması veri tabanındaki retrospektif verilere dayanan bir lojistik regresyon modeli geliştiriyorum. Kilit sonuç 30 günlük mortalite ("Hayatta Kalma" ölçüsü olarak ifade edilir). Önceki çalışmalarda sonuç üzerinde önemli etkisi olduğuna dair kanıtları yayınlanmış diğer önlemler şunlardır:

Year - Year of procedure = 1994-2013
Age - Age of patient = 16.0-101.5
ISS - Injury Severity Score = 0-75
Sex - Gender of patient = Male or Female
inctoCran - Time from head injury to craniotomy in minutes = 0-2880 (After 2880 minutes is defined as a separate diagnosis)

İkili bağımlı değişken göz önüne alındığında, bu modelleri kullanarak, lrm kullanarak bir lojistik regresyon oluşturdum.

Model değişken seçim yöntemi, aynı tanıyı modelleyen mevcut klinik literatüre dayandırılmıştır. Hepsi geleneksel olarak fraksiyonel polinomlar aracılığıyla modellenen ISS dışında doğrusal bir uyumla modellenmiştir. Hiçbir yayın yukarıdaki değişkenler arasında bilinen önemli etkileşimleri tanımlamamıştır.

Frank Harrell'in tavsiyelerini takiben, ISS'yi modellemek için regresyon spline'ları kullanmaya devam ettim (bu yaklaşımın aşağıdaki yorumlarda vurgulanan avantajları vardır). Bu nedenle model aşağıdaki gibi önceden belirtilmiştir:

rcs.ASDH<-lrm(formula = Survive ~ Age + GCS + rcs(ISS) +
    Year + inctoCran + oth, data = ASDH_Paper1.1, x=TRUE, y=TRUE)

Modelin sonuçları:

> rcs.ASDH

Logistic Regression Model

lrm(formula = Survive ~ Age + GCS + rcs(ISS) + Year + inctoCran + 
    oth, data = ASDH_Paper1.1, x = TRUE, y = TRUE)

                      Model Likelihood     Discrimination    Rank Discrim.    
                         Ratio Test            Indexes          Indexes       
Obs          2135    LR chi2     342.48    R2       0.211    C       0.743    
 0            629    d.f.             8    g        1.195    Dxy     0.486    
 1           1506    Pr(> chi2) <0.0001    gr       3.303    gamma   0.487    
max |deriv| 5e-05                          gp       0.202    tau-a   0.202    
                                           Brier    0.176                     

          Coef     S.E.    Wald Z Pr(>|Z|)
Intercept -62.1040 18.8611 -3.29  0.0010  
Age        -0.0266  0.0030 -8.83  <0.0001 
GCS         0.1423  0.0135 10.56  <0.0001 
ISS        -0.2125  0.0393 -5.40  <0.0001 
ISS'        0.3706  0.1948  1.90  0.0572  
ISS''      -0.9544  0.7409 -1.29  0.1976  
Year        0.0339  0.0094  3.60  0.0003  
inctoCran   0.0003  0.0001  2.78  0.0054  
oth=1       0.3577  0.2009  1.78  0.0750  

Daha sonra modelden tahminlerin doğruluğunu değerlendirmek için rms paketindeki kalibrasyon fonksiyonunu kullandım. Aşağıdaki sonuçlar elde edildi:

plot(calibrate(rcs.ASDH, B=1000), main="rcs.ASDH")

Aşırı takma nedeniyle cezalandırılan bootstrap kalibrasyon eğrileri

Model tasarımının tamamlanmasının ardından, Olay Yılı'nın hayatta kalma üzerindeki etkisini, medyan değerlerini sürekli değişkenlere dayandırırken kategorik değişkenlerdeki modu göstermek için aşağıdaki grafiği oluşturdum:

ASDH <- Predict(rcs.ASDH, Year=seq(1994,2013,by=1),Age=48.7,ISS=25,inctoCran=356,Other=0,GCS=8,Sex="Male",neuroYN=1,neuroFirst=1)
Probabilities <- data.frame(cbind(ASDH$yhat,exp(ASDH$yhat)/(1+exp(ASDH$yhat)),exp(ASDH$lower)/(1+exp(ASDH$lower)),exp(ASDH$upper)/(1+exp(ASDH$upper))))
names(Probabilities) <- c("yhat","p.yhat","p.lower","p.upper")
ASDH<-merge(ASDH,Probabilities,by="yhat")
plot(ASDH$Year,ASDH$p.yhat,xlab="Year",ylab="Probability of Survival",main="30 Day Outcome Following Craniotomy for Acute SDH by Year", ylim=range(c(ASDH$p.lower,ASDH$p.upper)),pch=19)
arrows(ASDH$Year,ASDH$p.lower,ASDH$Year,ASDH$p.upper,length=0.05,angle=90,code=3)

Yukarıdaki kod aşağıdaki çıktı ile sonuçlanmıştır:

Alt ve üst ile yıl trendi

Kalan sorularım şunlar:

1. Spline Yorumu - Genel değişken için birleştirilmiş spline'ların p-değerini nasıl hesaplayabilirim?


4
İyi iş. Yılın etkisini görüntülemek için, diğer değişkenlerin varsayılan değerlere (sürekli için medyan, kategorik mod) ayarlanmasına ve x ekseninde Yıl olarak değişmesine izin vermenizi öneririz plot(Predict(rcs.ASDH, Year)). Diğer değişkenlerin farklı eğriler oluşturarak değişmesine izin verebilirsiniz plot(Predict(rcs.ASDH, Year, age=c(25, 35))).
Frank Harrell

1
Nedenini bilmiyorum - ama literatürde önyargı düzeltmeli kalibrasyon eğrilerinin birçok örneğini görmedim. İyi bir fikir gibi görünüyor
charles

1
Birden fazla df testi ile genel ilişkiyi test etmek için kullanın anova(rcs.ASDH).
Frank Harrell

Yanıtlar:


8

Modeli önceden belirtmediğiniz, ancak önemli testler ve sonuçta ortaya çıkan model değişiklikleri yaptığınızda sonuçlarınızı yorumlamak çok zordur. Ve kullandığınız uyum iyiliği testinin küresel olarak tavsiye edilmesini önermiyorum çünkü dejenere bir dağılımı var, dağılımı değil.χ2

Model uyumunu değerlendirmek için önerilen iki yol şunlardır:

  1. Öngörülerin mutlak doğruluğunu kontrol etmek için önyükleme aşırı düzeltmeli pürüzsüz parametrik olmayan (örn. * Loess) kalibrasyon eğrisi
  2. Daha esnek model spesifikasyonunun daha iyi çalışıp çalışmadığını test ederek modelin çeşitli genellemelerini inceleyin. Örneğin, fazla doğrusal olmayan veya etkileşim terimleri olabilirlik oranı veya Wald testleri yapın.χ2

Regresyon spline'larının fraksiyonel polinomlara göre bazı avantajları vardır:

  1. değerlerine sahip olabilir ; FP'lerin gerektirdiği gibi değerlerin günlüklerini alamazsınız0
  2. Bir öngörücünün kökeni hakkında endişelenmenize gerek yoktur. FP'ler sıfırın öngörücüler için "sihirli" bir kaynak olduğunu varsayarken, regresyon spline'ları bir öngörücüyü sabit olarak kaydırmak için değişmez.

Regresyon spline'ları ve doğrusallık ve katkı değerlendirmesi hakkında daha fazla bilgi için http://biostat.mc.vanderbilt.edu/CourseBios330 adresindeki çalışma kağıtlarıma ve R rmspaket rcsişlevine bakın. Aşırı takma nedeniyle cezalandırılan bootstrap kalibrasyon eğrileri için bu rms calibrateişleve bakın .


Başlangıçta ve tanı ve sonuç değişkeni ile bilinen önemi ile birlikte klinik olarak mevcut tüm değişkenlerle tam bir model oluştururken modeli önceden belirlemeye çalıştım. Önceki çalışmaların belirlediği ISS dışında, fraksiyonel polinomlar ile modellenebileceği ISS haricinde, lineer sürekli veya ikilik değişkenlerdi. İnandığım modeli geliştirmek için kullandığım yöntem, Willi Sauerbrei'nin "Çok Değişkenli Model Oluşturma" ile uyumlu. Belki de global uyum iyiliğini değerlendirmek için rms paketinizi R'de kullanabilir miyim? Öyleyse, hangi formülü önerirsiniz?
Dan Çeşmesi

Cevabımı bazılarını ele almak için genişlettim.
Frank Harrell

Model uyumunu değerlendirmek için 1 ve 2'nin yürütülmesi için paketler önerebilir misiniz? Doğrulama işlevini rms içinde kullanabilir miyim? Regresyon spline açısından, ders notlarınızı okudum ve şu anda kitabınızın bir kopyasını bulmaya çalışıyorum (eğer yapabilirsem satın alabilirim!) Regresyon spline'larının yapımı için başka bir R paketi / işlevi önerebilir misiniz? Bu modeldeki doğrusal olmayan sürekli değişkenler için? Şimdiye kadarki yardımlarınız için çok teşekkürler.
Dan Çeşmesi

Belki de Friedman'ın Çok Değişkenli Uyarlanabilir Regresyon Spline'larına dayanan dünya paketi?
Dan Çeşmesi

Son bir soru. Yaralanma Şiddet Skoru (ISS) formülü A ^ 2 + B ^ 2 + C ^ 2'dir, burada A, B ve C, bağımsız travma şiddeti skoru 1-5 olan farklı vücut parçalarıdır. Böylece bu veri setinde maksimum 75 ve minimum 1'dir. Bu formül göz önüne alındığında, fraksiyonel polinomlar, regresyon spline göre skorun gerçekte nasıl hesaplandığına daha yakın bir temsil olur mu?
Dan Fountain
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.