Quelle est la distribution attendue des résidus dans un modèle linéaire généralisé?

12

J'exécute un modèle linéaire généralisé, où je dois spécifier une famille différente de la normale.

  • Quelle est la distribution attendue des résidus?
  • Par exemple, les résidus devraient-ils être distribués normalement?
Gio
la source

Réponses:

3
What is the expected distribution of residuals?

Elle varie avec le modèle de manière à rendre cette réponse impossible en général.

For example, should the residuals be distributed normally?

Pas généralement, non.

Glen_b -Reinstate Monica
la source
8

Il existe toute une industrie artisanale centrée sur la conception de résidus pour les GLM qui sont plus symétriques ou même approximativement "normaux" (c.-à-d. Gaussiens), par exemple les résidus Pearson, les résidus Anscombe, les résidus de déviance (ajustés), etc. Voir par exemple le chapitre 6 de James W Hardin et Joseph M. Hilbe (2007) "Modèles et extensions linéaires généralisés", deuxième édition. College Station, TX: Stata Press. Si la variable dépendante est discrète (une variable indicatrice ou un comptage), il est évidemment très difficile de faire la distribution attendue des résidus exactement gaussienne.

Une chose que vous pouvez faire est de simuler à plusieurs reprises de nouvelles données en supposant que votre modèle est vrai, d'estimer votre modèle en utilisant ces données simulées et de calculer les résidus, puis de comparer vos résidus réels avec vos résidus simulés. Dans Stata, je le ferais comme ceci:

sysuse nlsw88, clear
glm wage i.union grade c.ttl_exp##c.ttl_exp, link(log) family(poisson)

// collect which observations were used in estimation and the predicted mean
gen byte touse = e(sample)
predict double mu if touse

// predict residuals
predict resid if touse, anscombe

// prepare variables for plotting a cumulative distribution function
cumul resid, gen(c)

// collect the graph command in the local macro `graph'
local graph "twoway"

// create 19 simulations:
gen ysim = .
forvalues i = 1/19 {
    replace ysim = rpoisson(mu) if touse
    glm ysim i.union grade c.ttl_exp##c.ttl_exp, link(log) family(poisson)
    predict resid`i' if touse, anscombe
    cumul resid`i', gen(c`i')
    local graph "`graph' line c`i' resid`i', sort lpattern(solid) lcolor(gs8) ||"
}
local graph "`graph' line c resid, sort lpattern(solid) lcolor(black) "

// display the graph
`graph' legend(order(20 "actual residuals" 1 "simulations")) 

entrez la description de l'image ici

Maarten Buis
la source
2
Dans R, vous pouvez le faire avec le package cran.r-project.org/web/packages/DHARMa/index.html .
Florian Hartig