Sansürlü veri simülasyonu


11

Tip I sağ sansürlü gözlemleri içeren bir n Weibull dağıtım ömrü örneğini nasıl simüle edebileceğimi merak ediyorum. Örneğin n = 3, şekil = 3, ölçek = 1 ve sansürleme oranı = .15 ve sansürleme süresi = .88 olsun. Weibull örnek oluşturmayı biliyorum ama R'de sansürlenmiş tip I olan sansürlü bir veriyi nasıl oluşturacağımı bilmiyorum.

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

Yanıtlar:


11

( R Kodlama tarzı T olarak, değişken adı olarak kullanmamak en iyisidir , çünkü bu bir takma addır TRUEve bu uygulama kaçınılmaz olarak sorunlara yol açacaktır.)


Sorunuz biraz belirsiz; yorumlamanın birkaç yolu vardır. Onlardan geçelim:

  1. Tip 1 sansürü simüle etmek istediğinizi belirtiyorsunuz . Bu, deneyin bir süre boyunca yürütüldüğü ve o zamana kadar hangi çalışma birimlerinin olaya sahip olmadığı sansürlendiği anlamına gelir. Demek istediğin buysa, şekil ve ölçek parametrelerini ve sansürleme süresini ve oranını aynı anda şart koşmak (zorunlu olarak) mümkün değildir. Herhangi üçünü şart koştuktan sonra, sonuncusu mutlaka sabittir.

    Shape parametresi için çözülmeye çalışılıyor:
    Bu başarısız oluyor; shape parametresi ne olursa olsun, ölçek parametresinin 1'de tutulduğu Weibull dağılımı ile .88 sansürleme zamanında% 15 sansürleme oranına sahip olmanın imkansız olduğu görülmektedir.

    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
    

    Scale parametresi için çözme:

    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
    

    Sansür zamanı için çözme:

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

    Sansür oranının çözümü:

    pweibull(.88, shape=.5, scale=1, lower.tail=F)
    # [1] 0.3913773
    
  2. Öte yandan, sansürü çalışma boyunca rastgele (ve tipik olarak bağımsız olarak) meydana gelen bir düşünüş olarak düşünebiliriz. Bu durumda, prosedür iki Weibull varyantı setini simüle etmektir. Sonra sadece hangisinin önce geldiğine dikkat edin: daha düşük değeri bitiş noktası olarak kullanın ve eğer daha az değer sansürleme süresi ise o birimi sansürleyin. Örneğin:

    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
    

çok ilginç bir cevap ( optimişlev harika), ancak belirli bir sansür yüzdesi elde etmek için ikinci cevabınızı nasıl kalibre edersiniz?
Dan Chaltiel

@DanChaltiel, ikincisi gerçekten kalibre edilmedi - sadece rastgele. İstediğiniz diğer yönler göz önüne alındığında, istenen bir orana ulaşmak mümkün olmayabilir (# 1'e benzer). Bununla birlikte , sansürlü dağılımı olay dağılımına göre optimize ederek bir nüfus oranını (gözlemlenen oran yinelemeden tekrarlamaya zıplayacaktır) tanımlamak mümkün olabilir .
gung - Monica'yı eski durumuna döndürün

2

Sadece emin Aynı şeyden bahsediyoruz olmak, tip-I sansürleme zaman olduğu

... bir denemenin belirli sayıda deneği veya öğesi vardır ve deneyi önceden belirlenmiş bir zamanda durdurur, bu noktada kalan denekler sağa sansürlenir.

Sansürleme zamanı = 0.88 kullanarak doğru sansürlenmiş veriler oluşturmak için sadece şu minişlevi kullanırsınız :

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

Ancak, " sansür oranı = 0.15 " derken ne demek istediğinizden tam olarak emin değilim ... Deneklerinizin% 15'inin doğru sansürlendiğini mi söylemek istersiniz? Sansürle ilgili bu notlar, Type-I sansürü için gereken tek parametrenin sansürleme süresi olduğunu gösteriyor , bu yüzden bu oranın nasıl etkilendiğinden emin değilim.


1
Teklifinizin sansürün bir tanımı olmadığını unutmayın: bu sadece bir örnektir. Doğru sansürleme, her bir değer önceden belirlenmiş bir eşik ile karşılaştırıldığında ve değer bu eşiği aştığında sayısal olmayan bir sansürleme göstergesi ile değiştirildiğinde gerçekleşir. Ne olursa olsun, uygulamak min(veya daha genel olarak pmin) simüle etmenin yoludur R. (Hayatta kalmayan bir çalışmada doğru sansürlemenin bir örneği, atık sudaki bakteri kolonilerinin analizidir. Mikroskop lamı üzerinde görülebilir olanları manuel olarak sayarak yapılır. Ağır kontaminasyonla sonuç "sayılamayacak kadar çok" olarak verilir. )
whuber
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.