Comprendre la bande de confiance d'une régression polynomiale

14

J'essaie de comprendre le résultat que je vois dans mon graphique ci-dessous. Habituellement, j'ai tendance à utiliser Excel et à obtenir une ligne de régression linéaire, mais dans le cas ci-dessous, j'utilise R et j'obtiens une régression polynomiale avec la commande:

ggplot(visual1, aes(ISSUE_DATE,COUNTED)) + geom_point() + geom_smooth()

Donc, mes questions se résument à ceci:

  1. Quelle est la zone grise (flèche n ° 1) autour de la ligne de régression bleue? S'agit-il de l'écart-type de la régression polynomiale?

  2. Puis-je dire que tout ce qui est en dehors de la zone grise (flèche n ° 2) est une valeur aberrante et que tout ce qui se trouve à l'intérieur de la zone grise (flèche n ° 3) est dans l'écart-type?

entrez la description de l'image ici

adhg
la source

Réponses:

14

La bande grise est une bande de confiance pour la droite de régression. Je ne connais pas assez ggplot2 pour savoir avec certitude s'il s'agit d'une bande de confiance 1 SE ou d'une bande de confiance à 95%, mais je crois que c'est la première ( Edit: évidemment c'est un IC à 95% ). Une bande de confiance fournit une représentation de l'incertitude concernant votre droite de régression. Dans un sens, vous pourriez penser que la vraie ligne de régression est aussi haute que le haut de cette bande, aussi basse que le bas ou oscille différemment dans la bande. (Notez que cette explication est destinée à être intuitive et n'est pas techniquement correcte, mais l'explication entièrement correcte est difficile à suivre pour la plupart des gens.)

Vous devez utiliser la bande de confiance pour vous aider à comprendre / penser à la ligne de régression. Vous ne devez pas l'utiliser pour penser aux points de données brutes. N'oubliez pas que la droite de régression représente la moyenne de à chaque point de X (si vous avez besoin de mieux comprendre cela, cela peut vous aider à lire ma réponse ici: quelle est l'intuition derrière les distributions gaussiennes conditionnelles? ). D'un autre côté, vous ne vous attendez certainement pas à ce que chaque point de données observé soit égal à la moyenne conditionnelle. En d'autres termes, vous ne devez pas utiliser la bande de confiance pour évaluer si un point de données est une valeur aberrante. OuiX


( Edit: cette note est périphérique à la question principale, mais cherche à clarifier un point pour l'OP. )

Une régression polynomiale n'est pas une régression non linéaire, même si ce que vous obtenez ne ressemble pas à une ligne droite. Le terme «linéaire» a une signification très spécifique dans un contexte mathématique, en particulier, que les paramètres que vous estimez - les bêtas - sont tous des coefficients. Une régression polynomiale signifie simplement que vos covariables sont , X 2 , X 3 , etc., c'est-à-dire qu'elles ont une relation non linéaire entre elles, mais vos bêtas sont toujours des coefficients, donc c'est toujours un modèle linéaire. Si vos bêtas étaient, par exemple, des exposants, vous auriez alors un modèle non linéaire. XX2X3

En somme, le fait qu'une ligne soit droite ou non n'a rien à voir avec le fait qu'un modèle soit linéaire ou non. Lorsque vous ajustez un modèle polynomial (disons avec et X 2 ), le modèle ne «sait» pas que, par exemple, X 2 n'est en fait que le carré de X 1 . Il «pense» que ce ne sont que deux variables (bien qu'il puisse reconnaître qu'il existe une certaine multicolinéarité). Ainsi, en vérité, il ajuste un plan de régression (droit / plat) dans un espace tridimensionnel plutôt qu'une ligne de régression (courbe) dans un espace bidimensionnel. Ce n'est pas utile pour nous de penser, et en fait, extrêmement difficile à voir depuis X 2XX2X2X1X2est une fonction parfaite de . En conséquence, nous ne prenons pas la peine d'y penser de cette façon et nos tracés sont vraiment des projections bidimensionnelles sur le plan ( X , Y ) . Néanmoins, dans l'espace approprié, la ligne est en fait «droite» dans un certain sens. X(X, Y)

D'un point de vue mathématique, un modèle est linéaire si les paramètres que vous essayez d'estimer sont des coefficients. Pour clarifier davantage, considérons la comparaison entre le modèle de régression linéaire standard (OLS) et un modèle de régression logistique simple présenté sous deux formes différentes:
ln ( π ( Y )

Y=β0+β1X+ε
π(Y)=exp(β0+β1X)
ln(π(Y)1π(Y))=β0+β1X
Le modèle supérieur est la régression OLS, et les deux derniers sont la régression logistique, bien que présentés de différentes manières. Dans les trois cas, lorsque vous ajustez le modèle, vous estimez lesβs. Les deux modèles supérieurs sontlinéaires, car tous lesβs sont des coefficients, mais le modèle inférieur est non linéaire (sous cette forme) car lesβs sont des exposants. (Cela peut sembler assez étrange, mais la régression logistique est une instance dumodèle linéairegénéralisé, car il peut être réécrit en tant que modèle linéaire. Pour plus d'informations à ce sujet, il peut être utile de lire ma réponse ici:
π(Y)=exp(β0+β1X)1+exp(β0+β1X)
βββDifférence entre les modèles logit et probit .)
gung - Réintégrer Monica
la source
+1 Les exemples dans la documentation me suggèrent que la confiance est assez élevée, peut-être 95%.
whuber
@gung merci pour la réponse détaillée (vous avez également reçu un chèque!). J'ai lu votre première déclaration et je suis un peu confus. Pouvez-vous nous en dire plus à ce sujet? Si la ligne résultante n'est pas une ligne droite (y = mx + b), qu'est-ce qui la rend linéaire? Merci encore pour la réponse.
adhg
Les documents sur docs.ggplot2.org/0.9.3.1/stat_smooth.html affirment qu'il s'agit d'une bande de confiance de 95% pour la courbe de régression.
whuber
2
Je pense que le Loess par défaut plus lisse utilisé ici, plutôt que la régression polynomiale?
Xan
@adhg, je pensais avoir couvert le linéaire contre le non linéaire ailleurs, mais je ne l'ai pas trouvé. J'ai donc ajouté du matériel supplémentaire ici. HTH
gung - Réintégrer Monica
11

Pour ajouter aux réponses déjà existantes, la bande représente un intervalle de confiance de la moyenne, mais à partir de votre question, vous cherchez clairement un intervalle de prédiction . Les intervalles de prédiction sont une plage qui si vous dessiniez un nouveau point, ce point serait théoriquement contenu dans la plage X% du temps (où vous pouvez définir le niveau de X).

library(ggplot2)
set.seed(5)
x <- rnorm(100)
y <- 0.5*x + rt(100,1)
MyD <- data.frame(cbind(x,y))

Nous pouvons générer le même type de graphique que vous avez montré dans votre question initiale avec un intervalle de confiance autour de la moyenne de la ligne de régression de lœss lissée (la valeur par défaut est un intervalle de confiance à 95%).

ConfiMean <- ggplot(data = MyD, aes(x,y)) + geom_point() + geom_smooth()
ConfiMean

entrez la description de l'image ici

Pour un exemple rapide et sale d'intervalles de prédiction, ici je génère un intervalle de prédiction en utilisant une régression linéaire avec des splines de lissage (donc ce n'est pas nécessairement une ligne droite). Avec les données d'échantillon, cela fonctionne plutôt bien, pour les 100 points, seuls 4 sont en dehors de la plage (et j'ai spécifié un intervalle de 90% sur la fonction de prédiction).

#Now getting prediction intervals from lm using smoothing splines
library(splines)
MyMod <- lm(y ~ ns(x,4), MyD)
MyPreds <- data.frame(predict(MyMod, interval="predict", level = 0.90))
PredInt <- ggplot(data = MyD, aes(x,y)) + geom_point() + 
           geom_ribbon(data=MyPreds, aes(x=fit,ymin=lwr, ymax=upr), alpha=0.5)
PredInt

entrez la description de l'image ici

Maintenant, quelques notes supplémentaires. Je suis d'accord avec Ladislav que vous devriez envisager des méthodes de prévision de séries chronologiques puisque vous avez une série régulière depuis quelque temps en 2007 et il est clair d'après votre intrigue si vous regardez bien, il y a une saisonnalité (relier les points le rendrait beaucoup plus clair). Pour cela, je suggère de vérifier la fonction Forecast.stl dans le package de prévision où vous pouvez choisir une fenêtre saisonnière et elle fournit une décomposition robuste de la saisonnalité et de la tendance en utilisant Loess. Je mentionne des méthodes robustes car vos données présentent quelques pics notables.

Plus généralement, pour les données non chronologiques, je considérerais d'autres méthodes robustes si vous avez des données avec des valeurs aberrantes occasionnelles. Je ne sais pas comment générer des intervalles de prédiction en utilisant directement Loess, mais vous pouvez envisager une régression quantile (selon l'extrême nécessité des intervalles de prédiction). Sinon, si vous voulez simplement que l'ajustement soit potentiellement non linéaire, vous pouvez envisager des splines pour permettre à la fonction de varier sur x.

Andy W
la source
4

Eh bien, la ligne bleue est une régression locale lisse . Vous pouvez contrôler la ondulation de la ligne par le spanparamètre (de 0 à 1). Mais votre exemple est une "série chronologique", essayez donc de rechercher des méthodes d'analyse plus appropriées que d'ajuster uniquement une courbe lisse (qui ne devrait servir qu'à révéler une tendance possible).

Selon la documentation de ggplot2(et réservez dans le commentaire ci-dessous): stat_smooth est un intervalle de confiance du lisse affiché en gris. Si vous souhaitez désactiver l'intervalle de confiance, utilisez se = FALSE.

Ladislav Naďo
la source
1
(1) Je ne vois pas dans votre référence où il prétend que la zone grise est l'intervalle de confiance ponctuel. Il ressort assez clairement des exemples que la zone grise est plutôt un intervalle de confiance pour la courbe . (2) Personne ne pourrait raisonnablement déclarer la grande proportion de points au-delà de la zone grise comme "aberrants"; il y en a trop.
whuber
(1) mon erreur, j'ajoute ici un livre qui fait référence à «l'intervalle de confiance point par point»: Wickham H (2009) ggplot2 Élégant graphique pour l'analyse des données. Media 212. (page 14). (2) Je suis d'accord.
Ladislav Naďo
L'une de vos références indique-t-elle le niveau de confiance par défaut défini?
whuber
Non, je ne trouve aucune référence sur le paramètre par défaut.
Ladislav Naďo
J'ai trouvé la valeur par défaut sur la première page de votre référence: "(0,95 par défaut)." Cela signifie que ce lisseur a de graves bogues ou bien votre interprétation de la référence est erronée: car une si grande proportion des points de données se trouvent généralement au-delà de la zone grise et en supposant que le code est correct, la zone grise doit être une région de confiance pour la prédiction (courbe ajustée) et non une région de confiance pour les points.
whuber