External Publication
Visit Post

Censored binomial models

Datamethods Discussion Forum [Unofficial] May 15, 2026
Source

Thanks for posting this very interesting problem, Ahmed. I made efforts toward a JAGS model for this, and have begun to think that it involves both truncation and censoring working together. (Surgeons for whom both A_i\le 10 and B_i\le 10 are truncated.)

I wonder what people think of the likelihood I’ve assembled here. This looks like a good opportunity to make subtle mistakes!

var S,    # number of surgeons (S ≡ No + Na + Nb)
    No,   # surgeons 1:No have both A and B counts observed
    Na,   # surgeons No+(1:Na) have only A count observed
    Nb,   # surgeons No+Na+(1:Nb) have only B count observed
    a[S], # a[s] = probability surgeon s chooses A
    N[S], # N[s] = true (poss. unk.) count of procedures for surgeon s
    L[S], # for s in (No+1):S, equal to whichever of {A,B} is observed
    A[S], # left-censored count of A procedures
    B[S]; # left-censored count of B procedures

# We introduce L[No+1:S] simply to avoid RUNTIME ERROR
# 'Possible directed cycle' in the truncated-N blocks
# of the model.
data {
  for (s in 1:No)         { L[s] = 0 }
  for (s in No+(1:Na))    { L[s] = A[s] }
  for (s in No+Na+(1:Nb)) { L[s] = B[s] }
}

model {
  for (s in 1:S) {
    a[s] ~ dbeta(0.8, 0.6) # bimodal, as if surgeons tend to be A or B 'partisans'
  }
  for (s in 1:No) {
    N[s] ~ dnegbin(0.1, 4)
    A[s] ~ dbin(a[s], N[s])
  }
  for (s in No+(1:Na)) {
    N[s] ~ dnegbin(0.1, 4) |> T(L[s], L[s]+10)
    A[s] ~ dbin(a[s], N[s])
  }
  for (s in No+Na+(1:Nb)) {
    N[s] ~ dnegbin(0.1, 4) |> T(L[s], L[s]+10)
    B[s] ~ dbin(1-a[s], N[s])
  }
}

Discussion in the ATmosphere

Loading comments...