Ich möchte eine Variable auf x , x 2 , … , x 5 zurückführen . Sollte ich dazu rohe oder orthogonale Polynome verwenden? Ich habe mir Fragen auf der Website angesehen, die sich mit diesen beschäftigen, aber ich verstehe nicht wirklich, was der Unterschied zwischen der Verwendung ist.
Warum kann ich nicht einfach eine "normale" Regression durchführen, um die Koeffizienten von y = ∑ 5 i = 0 β i x i zu erhalten (zusammen mit p-Werten und all den anderen netten Dingen) und muss mir stattdessen Sorgen machen, ob ich sie verwende? rohe oder orthogonale Polynome? Diese Wahl scheint mir außerhalb des Rahmens dessen zu liegen, was ich tun möchte.
In dem Statistikbuch, das ich gerade lese (ISLR von Tibshirani et al.), Wurden diese Dinge nicht erwähnt. Eigentlich wurden sie in gewisser Weise heruntergespielt.
Der Grund ist, AFAIK, dass in der lm()
Funktion in R die Verwendung von y ~ poly(x, 2)
Beträgen der Verwendung von orthogonalen Polynomen und die Verwendung von y ~ x + I(x^2)
Beträgen der Verwendung von rohen Polynomen entspricht. Aber auf S. 116 sagen die Autoren, dass wir die erste Option verwenden, weil die letztere "umständlich" ist, was keinen Hinweis darauf hinterlässt, dass diese Befehle tatsächlich völlig verschiedene Dinge betreffen (und folglich unterschiedliche Ausgaben haben).
(dritte Frage) Warum würden die Autoren von ISLR ihre Leser so verwirren?
quelle
poly
das etwas mit orthogonalen Polynomen zu tun hat und ich (x ^ 2) nicht (obwohl ich die Details nicht kenne) - aber warum würden die Autoren von ISLR dann eine Methode empfehlen, die nicht funktioniert? ? Es scheint sehr irreführend, wenn beide Befehle dasselbe tun, aber nur einer ist tatsächlich in Ordnung.poly
und habe bereits eine Weile mit diesem Problem verbracht, aber ich kann nicht herausfinden, warum poly (x, 2) und x + I (x ^ 2) einen Unterschied machen. Könnten Sie mich bitte hier in den Kommentaren aufklären, wenn die Frage offtopisch ist?R
technische Tatsache, die ich nicht verstanden habe, aber jetzt scheint es ein ausgewachsenes Statistikproblem zu sein, das mich daran hindert, eine Regression zu codieren, die nicht sein sollte so schwer zu codieren.Antworten:
Ich glaube, bei der Antwort geht es weniger um numerische Stabilität (obwohl dies eine Rolle spielt) als vielmehr darum, die Korrelation zu verringern.
Im Wesentlichen läuft das Problem darauf hinaus, dass die Kovariaten, gegen die wir regressieren, in hohem Maße korrelieren, wenn wir uns gegen eine Reihe von Polynomen höherer Ordnung zurückbilden. Beispielcode unten:
Das ist enorm wichtig. Mit zunehmender Korrelation der Kovariaten schwindet unsere Fähigkeit, zu bestimmen, welche wichtig sind (und wie groß ihre Auswirkungen sind), rapide. Dies wird typischerweise als das Problem der Multikollinearität bezeichnet. Wenn wir zwei Variablen hatten, die vollständig korreliert waren, und wenn wir sie gegen etwas regressieren, ist es unmöglich, zwischen den beiden zu unterscheiden - Sie können sich dies als eine extreme Version des Problems vorstellen, aber dieses Problem wirkt sich auf unsere Schätzungen für aus auch geringere Korrelationsgrade. Im eigentlichen Sinne - auch wenn numerische Instabilität kein Problem war - beschädigt die Korrelation aus Polynomen höherer Ordnung unsere Inferenzroutinen enorm. Dies äußert sich in größeren Standardfehlern (und damit kleineren t-Werten), die Sie sonst sehen würden (siehe Beispiel für eine Regression unten).
Wenn Sie diesen Code ausführen, ist die Interpretation ein wenig schwierig, da sich die Koeffizienten alle ändern und es daher schwierig ist, die Ergebnisse zu vergleichen. Wenn wir uns die T-Statistiken ansehen, können wir sehen, dass die Fähigkeit, die Koeffizienten zu bestimmen, bei orthogonalen Polynomen VIEL größer war. Für die 3 relevanten Koeffizienten erhielt ich t-Werte von (560,21,449) für das Orthogonalmodell und nur (28, -38,121) für das Rohpolynommodell. Dies ist ein großer Unterschied für ein einfaches Modell, bei dem nur wenige Polynomterme niedriger Ordnung von Bedeutung sind.
Das heißt nicht, dass dies ohne Kosten kommt. Es sind zwei Hauptkosten zu berücksichtigen. 1) Wir verlieren etwas Interpretierbarkeit mit orthogonalen Polynomen. Wir verstehen vielleicht, was der Koeffizient auf
x**3
bedeutet, aber die Interpretation des Koeffizienten aufx**3-3x
(das dritte Einsiedler-Poly - nicht unbedingt das, was Sie verwenden werden) kann viel schwieriger sein. Zweitens - wenn wir sagen, dass diese Polynome orthogonal sind - meinen wir, dass sie in Bezug auf ein gewisses Maß an Distanz orthogonal sind. Es kann schwierig sein, ein für Ihre Situation relevantes Entfernungsmaß auszuwählen. Allerdings glaube ich, dass diepoly
Funktion so gewählt werden soll, dass sie in Bezug auf die Kovarianz orthogonal ist - was für lineare Regressionen nützlich ist.quelle
raw.mod
Er schätzt die Steigung der Kurve bei x = 0,orthogonal.mod
schätzt die marginale Steigung (dh identisch mitlm(y ~ poly(x,1))
dem Weglassen von Termen höherer Ordnung). Es gibt keinen Grund, warum Schätzungen dieser völlig unterschiedlichen Schätzer vergleichbare Standardfehler aufweisen sollten. Man kann leicht ein Gegenbeispiel konstruieren, in demraw.mod
es viel höhere t-Werte gibtDie Verwendung eines rohen Polynoms führt zu Problemen, da wir eine große Anzahl haben werden. Hier ist ein kleiner Beweis: Wir vergleichen die Matrixbedingungsnummer mit dem rohen und dem orthogonalen Polynom.
Sie können meine Antwort auch hier für ein Beispiel überprüfen.
Warum gibt es große Koeffizienten für Polynome höherer Ordnung?
quelle
R
der Ausgabe vonprint(0.4, digits=20)
is0.40000000000000002
.Ich habe das Gefühl, dass einige dieser Antworten völlig verfehlen. Die Antwort von Haitao befasst sich mit den Rechenproblemen beim Anpassen von Rohpolynomen, aber es ist klar, dass OP nach dem fragt statistischen Unterschieden zwischen den beiden Ansätzen . Wenn wir also einen perfekten Computer hätten, der alle Werte genau darstellen könnte, warum würden wir dann einen Ansatz dem anderen vorziehen?
Erstellt am 25.10.2019 durch das Paket reprex (v0.3.0)
Der marginale Effekt von
Petal.Width
at 0 aus der orthogonalen Anpassung und sein Standardfehler sind genau gleich denen aus der rohen Polynomanpassung. Die Verwendung von orthogonalen Polynomen verbessert nicht die Genauigkeit von Schätzungen derselben Größe zwischen den beiden Modellen.Erstellt am 25.10.2019 durch das Paket reprex (v0.3.0)
Wenn Sie nun diesen Interpretationsvorteil gegenüber dem Interpetationsvorteil der tatsächlichen Fähigkeit, die Koeffizienten des Modells zu verstehen, wünschen, sollten Sie orthogonale Polynome verwenden. Wenn Sie lieber die Koeffizienten betrachten und genau wissen möchten, was sie bedeuten (obwohl ich bezweifle, dass dies normalerweise der Fall ist), sollten Sie die rohen Polynome verwenden. Wenn es Ihnen egal ist (dh Sie möchten nur die Verwechslung kontrollieren oder vorhergesagte Werte generieren), ist dies wirklich egal. Beide Formulare enthalten dieselben Informationen zu diesen Zielen. Ich würde auch argumentieren, dass orthogonale Polynome bei der Regularisierung bevorzugt werden sollten (z. B. Lasso), da das Entfernen von Termen höherer Ordnung die Koeffizienten der Termen niedrigerer Ordnung nicht beeinflusst, was bei rohen Polynomen nicht zutrifft.
quelle
stats::
im Aufrufpoly()
inlm()
fürmargins
sie zu erkennen (was dumm ist). Ich wollte mein Argument auf die Punktschätzungen und Standardfehler konzentrieren, und ich weiß, dass eine Menge irrelevanter und ablenkender Informationen präsentiert werden, aber ich hoffe, dass der Text meine Punkte veranschaulicht.stats::poly()
. Der Fehler sagt'degree' must be less than number of unique points
- was mir nicht viel hilft. Trotzdemmargin()
ist es nicht wichtig, nachweisbare Aussagen zu sichern.Ich bestätige die ausgezeichnete Antwort von @ user5957401 und füge Kommentare zu Interpolation, Extrapolation und Berichterstellung hinzu.
Selbst im Bereich stabiler Parameterwerte weisen die durch die orthogonalen Polynome modellierten Koeffizienten / Parameter wesentlich kleinere Standardfehler auf als die durch die Rohparameter modellierten Koeffizienten / Parameter. Im Wesentlichen sind die orthogonalen Polynome eine freie Menge von Null-Kovarianz-Deskriptoren. Das ist PCA kostenlos!
Der einzige mögliche Nachteil besteht darin, dies jemandem erklären zu müssen, der die Tugend der Null-Kovarianz-Deskriptoren nicht versteht. Die Koeffizienten sind im Kontext von Effekten erster Ordnung (geschwindigkeitsabhängig) oder zweiter Ordnung (beschleunigungsabhängig) nicht sofort interpretierbar. Dies kann in einem Geschäftsumfeld ziemlich schädlich sein.
Ich würde also "Größenordnungen" sicherer sein, das orthogonale Modell zu beschreiben als das rohe. In der Praxis würde ich mit beiden Modellen interpolieren , aber ich würde nur mit dem orthogonalen extrapolieren .
quelle
Ich hätte das nur kommentiert, aber ich habe nicht genug Repräsentanten, also werde ich versuchen, eine Antwort zu finden. Es könnte Sie interessieren zu sehen, dass in Laborabschnitt 7.8.1 in "Einführung in das statistische Lernen" (James et al., 2017, korrigierter achter Ausdruck) einige Unterschiede zwischen der Verwendung von orthogonalen Polynomen und der Verwendung von nicht-orthogonalen Polynomen erörtert werden
raw=TRUE
oderraw=FALSE
in derpoly()
Funktion. Beispielsweise ändern sich die Koeffizientenschätzungen, die angepassten Werte jedoch nicht:In dem Buch wird auch erläutert, wie bei Verwendung von orthogonalen Polynomen die mit dem
anova()
verschachtelten F-Test (um zu untersuchen, inwieweit ein Polynom gerechtfertigt sein kann) erhaltenen p-Werte mit denen des Standard-t-Tests von identisch sindsummary(fit)
. Dies zeigt, dass die F-Statistik in bestimmten Situationen dem Quadrat der t-Statistik entspricht.quelle