Stima dei rapporti di rischio adeguati nei dati binari usando la regressione di Poisson


9

Sono interessato a stimare un rapporto di rischio rettificato, analogo a come si stima un rapporto di probabilità rettificato utilizzando la regressione logistica. Alcune pubblicazioni (ad esempio, questo ) indicano che l'uso della regressione di Poisson con errori standard di Huber-White è un modo basato su modelli per farlo

Non ho trovato letteratura su come la regolazione per le covariate continue influisce su questo. La seguente semplice simulazione dimostra che questo problema non è così semplice:

arr <- function(BLR,RR,p,n,nr,ce)
{
   B = rep(0,nr)
   for(i in 1:nr){
   b <- runif(n)<p 
   x <- rnorm(n)
   pr <- exp( log(BLR) + log(RR)*b + ce*x)
   y <- runif(n)<pr
   model <- glm(y ~ b + x, family=poisson)
   B[i] <- coef(model)[2]
   }
   return( mean( exp(B), na.rm=TRUE )  )
}

set.seed(1234)
arr(.3, 2, .5, 200, 100, 0)
[1] 1.992103
arr(.3, 2, .5, 200, 100, .1)
[1] 1.980366
arr(.3, 2, .5, 200, 100, 1)
[1] 1.566326 

In questo caso, il rapporto di rischio reale è 2, che viene recuperato in modo affidabile quando l'effetto covariata è piccolo. Ma quando l'effetto covariata è grande, questo viene distorto. Presumo che ciò si verifichi perché l'effetto covariata può spingere verso l'alto contro il limite superiore (1) e questo contamina la stima.

Ho guardato ma non ho trovato alcuna letteratura sull'adeguamento per le covariate continue nella stima del rapporto di rischio aggiustato. Sono a conoscenza dei seguenti post su questo sito:

ma non rispondono alla mia domanda. Ci sono dei documenti su questo? Ci sono avvertenze note che dovrebbero essere esercitate?



Anche queste domande e risposte stats.stackexchange.com/questions/18595/… possono essere d'aiuto.
mdewey,

Risposte:


1

Non so se hai ancora bisogno di una risposta a questa domanda, ma ho un problema simile in cui mi piacerebbe usare la regressione di Poisson. Nell'eseguire il tuo codice, ho scoperto che se avessi impostato il modello come

model <- glm(y ~ b + x, family=binomial(logit)

piuttosto che come modello di regressione di Poisson, si verifica lo stesso risultato: l'OR stimato è ~ 1,5 all'avvicinarsi di ce 1. Quindi, non sono sicuro che il tuo esempio fornisca informazioni su un possibile problema con l'uso della regressione di Poisson per gli esiti binari.


1
Il problema con l'adattamento di un modello logit, sebbene non porti a rischi previsti superiori a 1, è che il rapporto di probabilità è uno stimatore distorto del rapporto di rischio e che la distorsione aumenta drammaticamente man mano che il risultato diventa più prevalente. È possibile specificare binomial(link=log)di adattarsi effettivamente a un modello di rischio relativo, ma raramente converge a causa di risultati eccessivi.
AdamO,

1

Trovo che l'utilizzo della massima verosimiglianza diretta con la funzione di probabilità adeguata migliori notevolmente la stima del rischio relativo. È possibile specificare direttamente la funzione di rischio troncato come tasso previsto per il processo.

inserisci qui la descrizione dell'immagine

Di solito usiamo l'Assia per creare EC per la stima. Non ho esplorato la possibilità di usarla come matrice "B" (carne) nell'errore Huber White e di usare i rischi previsti per ottenere la matrice "A" (pane) ... ma sospetto che possa funzionare! Più fattibilmente è possibile utilizzare un bootstrap per ottenere errori del modello che sono robusti rispetto a una relazione varianza media non specificata correttamente.

## the negative log likelihood for truncated risk function
negLogLik <- function(best, X, y) { 
  pest <- pmin(1, exp(X %*% best))
  -sum(dpois(x = y, lambda = pest, log=TRUE))
}

set.seed(100)

sim <- replicate(100, {
  n <- 200
  X <- cbind(1, 'b'=rbinom(n, 1, 0.5), 'x'=rnorm(n))
  btrue <- c(log(0.3), log(2), 1)
  ptrue <- pmin(1, exp(X %*% matrix(btrue)))
  y <- rbinom(n, 1, ptrue) ## or just take y=ptrue for immediate results
  nlm(f = logLik, p = c(log(mean(y)),0,0), X=X, y=y)$estimate
})

rowMeans(exp(sim))

dà:

> rowMeans(exp(sim))
[1] 0.3002813 2.0680780 3.0888280

Il coefficiente medio ti dà quello che vuoi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.