Je veux régresser une variable sur x , x 2 , … , x 5 . Dois-je le faire en utilisant des polynômes bruts ou orthogonaux? J'ai regardé la question sur le site qui traite de ces derniers, mais je ne comprends pas vraiment quelle est la différence entre les utiliser.
Pourquoi ne puis-je pas simplement faire une régression "normale" pour obtenir les coefficients de y = ∑ 5 i = 0 β i x i (avec les valeurs de p et tous les autres trucs sympas) et au lieu de cela, je dois m'inquiéter si j'utilise polynômes bruts ou orthogonaux? Ce choix me semble sortir du cadre de ce que je veux faire.
Dans le livre de statistiques que je lis actuellement (ISLR par Tibshirani et al), ces choses n'étaient pas mentionnées. En fait, ils ont été minimisés d'une certaine manière.
La raison en est, AFAIK, que dans la lm()
fonction dans R, utiliser des y ~ poly(x, 2)
quantités à utiliser des polynômes orthogonaux et utiliser des y ~ x + I(x^2)
quantités à utiliser des polynômes . Mais à la page 116, les auteurs disent que nous utilisons la première option parce que cette dernière est "lourde", ce qui ne laisse aucune indication que ces commandes ont en fait des choses complètement différentes (et ont des sorties différentes en conséquence).
(troisième question) Pourquoi les auteurs de l'ISLR confondraient-ils leurs lecteurs comme ça?
la source
poly
a quelque chose à voir avec les polynômes orthogonaux et je (x ^ 2) ne le fait pas (bien que je ne connaisse pas les détails) - mais quand même, pourquoi les auteurs de l'ISLR recommanderaient-ils alors une méthode qui ne fonctionne pas ? Cela semble très trompeur si les deux commandes semblent faire la même chose, mais une seule est en fait correcte.poly
ce problème et y ai déjà passé un certain temps, mais je n'arrive pas à comprendre pourquoi poly (x, 2) et x + I (x ^ 2) font une différence? Pourriez-vous m'éclairer ici dans les commentaires, si la question est hors sujet?R
technicité mineure , que je ne comprenais pas, mais maintenant il semble que ce soit un problème de statistiques à part entière qui m'empêche de coder une régression qui ne devrait pas être difficile à coder.Réponses:
Je crois que la réponse est moins sur la stabilité numérique (bien que cela joue un rôle) et plus sur la réduction de la corrélation.
Essentiellement - le problème se résume au fait que lorsque nous régressons contre un groupe de polynômes d'ordre élevé, les covariables contre lesquelles nous régressons deviennent fortement corrélées. Exemple de code ci-dessous:
C'est extrêmement important. À mesure que les covariables deviennent plus corrélées, notre capacité à déterminer lesquelles sont importantes (et quelle est la taille de leurs effets) s'érode rapidement. Ceci est généralement appelé le problème de la multicolinéarité. À la limite, si nous avions deux variables qui étaient entièrement corrélées, lorsque nous les régressons par rapport à quelque chose, il est impossible de faire la distinction entre les deux - vous pouvez considérer cela comme une version extrême du problème, mais ce problème affecte nos estimations pour moindre degré de corrélation également. Ainsi, dans un vrai sens - même si l'instabilité numérique n'était pas un problème - la corrélation des polynômes d'ordre supérieur endommage énormément nos routines d'inférence. Cela se manifestera par des erreurs standard plus importantes (et donc des statistiques t plus petites) que vous verriez autrement (voir l'exemple de régression ci-dessous).
Si vous exécutez ce code, l'interprétation est un peu difficile car les coefficients changent tous et les choses sont donc difficiles à comparer. En regardant les statistiques T, nous pouvons voir que la capacité à déterminer les coefficients était BEAUCOUP plus grande avec les polynômes orthogonaux. Pour les 3 coefficients pertinents, j'ai obtenu des statistiques t de (560,21,449) pour le modèle orthogonal, et seulement (28, -38,121) pour le modèle polynomial brut. C'est une énorme différence pour un modèle simple avec seulement quelques termes polynomiaux d'ordre relativement faible qui importaient.
Cela ne veut pas dire que cela vient sans frais. Il y a deux coûts principaux à garder à l'esprit. 1) nous perdons une certaine interprétabilité avec les polynômes orthogonaux. Nous pourrions comprendre ce que
x**3
signifie le coefficient sur , mais interpréter le coefficient surx**3-3x
(le troisième poly hermite - pas nécessairement ce que vous utiliserez) peut être beaucoup plus difficile. Deuxièmement - lorsque nous disons que ces polynômes sont orthogonaux - nous voulons dire qu'ils sont orthogonaux par rapport à une certaine mesure de distance. Choisir une mesure de distance adaptée à votre situation peut être difficile. Cependant, cela dit, je crois que lapoly
fonction est conçue pour choisir de telle sorte qu'elle soit orthogonale par rapport à la covariance - ce qui est utile pour les régressions linéaires.la source
raw.mod
il estime la pente de la courbe à x = 0,orthogonal.mod
il estime la pente marginale (c'est-à-dire identique à l'lm(y ~ poly(x,1))
endroit où les termes d'ordre supérieur sont omis). Il n'y a aucune raison pour que les estimations de ces estimations complètement différentes aient des erreurs-types comparables. On peut facilement construire un contre-exemple où lesraw.mod
statistiques t sont beaucoup plus élevéesL'utilisation d'un polynôme brut causera un problème car nous en aurons un nombre énorme. Voici une petite preuve: nous comparons le nombre de conditions de matrice avec un polynôme brut et orthogonal.
Vous pouvez également consulter ma réponse ici pour un exemple.
Pourquoi existe-t-il des coefficients importants pour les polynômes d'ordre supérieur
la source
R
la sortie deprint(0.4, digits=20)
is0.40000000000000002
.J'ai l'impression que plusieurs de ces réponses ratent complètement le propos. La réponse d'Haitao aborde les problèmes de calcul avec l'ajustement des polynômes bruts, mais il est clair que OP pose des questions sur les statistiques différences entre les deux approches. Autrement dit, si nous avions un ordinateur parfait qui pourrait représenter toutes les valeurs exactement, pourquoi préférerions-nous une approche à l'autre?
Créé le 2019-10-25 par le package reprex (v0.3.0)
L'effet marginal de
Petal.Width
à 0 de l'ajustement orthogonal et son erreur standard sont exactement égaux à ceux de l'ajustement polynomial brut. L'utilisation de polynômes orthogonaux n'améliore pas la précision des estimations de la même quantité entre les deux modèles.Créé le 2019-10-25 par le package reprex (v0.3.0)
Maintenant, que vous souhaitiez cet avantage d'interprétation par rapport à l'avantage d'interprétation d'être réellement capable de comprendre les coefficients du modèle, alors vous devriez utiliser des polynômes orthogonaux. Si vous préférez regarder les coefficients et savoir exactement ce qu'ils signifient (bien que je doute que ce soit généralement le cas), alors vous devriez utiliser les polynômes bruts. Si vous ne vous souciez pas (c.-à-d., Vous voulez seulement contrôler la confusion ou générer des valeurs prédites), alors cela n'a vraiment pas d'importance; les deux formulaires contiennent les mêmes informations concernant ces objectifs. Je dirais également que les polynômes orthogonaux devraient être préférés dans la régularisation (par exemple, le lasso), car la suppression des termes d'ordre supérieur n'affecte pas les coefficients des termes d'ordre inférieur, ce qui n'est pas vrai avec les polynômes bruts,
la source
stats::
dans l'appel àpoly()
enlm()
pourmargins
le reconnaître ( ce qui est stupide). Je voulais concentrer mon argumentation sur les estimations ponctuelles et les erreurs standard, et je sais qu'il y a beaucoup d'informations étrangères et distrayantes présentées, mais j'espère que le texte illustre mes points.stats::poly()
. L'erreur dit'degree' must be less than number of unique points
- ce qui ne m'aide pas beaucoup. Néanmoins,margin()
sauvegarde des déclarations prouvables donc ce n'est pas important.Je corrobore l'excellente réponse de @ user5957401 et j'ajoute des commentaires sur l'interpolation, l'extrapolation et les rapports.
Même dans le domaine des valeurs de paramètres stables, les coefficients / paramètres modélisés par les polynômes orthogonaux auront des erreurs standard sensiblement plus petites que les coefficients / paramètres modélisés par les paramètres bruts. Essentiellement, les polynômes orthogonaux sont un ensemble libre de descripteurs à covariance nulle. C'est PCA gratuitement!
Le seul inconvénient potentiel est de devoir l'expliquer à quelqu'un qui ne comprend pas la vertu des descripteurs à covariance nulle. Les coefficients ne sont pas immédiatement interprétables dans le contexte d'effets de premier ordre (de type vitesse) ou de second ordre (de type accélération). Cela peut être assez accablant dans un environnement professionnel.
Dans une simulation rapide avec un polynôme de degré 5, N = 1000 points, des valeurs de paramètres aléatoires (réduites dedix- d pour maintenir la variable de réponse dans les 2 ordres de grandeur), et le bruit non corrélé ∼ la moitié de la variation globale de la variable de réponse, la R2 Les deux modèles étaient identiques. Tout commeune dj R 2 's. Le pouvoir prédictif est le même. Mais les erreurs standard des valeurs des paramètres pour le modèle orthogonal étaient égales ou des ordres de grandeur inférieurs au modèle brut.
Je serais donc "d'ordre de grandeur" plus confiant en rapportant le modèle orthogonal que le modèle brut. Dans la pratique, j'interpolerais avec l'un ou l'autre modèle, mais j'extrapolerais seulement avec le modèle orthogonal.
la source
J'aurais juste fait un commentaire pour le mentionner, mais je n'ai pas assez de représentants, je vais donc essayer de développer une réponse. Vous pourriez être intéressé de voir que dans la section de laboratoire 7.8.1 dans "Introduction à l'apprentissage statistique" (James et. Al., 2017, correction de la 8ème impression), ils discutent quelques différences entre l'utilisation ou non de polynômes orthogonaux, qui utilise le
raw=TRUE
ouraw=FALSE
dans lapoly()
fonction. Par exemple, les estimations de coefficient changeront, mais les valeurs ajustées ne:Le livre explique également comment, lorsque des polynômes orthogonaux sont utilisés, les valeurs de p obtenues à l'aide du
anova()
test F imbriqué (pour explorer le degré de polynôme pouvant être justifié) sont les mêmes que celles obtenues lors de l'utilisation du test t standard, produites parsummary(fit)
. Ceci illustre que la statistique F est égale au carré de la statistique t dans certaines situations.la source