검열 된 데이터를 시뮬레이션하는 방법


11

Type I 오른쪽 검열 된 관측치를 포함하는 n Weibull 분포 수명의 표본을 어떻게 시뮬레이션 할 수 있는지 궁금합니다. 예를 들어, n = 3, 모양 = 3, 스케일 = 1 및 검열 속도 = .15, 검열 시간 = .88로 설정합니다. Weibull 샘플을 생성하는 방법은 알고 있지만 R에서 오른쪽으로 검열 된 유형의 검열 된 데이터를 생성하는 방법을 모르겠습니다.

T = rweibull(3, shape=.5, scale=1)

답변:


11

( R 코딩 스타일 T 과 관련하여 변수 이름 으로 사용하지 않는 것이 가장 좋습니다. 이 변수는에 대한 별칭이므로이 TRUE방법으로 인해 문제가 발생할 수 있습니다.)


귀하의 질문은 다소 모호합니다. 그것을 해석하는 몇 가지 방법이 있습니다. 그것들을 살펴 봅시다 :

  1. 유형 1 검열 을 시뮬레이트하도록 규정합니다 . 그것은 일반적으로 실험이 일정 기간 동안 실행되고, 아직 연구를 수행하지 않은 연구 단위가 검열되었음을 의미합니다. 이것이 당신이 의미 한 바라면, 형상 및 스케일 파라미터와 검열 시간과 속도를 동시에 규정 할 수는 없습니다. 세 개를 규정하면 마지막이 반드시 고정됩니다.

    모양 매개 변수를 해결하려고합니다.
    이는 실패합니다. 모양 매개 변수가 무엇이든 관계없이 스케일 매개 변수가 1로 유지되는 Weibull 분포에서는 .88의 검열 시간에 15 %의 검열 속도를 갖는 것이 불가능한 것 같습니다.

    optim(.5, fn=function(shp){(pweibull(.88, shape=shp, scale=1, lower.tail=F)-.15)^2})
    # $par
    # [1] 4.768372e-08
    # ...
    # There were 46 warnings (use warnings() to see them)
    pweibull(.88, shape=4.768372e-08, scale=1, lower.tail=F)
    # [1] 0.3678794
    
    optim(.5, fn=function(shp){(pweibull(.88, shape=shp, scale=1, lower.tail=F)-.15)^2},
          control=list(reltol=1e-16))
    # $par
    # [1] 9.769963e-16
    # ...
    # There were 50 or more warnings (use warnings() to see the first 50)
    pweibull(.88, shape=9.769963e-16, scale=1, lower.tail=F)
    # [1] 0.3678794
    

    스케일 파라미터 해결 :

    optim(1, fn=function(scl){(pweibull(.88, shape=.5, scale=scl, lower.tail=F)-.15)^2})
    # $par
    # [1] 0.2445312
    # ...
    pweibull(.88, shape=.5, scale=0.2445312, lower.tail=F)
    # [1] 0.1500135
    

    검열 시간 해결 :

    qweibull(.15, shape=.5, scale=1, lower.tail=F)
    # [1] 3.599064
    

    검열 속도 해결 :

    pweibull(.88, shape=.5, scale=1, lower.tail=F)
    # [1] 0.3913773
    
  2. 반면에, 우리는 중도 절단 (coutout)으로 인해 연구 내내 무작위로 (그리고 일반적으로 독립적으로) 검열을 생각할 수 있습니다. 이 경우 절차는 Weibull 변수 두 세트를 시뮬레이션하는 것입니다. 그런 다음 가장 먼저 나온 것을 참고하십시오. 더 작은 값을 끝점으로 사용하고 더 작은 값이 검열 시간 인 경우 검열 된 해당 단위를 호출하십시오. 예를 들면 다음과 같습니다.

    set.seed(0775)  
    t    = rweibull(3, shape=.5, scale=1)
    t      # [1] 0.7433678 1.1325749 0.2784812
    c    = rweibull(3, shape=.5, scale=1.5)
    c      # [1] 3.3242417 2.8866217 0.9779436
    time = pmin(t, c)
    time   # [1] 0.7433678 1.1325749 0.2784812
    cens = ifelse(c<t, 1, 0)
    cens   # [1] 0 0 0
    

매우 흥미로운 답변 ( optim기능은 훌륭합니다)이지만 특정 비율의 검열을 달성하기 위해 두 번째 답변을 어떻게 교정합니까?
Dan Chaltiel

@DanChaltiel, 두 번째 것은 실제로 보정되지 않고 무작위입니다. 원하는 다른 측면을 고려할 때 원하는 비율을 달성하지 못할 수도 있습니다 (# 1과 유사). 즉 , 이벤트 분포에 대한 검열 분포를 최적화하여 모집단 비율 (관측 비율이 반복에서 반복으로 바운스 됨) 을 식별 할 수 있습니다 .
gung-복직 모니카

2

우리가 똑같은 것에 대해 이야기하고 있는지 확인하기 위해, 제 1 종 검열

... 실험에는 정해진 수의 과목 또는 항목이 있으며, 미리 결정된 시간에 실험을 중단합니다.

검열 시간 = 0.88을 사용하여 올바른 검열 데이터를 생성하려면 다음 min함수를 사용하십시오 .

T <- rweibull(3, shape=.5, scale=1)
censoring_time <- 0.88
T_censored <- min(censoring_time, T)

그러나, " 검열 비율 = 0.15 " 라고 말할 때 당신이 무엇을 의미하는지 완전히 확신하지 못합니다 ... 피험자의 15 %가 올바르게 검열되었다고 말하는가? 검열에 관한이 노트Type-I 검열에 필요한 유일한 매개 변수 가 시간을 검열하는 것이므로이 비율이 어떻게 영향을 미치는지 잘 모르겠습니다.


1
인용문은 검열에 대한 정의가 아니라 단지 예일뿐입니다. 오른쪽 검열은 각 값이 미리 결정된 임계 값과 비교 될 때 발생하며 값이 해당 임계 값을 초과하면 숫자가 아닌 검열 표시기로 대체됩니다. 어쨌든, 적용 min(또는보다 일반적으로 pmin)은에서 시뮬레이션하는 방법입니다 R. (비 생존 연구에서 올바른 검열의 예는 폐수에서 박테리아 콜로니를 분석하는 것입니다. 현미경 슬라이드에서 보이는 것을 수동으로 계수하여 수행합니다. )
whuber
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.