J'ai commencé à creuser un peu dans la fonction plot.lm , cette fonction donne six tracés pour lm, ce sont:
- un tracé des résidus par rapport aux valeurs ajustées
- un graphique Scale-Location de sqrt (| résidus |) par rapport aux valeurs ajustées
- un tracé QQ normal, un tracé des distances de Cook par rapport aux étiquettes de ligne
- un tracé des résidus contre les effets de levier
- un tracé des distances de Cook contre l'effet de levier / (1 effet de levier)
Et je me demande quelles autres extensions communes / utiles des tracés actuels existent pour les modèles linéaires, et comment peuvent-elles être faites dans R? (les liens vers les articles des packages sont également les bienvenus)
Donc, la fonction boxcox (de {MASS}) est un exemple d'un autre tracé de diagnostic utile (et une telle réponse serait formidable), cependant, je suis plus curieux de connaître les variations / extensions sur les tracés de diagnostic par défaut existants pour lm dans R (bien que général d'autres remarques sur le sujet sont toujours les bienvenues).
Voici quelques exemples simples de ce que je veux dire:
#Some example code for all of us to refer to
set.seed(2542)
x1 <- rnorm(100)
x2 <- runif(100, -2,2)
eps <- rnorm(100,0,2)
y <- 1 + 2*x1 + 3*x2 + eps
y[1:4] <- 14 # adding some contaminated points
fit <- lm(y~x1+x2)
#plot(y~x1+x2)
#summary(fit)
Pour tracer les résidus en fonction de chacun des potentiels x
plot(resid(fit)~x1); abline (h = 0)
plot(resid(fit)~x2); abline (h = 0)
# plot(resid(fit)~x1+x2) # you can also use this, but then you wouldn't be able to use the abline on any plot but the last one
Pour ajouter la ligne 0-1 (comment cette ligne est-elle appelée en anglais?!) Au qqplot afin de voir à quel point la qqline s'en écarte
plot(fit, which = 2); abline(0,1, col = "green")
Pour tracer le qq-plot en utilisant des résidus externes étudiés
# plot(fit, which = 2); abline(0,1, col = "green") # The next command is just like this one
qqnorm(rstandard(fit), ylim = c(-2.2,4.2)); qqline(rstudent(fit), lty = 2) ;abline(0,1, col = "green")
qqnorm(rstudent(fit), ylim = c(-2.2,4.2)); qqline(rstudent(fit), lty = 2) ;abline(0,1, col = "green")
# We can note how the "bad" points are more extreme when using the rstudent
r
regression
linear-model
diagnostic
Tal Galili
la source
la source
Réponses:
Le package
car
a beaucoup de fonctions utiles pour les tracés de diagnostic des modèles linéaires et linéaires généralisés. Par rapport aux parcelles R vanilla, elles sont souvent enrichies d'informations supplémentaires. Je vous recommande d'essayerexample("<function>")
les fonctions suivantes pour voir à quoi ressemblent les tracés. Toutes les parcelles sont décrites en détail dans le chapitre 6 de Fox & Weisberg. 2011. Un compagnon R pour la régression appliquée. 2e éd.residualPlots()
trace les résidus de Pearson par rapport à chaque prédicteur (nuages de points pour les variables numériques, y compris un ajustement de Lowess, boîtes à moustaches pour les facteurs)marginalModelPlots()
affiche les diagrammes de dispersion de la variable de réponse par rapport à chaque prédicteur numérique, y compris un ajustement de LowessavPlots()
affiche des graphiques de régression partielle: pour chaque prédicteur, il s'agit d'un nuage de points de a) les résidus de la régression de la variable de réponse sur tous les autres prédicteurs contre b) les résidus de la régression du prédicteur contre tous les autres prédicteursqqPlot()
pour un tracé quantile-quantile qui comprend une enveloppe de confianceinfluenceIndexPlot()
affiche chaque valeur pour la distance de Cook, la valeur de chapeau, la valeur de p pour le test aberrant et le résidu studentisé dans un pic-plot par rapport à l'indice d'observationinfluencePlot()
donne un diagramme à bulles des résidus étudiés par rapport aux valeurs de chapeau, avec la taille de la bulle correspondant à la distance de Cook, voir aussidfbetaPlots()
etleveragePlots()
boxCox()
crPlots()
concerne les parcelles composant + résiduel, dont une variante sont des parcelles CERES (Combinaison des attentes conditionnelles et des résidus), fournies parceresPlots()
spreadLevelPlot()
sert à évaluer la variance d'erreur non constante et affiche les résidus absolus studentisés par rapport aux valeurs ajustéesscatterplot()
fournit des diagrammes de dispersion améliorés, y compris des diagrammes en boîte le long des axes, des ellipses de confiance pour la distribution bivariée et des lignes de prédiction avec des bandes de confiancescatter3d()
est basé sur un packagergl
et affiche des diagrammes de dispersion 3D interactifs, y compris des ellipsoïdes de confiance en treillis métallique et des plans de prédiction, assurez-vous d'exécuterexample("scatter3d")
De plus, jetez un œil au
bplot()
packagerms
pour une autre approche pour illustrer la distribution commune de trois variables.la source
Cette réponse se concentre sur ce qui est disponible dans la base R, plutôt que sur les packages externes, bien que je convienne que le package de Fox vaut la peine d'être adopté.
La fonction
influence()
(ou son enveloppeinfluence.measures()
) renvoie la plupart de ce dont nous avons besoin pour le diagnostic du modèle, y compris les statistiques jacknifed. Comme indiqué dans Chambers et Hastie's Statistical Models in S (Wadsworth et Brooks, 1992), il peut être utilisé en combinaison avecsummary.lm()
. L'un des exemples fournis dans le soi-disant "livre blanc" (pp. 130-131) permet de calculer les résidus standardisés (résidus à variance égale) et studentisés (les mêmes avec une estimation différente pour SE), DFBETAS (changement de coefficients mis à l'échelle par le SE pour les coefficients de régression), DFFIT (changement de la valeur ajustée lorsque l'observation est abandonnée) et DFFITS (les mêmes, avec variance unitaire) mesurent sans trop de difficulté.Basé sur votre exemple et définissant les objets suivants:
nous pouvons calculer les quantités ci-dessus comme suit:
(Il s'agit du tableau 4.1 , p. 131.)
Chambers et Hastie donnent le code S / R suivant pour calculer DFBETAS:
Pourquoi est-ce que je mentionne cette approche? Parce que, tout d'abord, je trouve cela intéressant d'un point de vue pédagogique (c'est ce que j'utilise lorsque j'enseigne des cours de statistiques d'introduction) car cela permet d'illustrer ce qui peut être calculé à partir de la sortie d'un modèle linéaire ajusté ajusté en R (mais la même chose appliquer avec tout autre logiciel statistique). Deuxièmement, comme les quantités ci-dessus seront retournées sous forme de vecteurs ou de matrices simples dans R, cela signifie également que nous pouvons choisir le périphérique graphique que nous voulons --- treillis ou ggplot --- pour afficher ces statistiques, ou les utiliser pour améliorer un existant (par exemple, mettez en surbrillance les valeurs DFFITS dans un nuage de points en faisant varier la taille des points
cex
).la source