Sollten Freiheitsgradkorrekturen verwendet werden, um auf GLM-Parameter zu schließen?


11

Diese Frage ist inspiriert von Martijns Antwort hier .

Angenommen, wir passen ein GLM für eine Ein-Parameter-Familie wie ein Binomial- oder Poisson-Modell an und es handelt sich um ein Verfahren mit voller Wahrscheinlichkeit (im Gegensatz zu beispielsweise Quasipoisson). Dann ist die Varianz eine Funktion des Mittelwerts. Mit Binomial: und mit Poisson .var[X.]]=E.[X.]]E.[1- -X.]]var[X.]]=E.[X.]]

Im Gegensatz zur linearen Regression bei normaler Verteilung der Residuen ist die endliche, exakte Stichprobenverteilung dieser Koeffizienten nicht bekannt, sondern eine möglicherweise komplizierte Kombination der Ergebnisse und Kovariaten. Verwenden Sie auch die GLM-Schätzung des Mittelwerts , die als Plugin-Schätzung für die Varianz des Ergebnisses verwendet wird.

Wie die lineare Regression haben die Koeffizienten jedoch eine asymptotische Normalverteilung, und so können wir bei endlicher Stichprobeninferenz ihre Stichprobenverteilung mit der Normalkurve approximieren.

Meine Frage ist: Gewinnen wir etwas, wenn wir die T-Verteilungsnäherung an die Stichprobenverteilung der Koeffizienten in endlichen Stichproben verwenden? Einerseits kennen wir die Varianz, aber wir kennen die genaue Verteilung nicht, daher scheint eine T-Näherung die falsche Wahl zu sein, wenn ein Bootstrap- oder Jackknife-Schätzer diese Diskrepanzen richtig erklären könnte. Andererseits wird in der Praxis vielleicht der leichte Konservatismus der T-Verteilung einfach bevorzugt.


1
gute Frage. Vielleicht möchten Sie sich Bartlett-Korrekturen ansehen .
Ben Bolker

1
Ich denke, diese Frage ist schlecht gestellt, wenn Sie MLE oder QMLE verwenden, haben Sie nur asymptotisch begründete Schätzungen und Schlussfolgerungen. Die Frage, ob die Annahme A oder B in endlichen Einstellungen besser ist, kann nicht beantwortet werden. Sie hängt immer vom Alltäglichen ab, "hängt von den Daten und den Annahmen ab, zu denen Sie bereit sind". Persönlich mag ich Bootstrapping und verwende es, wann immer ich kann, aber es ist nicht mehr falsch, einen Standard-Z- oder T-basierten Test zu verwenden - es erlaubt Ihnen nicht, dem Problem der kleinen Daten zu entkommen, und Sie treffen immer noch Annahmen (nur andere) )
Repmat

Antworten:


3

Kurze Antwort: Noch keine vollständige Antwort, aber Sie könnten an den folgenden Verteilungen interessiert sein, die sich auf die verknüpfte Frage beziehen: Sie vergleicht den Z-Test (wie auch von glm verwendet) und den T-Test

    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]

Und es gibt nur einen kleinen Unterschied. Und auch der Z-Test ist tatsächlich besser (aber dies könnte daran liegen, dass sowohl der T-Test als auch der Z-Test "falsch" sind und möglicherweise der Fehler des Z-Tests diesen Fehler kompensiert).

Geben Sie hier die Bildbeschreibung ein

Lange Antwort: ...

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.