Pouvez-vous ajouter des termes polynomiaux à une régression linéaire multiple?


8

Je suis un peu confus quant à savoir quand vous devez ou non ajouter des termes polynomiaux à un modèle de régression linéaire multiple. Je sais que les polynômes sont utilisés pour capturer la courbure des données, mais cela semble toujours être sous la forme de:

y=x1+x2+x12+x22+x1x2+c

Et si vous savez qu'il existe une relation linéaire entre et , mais une relation non linéaire entre et ? Pouvez-vous utiliser un modèle sous la forme de:yx1yx2

y=x1+x2+x22+c

Je suppose que ma question est la suivante: est-il valable de supprimer le terme et le terme , ou devez-vous suivre la forme générique d'un modèle de régression polynomiale?x12x1x2


5
Juste pour être complet, notez que si vous avez dans le modèle, vous devez aussi avoir . Recherchez sur ce site le principe de la marginalité pour plus d'informations. Je sais que vous n'avez pas suggéré de le faire, mais les informations pourraient être utiles. X2X
mdewey

C'est vraiment bizarre de voir quelque chose comme et de l'appeler un modèle de régression linéaire, mais c'est certainement le cas. N'oubliez pas que cela a à voir avec la linéarité des coefficients. Je suggère la vidéo de Mathematical Monk à ce sujet: m.youtube.com/watch?v=rVviNyIR-fI . Quinze minutes peuvent sembler longues à consacrer à cela, mais vous n'oublierez jamais que la régression linéaire peut impliquer un comportement non linéaire. Peut-être comme question au PO: un modèle de régression linéaire? y=uneX+bX2y=uneX+bX2
Dave

@mdewey, votre déclaration est trop générale pour être correcte et / ou avoir du sens dans tous les paramètres. Je peux facilement imaginer un modèle bien défini avec mais sans . Par exemple, les cas où le processus de génération de données est ou où il est où (et ), ou où le modèle est simplement la meilleure approximation (par rapport à celui incluant ) de tout processus de génération de données auquel nous sommes confrontés. X2Xy=β0+β1X2+εy=β0+β1z+εX=zz>0X
Richard Hardy

Réponses:


14

En plus de l'excellente réponse de @ mkt, j'ai pensé que je pourrais vous fournir un exemple spécifique afin que vous puissiez développer une certaine intuition.

Générer des données pour l'exemple

Pour cet exemple, j'ai généré certaines données à l'aide de R comme suit:

set.seed(124)

n <- 200
x1 <- rnorm(n, mean=0, sd=0.2)
x2 <- rnorm(n, mean=0, sd=0.5)

eps <- rnorm(n, mean=0, sd=1)

y = 1 + 10*x1 + 0.4*x2 + 0.8*x2^2 + eps

Comme vous pouvez le voir ci-dessus, les données proviennent du modèle y=β0+β1X1+β2X2+β3X22+ϵ, où ϵ est un terme d'erreur aléatoire normalement distribué avec une moyenne 0 et variance inconnue σ2. En outre,β0=1, β1=dix, β2=0,4 et β3=0,8, tandis que σ=1.

Visualisez les données générées via Coplots

Étant donné les données simulées sur la variable de résultat y et les variables prédictives x1 et x2, nous pouvons visualiser ces données à l'aide de coplots :

library(lattice)

coplot(y ~ x1 | x2,  
       number = 4, rows = 1,
       panel = panel.smooth)

coplot(y ~ x2 | x1,  
       number = 4, rows = 1,
       panel = panel.smooth)

Les coplots résultants sont indiqués ci-dessous.

Le premier coplot montre des diagrammes de dispersion de y contre x1 lorsque x2 appartient à quatre plages différentes de valeurs observées (qui se chevauchent) et améliore chacun de ces diagrammes de dispersion avec un ajustement lisse, éventuellement non linéaire dont la forme est estimée à partir des données.

entrez la description de l'image ici

Le deuxième coplot montre des diagrammes de dispersion de y par rapport à x2 lorsque x1 appartient à quatre plages différentes de valeurs observées (qui se chevauchent) et améliore chacun de ces diagrammes de dispersion avec un ajustement lisse.

entrez la description de l'image ici

Le premier coplot suggère qu'il est raisonnable de supposer que x1 a un effet linéaire sur y lors du contrôle de x2 et que cet effet ne dépend pas de x2.

Le deuxième coplot suggère qu'il est raisonnable de supposer que x2 a un effet quadratique sur y lors du contrôle de x1 et que cet effet ne dépend pas de x1.

Ajuster un modèle correctement spécifié

Les coplots suggèrent d'adapter le modèle suivant aux données, ce qui permet un effet linéaire de x1 et un effet quadratique de x2:

m <- lm(y ~ x1 + x2 + I(x2^2))  

Construire des tracés résiduels de Component Plus pour le modèle correctement spécifié

Une fois que le modèle correctement spécifié est ajusté aux données, nous pouvons examiner les graphiques des composantes et des résidus pour chaque prédicteur inclus dans le modèle:

library(car)

crPlots(m)

Ces tracés de composantes et résiduels sont présentés ci-dessous et suggèrent que le modèle a été correctement spécifié car ils ne montrent aucune preuve de non-linéarité, etc. le prédicteur correspondant et la ligne magenta solide suggérant un effet non linéaire de ce prédicteur dans le modèle.

entrez la description de l'image ici

Ajuster un modèle mal spécifié

Jouons l'avocat du diable et disons que notre modèle lm () a en fait été mal spécifié (c'est-à-dire mal spécifié), en ce sens qu'il a omis le terme quadratique I (x2 ^ 2):

m.mis <-  lm(y ~ x1 + x2)

Construire des tracés résiduels du composant plus pour le modèle incorrectement spécifié

Si nous devions construire des parcelles composante plus résiduelle pour le modèle mal spécifié, nous verrions immédiatement une suggestion de non-linéarité de l'effet de x2 dans le modèle mal spécifié:

crPlots(m.mis)

En d'autres termes, comme on le voit ci-dessous, le modèle mal spécifié n'a pas réussi à capturer l'effet quadratique de x2 et cet effet apparaît dans la composante plus le tracé résiduel correspondant au prédicteur x2 dans le modèle mal spécifié.

entrez la description de l'image ici

La mauvaise spécification de l'effet de x2 dans le modèle m.mis serait également apparente lors de l'examen des graphiques des résidus associés à ce modèle par rapport à chacun des prédicteurs x1 et x2:

par(mfrow=c(1,2))
plot(residuals(m.mis) ~ x1, pch=20, col="darkred")
abline(h=0, lty=2, col="blue", lwd=2)
plot(residuals(m.mis) ~ x2, pch=20, col="darkred")
abline(h=0, lty=2, col="blue", lwd=2)

Comme on le voit ci-dessous, le tracé des résidus associés à m.mis par rapport à x2 présente un modèle quadratique clair, suggérant que le modèle m.mis n'a pas réussi à capturer ce modèle systématique.

entrez la description de l'image ici

Augmentez le modèle incorrectement spécifié

Pour spécifier correctement le modèle m.mis, il faudrait l'augmenter pour qu'il inclue également le terme I (x2 ^ 2):

m <- lm(y ~ x1 + x2 + I(x2^2)) 

Voici les graphiques des résidus en fonction de x1 et x2 pour ce modèle correctement spécifié:

par(mfrow=c(1,2))
plot(residuals(m) ~ x1, pch=20, col="darkred")
abline(h=0, lty=2, col="blue", lwd=2)
plot(residuals(m) ~ x2, pch=20, col="darkred")
abline(h=0, lty=2, col="blue", lwd=2)

Notez que le motif quadratique précédemment observé dans le tracé des résidus par rapport à x2 pour le modèle m.mis mal spécifié a maintenant disparu du tracé des résidus par rapport à x2 pour le modèle m correctement spécifié.

Notez que l'axe vertical de toutes les parcelles de résidus par rapport à x1 et x2 montré ici doit être étiqueté comme "résiduel". Pour une raison quelconque, R Studio coupe cette étiquette.

entrez la description de l'image ici


11

Oui, ce que vous proposez est bien. Il est parfaitement valable dans un modèle de traiter la réponse à un prédicteur comme linéaire et à un autre comme étant polynomial. Il est également tout à fait correct de ne supposer aucune interaction entre les prédicteurs.


1
Salut. Juste un doute associé. Si les deuxX et X2 sont des régresseurs, et disent Xest strictement positif, y aurait-il un problème de multicolinéarité? Est-il possible que les coefficients aient des erreurs standard plus importantes?
Dayne

@Dayne Bonne question! C'est une question qui est bien discutée ici et ici
mkt - Réinstallez Monica

1
@mkt Ces liens donnent des approches totalement distinctes de l'idée d'Ingolifs sur les polynômes orthogonaux. Avez-vous des réflexions sur l'approche polynomiale orthogonale?
Dave

1
@Dave Je n'en sais pas trop, j'ai peur. Il peut être bon de poser une nouvelle question sur la comparaison des approches.
mkt

7

Vous devez prendre soin d'utiliser des polynômes orthogonaux si vous souhaitez ajouter des termes polynomiaux.

Pourquoi? Sans eux, vous avez un problème ressemblant à la colinéarité . Dans certaines régions,X2 ressemblera assez à X, et une parabole fera un travail décent pour ajuster une ligne droite.

Observer:

entrez la description de l'image ici

Ce sont des polynômes de X,X2,X3.

Entre 0 et 1,5, les trois courbes augmentent de façon monotone et bien qu'elles se courbent différemment les unes des autres, elles donneront des ajustements de qualité similaires lorsque x est positivement corrélé avec y. En utilisant les trois dans votre code

y ~ x + x^2 + x^3

vous utilisez essentiellement des formes redondantes pour ajuster vos données.

Les polynômes orthogonaux vous offrent essentiellement une marge de manœuvre supplémentaire lors de l'ajustement, et chaque polynôme est essentiellement indépendant des autres.

entrez la description de l'image ici

Trois polynômes de degré 1, 2 et 3 générés par la fonction poly () dans R.

Peut-être qu'au lieu de les considérer explicitement comme des polynômes, vous les considérez plutôt comme des «composants de tendance» ou quelque chose:

Xreprésente «plus c'est toujours mieux» (ou pire si le coefficient est négatif). Si vous faisiez une régression sur la qualité de la musique par rapport à la cloche de vache , vous auriez besoin de ce composant.

X2représente une sorte de zone de goldilocks. Si vous faisiez une régression sur la saveur des aliments par rapport à la quantité de sel, ce composant serait saillant.

X3est probablement peu susceptible d'être une composante dominante en elle-même (le seul exemple auquel je pourrais penser est combien les gens savent vs combien ils pensent qu'ils savent ), mais sa présence influencera la forme et la symétrie duX et X2 termes.

Les polynômes orthogonaux impliquent beaucoup de calculs difficiles, mais heureusement, vous n'avez vraiment besoin de savoir que deux choses:

  1. Les polynômes orthogonaux ne sont orthogonaux que sur une certaine région. L'exemple que j'ai donné concerne des polynômes qui ne sont que orthogonaux entre 0 et 1,5.
  2. Si vous utilisez R, utilisez la fonction poly () pour créer vos polynômes. poly (x, n) où n est le degré du polynôme le plus élevé. Cela les rendra orthogonaux pour vous sur le domaine de vos donnéesX.

2
C'est extrêmement intéressant et pas quelque chose que j'avais entendu auparavant. Avez-vous une référence disant que cela est nécessaire ou utile, cependant? Et utile pour la prédiction ou l'inférence de paramètres? Et connaissez-vous une commande Python pour «poly»?
Dave

Diverses facettes de la régression polynomiale orthogonale ont été abordées ici et ici et bien d'autres.
Jason

Excellente réponse, et merci de l'avoir évoquée mieux que le message que j'avais en tête. :)
Jason

1
@Ingolifs: C'est la meilleure explication des polynômes orthogonaux que j'ai lue jusqu'à présent sur ce site! Je suis d'accord avec Dave qu'il serait utile de commenter dans votre réponse l'utilité des polynômes orthogonaux pour la prédiction ou l'inférence de paramètres.
Isabella Ghement

1
+1 mais soyez prudent polycar, si vous essayez predictavec, il réajustera les polynômes sur l'échantillon de prédiction; c'est-à-dire que nous obtenons des ordures.
usεr11852

0

Aucune règle ne dit que vous devez utiliser toutes vos variables. Si vous essayez de prédire le revenu, et que vos variables caractéristiques sont le SSN, les années de scolarité et l'âge, et que vous souhaitez supprimer le SSN parce que vous vous attendez à ce que toute corrélation entre celui-ci et le revenu soit fausse, c'est votre jugement à faire. Un modèle n'est pas invalide simplement parce qu'il existe d'autres variables que vous auriez pu théoriquement inclure, mais pas. Décider des termes polynomiaux à inclure n'est qu'une des nombreuses décisions concernant la sélection des fonctionnalités.

Bien que les modèles polynomiaux commencent souvent avec tous les termes inclus, c'est juste pour que tous puissent être évalués quant à la quantité qu'ils ajoutent au modèle. S'il semble qu'un terme particulier soit généralement surajusté, il peut être supprimé dans les itérations ultérieures du modèle. La régularisation, comme la régression au lasso, peut supprimer automatiquement des variables moins utiles. En règle générale, il est préférable de commencer avec un modèle qui contient trop de variables et de le réduire à celles qui sont les plus utiles, plutôt que de commencer uniquement avec les variables sur lesquelles le modèle devrait s'appuyer, et éventuellement de passer à côté d'une relation sur laquelle vous ne m'attendais pas.

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.