Estimando razões de risco ajustadas em dados binários usando regressão de Poisson

9

Estou interessado em estimar uma taxa de risco ajustada, análoga a como se estima uma taxa de chances ajustada usando regressão logística. Alguma literatura (por exemplo, isso ) indica que o uso da regressão de Poisson com erros padrão de Huber-White é uma maneira baseada em modelo para fazer isso

Não encontrei literatura sobre como o ajuste para covariáveis ​​contínuas afeta isso. A seguinte simulação simples demonstra que esse problema não é tão claro:

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 

Nesse caso, a taxa de risco real é 2, que é recuperada de forma confiável quando o efeito covariável é pequeno. Mas, quando o efeito covariável é grande, isso fica distorcido. Suponho que isso ocorra porque o efeito covariável pode empurrar contra o limite superior (1) e isso contamina a estimativa.

Procurei, mas não encontrei nenhuma literatura sobre o ajuste de covariáveis ​​contínuas na estimativa da razão de risco ajustada. Estou ciente das seguintes postagens neste site:

mas eles não respondem minha pergunta. Existem documentos sobre isso? Existem precauções conhecidas que devem ser exercidas?

kjetil b halvorsen
fonte
11
Pode ser do seu interesse: aje.oxfordjournals.org/content/162/3/199.full
StatsStudent
Além disso, essas perguntas e respostas stats.stackexchange.com/questions/18595/… podem ajudar.
Mdewey 26/01

Respostas:

1

Não sei se você ainda precisa de uma resposta para essa pergunta, mas tenho um problema semelhante no qual gostaria de usar a regressão de Poisson. Ao executar seu código, descobri que se eu configurasse o modelo como

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

e não como seu modelo de regressão de Poisson, o mesmo resultado ocorre: o OR estimado é de ~ 1,5 quando ce se aproxima de 1. Portanto, não tenho certeza de que seu exemplo forneça informações sobre um possível problema com o uso da regressão de Poisson para resultados binários.

David F
fonte
11
O problema de ajustar um modelo de logit, embora não leve a riscos previstos maiores que 1, é que o odds ratio é um estimador enviesado da razão de risco e esse viés aumenta drasticamente à medida que o resultado se torna mais prevalente. Você pode especificar binomial(link=log)para realmente ajustar um modelo de risco relativo, mas ele raramente converge devido a resultados imprevisíveis.
AdamO
1

Acho que usar a máxima probabilidade direta com a função de probabilidade adequada melhora muito a estimativa do risco relativo. Você pode especificar diretamente a função de risco truncado como a taxa prevista para o processo.

insira a descrição da imagem aqui

Normalmente, usamos o Hessian para criar ICs para a estimativa. Eu não explorei a possibilidade de usar isso como matriz "B" (carne) no erro Huber White e usar os riscos adequados para obter a matriz "A" (pão) ... mas suspeito que possa funcionar! Mais viável, você pode usar um bootstrap para obter erros de modelo que são robustos a um relacionamento de variação média mal especificado.

## 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

O coeficiente do meio fornece o que você deseja.

AdamO
fonte