Cách mô phỏng dữ liệu bị kiểm duyệt


11

Tôi đang tự hỏi làm thế nào tôi có thể mô phỏng một mẫu của n vòng đời phân phối Weibull bao gồm các quan sát được kiểm duyệt đúng loại I. Chẳng hạn, cho phép có n = 3, shape = 3, scale = 1 và tỷ lệ kiểm duyệt = .15 và thời gian kiểm duyệt = .88. Tôi biết cách tạo mẫu Weibull nhưng tôi không biết cách tạo dữ liệu bị kiểm duyệt có loại I được kiểm duyệt đúng trong R.

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

Câu trả lời:


11

(Là một vấn đề của R phong cách mã hóa, tốt nhất là không sử dụng T làm tên biến, vì nó là bí danh TRUEvà thực tế đó chắc chắn sẽ dẫn đến các vấn đề.)


Câu hỏi của bạn hơi mơ hồ; có một số cách để giải thích nó. Hãy đi qua chúng:

  1. Bạn quy định rằng bạn muốn mô phỏng kiểm duyệt loại 1 . Điều đó thường được sử dụng để có nghĩa là thử nghiệm được thực hiện trong một khoảng thời gian và bất kỳ đơn vị nghiên cứu nào không có sự kiện sau đó đều bị kiểm duyệt. Nếu đó là những gì bạn muốn nói thì không nhất thiết phải quy định các tham số hình dạng và tỷ lệ, đồng thời kiểm duyệt thời gian và tỷ lệ. Có quy định bất kỳ ba, cuối cùng là nhất thiết phải cố định.

    (Cố gắng) giải quyết tham số hình dạng:
    Điều này không thành công; dường như không thể có tỷ lệ kiểm duyệt 15% tại thời điểm kiểm duyệt là 0,88 với phân phối Weibull trong đó tham số tỷ lệ được giữ ở mức 1, bất kể tham số hình dạng là gì.

    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
    

    Giải các tham số tỷ lệ:

    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
    

    Giải quyết thời gian kiểm duyệt:

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

    Giải quyết tỷ lệ kiểm duyệt:

    pweibull(.88, shape=.5, scale=1, lower.tail=F)
    # [1] 0.3913773
    
  2. Mặt khác, chúng ta có thể nghĩ về việc kiểm duyệt là ngẫu nhiên (và thường là độc lập) xảy ra trong suốt nghiên cứu do, nói, bỏ học. Trong trường hợp đó, quy trình là mô phỏng hai bộ biến thể Weibull. Sau đó, bạn chỉ cần lưu ý đến trước: bạn sử dụng giá trị nhỏ hơn làm điểm cuối và gọi đơn vị đó được kiểm duyệt nếu giá trị nhỏ hơn là thời gian kiểm duyệt. Ví dụ:

    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
    

câu trả lời rất thú vị ( optimchức năng là tuyệt vời), nhưng làm thế nào bạn sẽ hiệu chỉnh câu trả lời thứ hai của bạn để đạt được một tỷ lệ kiểm duyệt nhất định?
Dan Chaltiel

@DanChaltiel, cái thứ 2 không thực sự được hiệu chỉnh - nó chỉ là ngẫu nhiên. Cũng có thể không đạt được tỷ lệ mong muốn, dựa trên các khía cạnh khác mà bạn muốn (tương tự như # 1). Điều đó nói rằng, có thể xác định tỷ lệ dân số (tỷ lệ quan sát được sẽ chuyển xung quanh từ lần lặp sang lần lặp) bằng cách tối ưu hóa phân phối bị kiểm duyệt so với phân phối sự kiện.
gung - Phục hồi Monica

2

Để chắc chắn rằng chúng ta đang nói về điều tương tự, kiểm duyệt loại I là khi

... một thử nghiệm có số lượng đối tượng hoặc vật phẩm được đặt và dừng thử nghiệm vào thời điểm xác định trước, tại thời điểm đó, mọi đối tượng còn lại đều được kiểm duyệt đúng.

Để tạo dữ liệu được kiểm duyệt đúng bằng thời gian kiểm duyệt = 0,88 , bạn chỉ cần sử dụng minchức năng:

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

Tuy nhiên, tôi không hoàn toàn chắc chắn ý của bạn khi bạn nói, " tỷ lệ kiểm duyệt = 0,15 " ... Bạn có ý nói rằng 15% đối tượng của bạn được kiểm duyệt đúng không? Những lưu ý về kiểm duyệt dường như chỉ ra rằng tham số duy nhất mà người ta cần cho kiểm duyệt Loại Ikiểm duyệt thời gian , vì vậy tôi không chắc tỷ lệ này ảnh hưởng như thế nào.


1
Lưu ý rằng trích dẫn của bạn không phải là một định nghĩa về kiểm duyệt: nó chỉ là một ví dụ. Kiểm duyệt phải xảy ra khi mỗi giá trị được so sánh với ngưỡng được xác định trước và được thay thế bằng chỉ báo kiểm duyệt không bằng số khi giá trị vượt quá ngưỡng đó. Bất kể, áp dụng min(hoặc, nói chung hơn, pmin) là cách để mô phỏng nó trong R. (Một ví dụ về kiểm duyệt đúng trong một nghiên cứu không tồn tại là phân tích các khuẩn lạc vi khuẩn trong nước thải. Nó được thực hiện bằng cách đếm thủ công những cái nhìn thấy trên một phiến kính hiển vi. Với ô nhiễm nặng, kết quả được đưa ra là "quá nhiều để đếm". )
whuber
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.