Faut-il utiliser des corrections de degrés de liberté pour inférer les paramètres GLM?


11

Cette question est inspirée de la réponse de Martijn ici .

Supposons que nous ajustons un GLM pour une famille à un paramètre comme un modèle binomial ou de Poisson et qu'il s'agit d'une procédure de vraisemblance complète (par opposition à, disons, quasipoisson). Ensuite, la variance est fonction de la moyenne. Avec binôme: et avec Poisson var [ X ] = E [ X ] .var[X]=E[X]E[1X]var[X]=E[X]

Contrairement à la régression linéaire lorsque les résidus sont normalement distribués, la distribution d'échantillonnage finie et exacte de ces coefficients n'est pas connue, il s'agit d'une combinaison peut-être compliquée des résultats et des covariables. En outre, en utilisant l'estimation GLM de la moyenne , qui peut être utilisée comme une estimation de plugin pour la variance du résultat.

Comme pour la régression linéaire, cependant, les coefficients ont une distribution normale asymptotique, et donc dans l'inférence d'échantillon fini, nous pouvons approximer leur distribution d'échantillonnage avec la courbe normale.

Ma question est la suivante: gagnons-nous quelque chose en utilisant l'approximation de la distribution T de la distribution d'échantillonnage des coefficients dans les échantillons finis? D'une part, nous connaissons la variance mais nous ne connaissons pas la distribution exacte, donc une approximation T semble être le mauvais choix quand un estimateur bootstrap ou jackknife pourrait correctement tenir compte de ces écarts. D'un autre côté, le léger conservatisme de la distribution en T est peut-être tout simplement préféré dans la pratique.


1
bonne question. Vous voudrez peut-être regarder les corrections de Bartlett .
Ben Bolker

1
Je pense que cette question est mal posée, lorsque vous utilisez MLE ou QMLE, vous ne disposez que d'une estimation et d'une inférence justifiées asymptotiquement. demander si l'hypothèse A ou B est meilleure dans des paramètres finis ne peut pas être répondu, cela se résumera toujours au banal "dépend des données et des hypothèses que vous êtes prêt à faire". Personnellement, j'aime le bootstrapping et je l'utilise chaque fois que je le peux, mais il n'est pas plus faux que d'utiliser un test basé sur z ou t standard - cela ne vous permet pas d'échapper au problème des petites données, et donc vous faites toujours des hypothèses (juste différentes) )
Repmat

Réponses:


3

Réponse courte: Pas encore une réponse complète, mais vous pourriez être intéressé par les distributions suivantes liées à la question liée: Il compare le test z (également utilisé par glm) et le test t

    layout(matrix(1:2,1,byrow=TRUE))

    # trying all 100 possible outcomes if the true value is p=0.7
    px <- dbinom(0:100,100,0.7)
    p_model = rep(0,101)
    p_model2 = rep(0,101)
    for (i in 0:100) {
      xi = c(rep(1,i),rep(0,100-i))
      model = glm(xi ~ 1, offset=rep(qlogis(0.7),100), family="binomial")
      p_model[i+1] = 1-summary(model)$coefficients[4]
      model2 <- glm(xi ~ 1, family = "binomial")
      coef <- summary(model2)$coefficients
      p_model2[i+1] = 1-2*pt(-abs((qlogis(0.7)-coef[1])/coef[2]),99,ncp=0)
    }


    # plotting cumulative distribution of outcomes z-test
    outcomes <- p_model[order(p_model)]
    cdf <- cumsum(px[order(p_model)])
    plot(1-outcomes,1-cdf, 
         ylab="cumulative probability", 
         xlab= "calculated glm p-value",
         xlim=c(10^-4,1),ylim=c(10^-4,1),col=2,cex=0.5,log="xy")
    lines(c(0.00001,1),c(0.00001,1))
    for (i in 1:100) {
      lines(1-c(outcomes[i],outcomes[i+1]),1-c(cdf[i+1],cdf[i+1]),col=2)
    #  lines(1-c(outcomes[i],outcomes[i]),1-c(cdf[i],cdf[i+1]),col=2)
    }

    title("probability for rejection with z-test \n as function of set alpha level")


    # plotting cumulative distribution of outcomes t-test
    outcomes <- p_model2[order(p_model2)]
    cdf <- cumsum(px[order(p_model2)])
    plot(1-outcomes,1-cdf, 
         ylab="cumulative probability", 
         xlab= "calculated glm p-value",
         xlim=c(10^-4,1),ylim=c(10^-4,1),col=2,cex=0.5,log="xy")
    lines(c(0.00001,1),c(0.00001,1))
    for (i in 1:100) {
      lines(1-c(outcomes[i],outcomes[i+1]),1-c(cdf[i+1],cdf[i+1]),col=2)
      #  lines(1-c(outcomes[i],outcomes[i]),1-c(cdf[i],cdf[i+1]),col=2)
    }

    title("probability for rejection with t-test \n as function of set alpha level")
    [![p-test vs t-test][1]][1]

Et il n'y a qu'une petite différence. Et le z-test est également meilleur (mais cela peut être dû au fait que le t-test et le z-test sont "faux" et peut-être que l'erreur du z-test compense cette erreur).

entrez la description de l'image ici

Réponse longue: ...

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.