일반 영어에서 R을 사용하여 Cox 비례 위험 회귀 모델의 해석 및 검증


14

누군가 내 Cox 모델을 평범한 영어로 설명 할 수 있습니까?

이 함수를 사용하여 다음 Cox 회귀 모델을 모든 데이터에 맞추 었 습니다cph . 내 데이터는라는 객체에 저장됩니다 Data. 변수는 w, xy연속; z두 가지 수준의 요소입니다. 시간은 개월 단위로 측정됩니다. 내 환자 중 일부가 변수에 대한 데이터가 누락되었습니다 z( NB : 아래의 Harrell 박사의 제안에 따라 모델을 편견을 피하기 위해 이러한 값을 무시하고 앞으로도 그렇게 할 것입니다).

> fit <- cph(formula = Surv(time, event) ~ w + x + y + z, data = Data, x = T, y = T, surv = T, time.inc = 12)

Cox Proportional Hazards Model
Frequencies of Missing Values Due to Each Variable
Surv(time, event)    w    x    y    z 
                0    0    0    0   14 

                Model Tests          Discrimination 
                                            Indexes        
Obs       152   LR chi2      8.33    R2       0.054    
Events     64   d.f.            4    g        0.437    
Center 0.7261   Pr(> chi2) 0.0803    gr       1.548    
                Score chi2   8.07                      
                Pr(> chi2) 0.0891                      

                   Coef    S.E.   Wald Z   Pr(>|Z|)
         w      -0.0133  0.0503    -0.26     0.7914  
         x      -0.0388  0.0351    -1.11     0.2679  
         y      -0.0363  0.0491    -0.74     0.4600  
         z=1     0.3208  0.2540     1.26     0.2067

또한 cox.zph아래 명령 을 사용하여 비례 위험의 가정을 테스트하려고 시도했지만 결과를 해석하는 방법을 모릅니다. plot()명령을 바꾸면 오류 메시지가 나타납니다.

 cox.zph(fit, transform="km", global=TRUE)
            rho chisq      p
 w      -0.1125 1.312 0.2520
 x       0.0402 0.179 0.6725
 y       0.2349 4.527 0.0334
 z=1     0.0906 0.512 0.4742
 GLOBAL      NA 5.558 0.2347

첫 번째 문제

  • 누군가 위의 결과를 일반 영어로 나에게 설명 할 수 있습니까? 나는 의학적인 배경을 가지고 있고 통계에 대한 공식적인 훈련이 없다

두 번째 문제

  • 박사 하렐에 의해 제안으로, 나는 사용하여 교차 검증을 배 (10) 내부의 100 반복을 수행하여 내 모델을 검증하고 싶습니다 rms내가 이해,이 건물 수반에서 (패키지 100 * 10 = 1000생존 시간을 예측하도록 요청 후 다른 모델을하고 한 번도 본 적이없는 환자).

    validate표시된 것처럼 함수를 사용해 보았습니다 .

    > v1 <- validate(fit, method="crossvalidation", B = 10, dxy=T)
    > v1
          index.orig training    test optimism index.corrected  n
    Dxy      -0.2542  -0.2578 -0.1356  -0.1223         -0.1320 10
    R2        0.0543   0.0565  0.1372  -0.0806          0.1350 10
    Slope     1.0000   1.0000  0.9107   0.0893          0.9107 10
    D         0.0122   0.0128  0.0404  -0.0276          0.0397 10
    U        -0.0033  -0.0038  0.0873  -0.0911          0.0878 10
    Q         0.0155   0.0166 -0.0470   0.0636         -0.0481 10
    g         0.4369   0.4424  0.6754  -0.2331          0.6700 10

    100x 리샘플링을 어떻게 수행합니까? 위의 코드는 교차 유효성 검사를 한 번만 수행한다고 생각합니다.

  • 그런 다음 내 모델이 얼마나 잘 예측되는지 알고 싶었습니다. 나는 다음을 시도했다.

    > c_index <- abs(v1[1,5])/2 + 0.5
    > c_index
    [1] 0.565984

    이것은 내 모델이 동전을 뒤집는 것보다 약간 더 낫다는 것을 의미합니까?

세번째 문제

Harrell 박사는 공변량 효과에 대한 선형성을 가정했으며, 모든 공변량 효과가 선형 인 경우 샘플의 이벤트 수는 신뢰할 수있는 모델에 적합 할 정도로 크지 않다고 지적합니다.

  • 이것은 내 모델에 일종의 상호 작용 항을 포함시켜야한다는 것을 의미합니까? 그렇다면 무엇을 넣어야하는지 조언이 있습니까?

2
처음 질문 한 지 약 3 시간 후에 위의 초기 질문을 일부 수정했습니다. 하렐 박사의 매우 유용한 조언을 따르려고 노력했습니다. 누군가가 위의 cph결과를 평범한 영어로 나에게 설명하려고 시도 하거나 그렇게 할 수있는 참고 자료를 알려 주면 여전히 감사하겠습니다 . 하렐 박사님, 지금까지 도와 주셔서 감사합니다!
Alexander

답변:


13

시작하려면 몇 가지 사항을 고려하십시오. 먼저 데이터가 누락 된 관측 값을 너무 많이 제외하면 편향이 발생합니다. 여러 대치를 고려하십시오. 둘째, 플롯 방법이 있습니다cox.zph비례 위험을 평가하는 데 유용합니다. 셋째, 공변량 효과의 선형성을 가정했습니다. 넷째, 모든 공변량 효과가 선형 (드문 경우) 인 경우 훈련 샘플의 이벤트 수는 신뢰할 수있는 모델에 적합 할 정도로 크지 않습니다. 그리고 테스트 샘플은 예측 정확도에 대한 신뢰할 수있는 평가를하기 전에 약 400 개의 이벤트가 있어야합니다. 데이터를 두 부분으로 나누기에 충분한 데이터가 있는지 확실하지 않습니다. 리샘플링 유효성 검사 (100 회 반복 10 회 교차 검증 또는 부트 스트랩 사용)가 더 나은 솔루션입니다. 원래 외부 유효성 검사 (함수 rcorr.censval.surv)와 리샘플링 내부 유효성 검사 (함수 validate, calibrate)는 모두 R rms패키지에 구현되어 있습니다. 에 대한 사례 연구rms2×2


1
하렐 박사님의 의견에 감사드립니다. plot(cox.zph(fit[[1]], transform="km", global=TRUE))그러나 입력을 시도했지만 결과는 다음과 같습니다 Error in plot.cox.zph(cox.zph(fit[[1]], transform = "km", global = TRUE)) : Spline fit is singular, try a smaller degrees of freedom. 이 함수를 잘못 호출하고 있습니까?
Alexander

1
교육 및 유효성 검사 데이터를 결합하면 75 개의 이벤트와 166 개의 관찰이 있습니다. 제안한 바와 같이, 해당 데이터가없는 13 개의 관측치에 대해 변수 "z"의 값을 대치하여 해당 문제를 제거 할 수 있습니다. 100x 10 배 교차 검증을 수행 할 것을 제안합니다. 시간이 있다면 rms 패키지를 사용하여이를 수행하는 방법에 대한 구체적인 힌트를 제공 할 수 있다면 정말 감사하겠습니다. 그동안 귀하의 웹 사이트를 계속 읽을 것입니다. 나는 앞으로 당신의 코스를 가지고 싶습니다. 불행히도, 나는 지금 유럽에서 조금 멀리 떨어져 있습니다!
Alexander

2
특이점 문제에 대해서는 다음을 수행하십시오 plot(cox.zph(...), df=2). rms예제 는 코스 노트의 사례 연구를 참조 하거나 패키지 (패키지가 필요함)를 설치하고 Hmisc도움말 파일을 표시하기 위해 다음 명령을 입력하십시오.?cph ?validate.cph ?calibrate.cph
Frank Harrell

2
도와 주셔서 감사합니다! 이번 주말에 나는 당신의 강의 노트를 인쇄했고 이번 주에 그것을 읽고 모든 사례 연구를 진행할 것입니다.
Alexander

4

관련 예제를 기반으로하는 R cph 함수의 출력은 J. Fox 의이 논문 에서 설명하기 쉽습니다 .

이 논문을 아직 읽지 않았다면이 글을 읽는 것이 좋습니다.


1
논문이 결과 해석을 어떻게 제안하는지 설명 할 수 있습니까 cph?
smillig

2
+1 참조 해 주셔서 감사합니다.이 사이트에 오신 것을 환영합니다! 우리가 독자적으로 할 수있는 답을 찾기 위해 논문의 내용을 간결하게 설명 할 수 있다면 좋을 것입니다.
Gala

이 링크는 더 이상 존재하지 않습니다
Marcin Kosiński

1
socialsciences.mcmaster.ca/jfox/Books/Companion-1E/… 링크 가 현재 작동 중이며이 답변에서 참조 된 것과 동일한 논문으로 보입니다.
dnlbrky
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.