Quiero hacer una regresión de una variable en . ¿Debo hacer esto usando polinomios en bruto u ortogonales? Miré la pregunta en el sitio que se ocupa de estos, pero realmente no entiendo cuál es la diferencia entre usarlos.
¿Por qué no puedo simplemente hacer una regresión "normal" para obtener los coeficientes de (junto con los valores de p y todas las otras cosas buenas) y en su lugar ¿tiene que preocuparse si usa polinomios en bruto u ortogonales? Esta elección me parece estar fuera del alcance de lo que quiero hacer.
En el libro de estadísticas que estoy leyendo actualmente (ISLR por Tibshirani et al) estas cosas no fueron mencionadas. En realidad, fueron minimizados de alguna manera.
La razón es, AFAIK, que en la lm()
función en R, usar y ~ poly(x, 2)
cantidades para usar polinomios ortogonales y usar y ~ x + I(x^2)
cantidades para usar materias primas. Pero en las págs. 116 los autores dicen que usamos la primera opción porque la segunda es "engorrosa", lo que no deja ninguna indicación de que estos comandos realmente hagan cosas completamente diferentes (y que tengan diferentes resultados como consecuencia).
(tercera pregunta) ¿Por qué los autores de ISLR confundirían así a sus lectores?
fuente
poly
tiene algo que ver con polinomios ortogonales y yo (x ^ 2) no (aunque no conozco los detalles), pero aún así, ¿por qué los autores de ISLR recomendarían un método que no funciona? ? Parece muy engañoso si ambos comandos parecen hacer lo mismo, pero solo uno está bien.poly
y pasé un tiempo con este problema, pero no puedo entender por qué poli (x, 2) y x + I (x ^ 2) marcan la diferencia. ¿Podría por favor aclararme aquí en los comentarios, si la pregunta es fuera de tema?R
tecnicismo menor , que no entendía, pero ahora parece ser un problema estadístico completo que me impide codificar una regresión que no debería ser así de difícil de codificar.Respuestas:
Creo que la respuesta es menos sobre la estabilidad numérica (aunque eso juega un papel) y más sobre la reducción de la correlación.
En esencia, el problema se reduce al hecho de que cuando retrocedemos contra un grupo de polinomios de alto orden, las covariables contra las que retrocedemos se correlacionan altamente. Código de ejemplo a continuación:
Esto es tremendamente importante. A medida que las covariables se vuelven más correlacionadas, nuestra capacidad para determinar cuáles son importantes (y cuál es el tamaño de sus efectos) se erosiona rápidamente. Esto generalmente se conoce como el problema de la multicolinealidad. En el límite, si tuviéramos dos variables que estuvieran completamente correlacionadas, cuando las retrocedemos contra algo, es imposible distinguir entre las dos; puede pensar en esto como una versión extrema del problema, pero este problema afecta nuestras estimaciones para grados menores de correlación también. Por lo tanto, en un sentido real, incluso si la inestabilidad numérica no fuera un problema, la correlación de los polinomios de orden superior hace un daño tremendo a nuestras rutinas de inferencia. Esto se manifestará como errores estándar más grandes (y, por lo tanto, estadísticas t más pequeñas) que de otro modo vería (ver ejemplo de regresión a continuación).
Si ejecuta este código, la interpretación es un poco difícil porque todos los coeficientes cambian y, por lo tanto, las cosas son difíciles de comparar. Sin embargo, al observar las estadísticas T, podemos ver que la capacidad de determinar los coeficientes era MUCHO mayor con los polinomios ortogonales. Para los 3 coeficientes relevantes, obtuve estadísticas t de (560,21,449) para el modelo ortogonal, y solo (28, -38,121) para el modelo polinomial bruto. Esta es una gran diferencia para un modelo simple con solo unos pocos términos polinómicos de orden relativamente bajo que importaban.
Eso no quiere decir que esto viene sin costos. Hay dos costos principales a tener en cuenta. 1) perdemos cierta interpretabilidad con polinomios ortogonales. Podríamos entender qué
x**3
significa el coeficiente en , pero interpretar el coeficiente enx**3-3x
(el tercer poli hermita, no necesariamente lo que usará) puede ser mucho más difícil. Segundo, cuando decimos que estos son polinomios son ortogonales, queremos decir que son ortogonales con respecto a alguna medida de distancia. Elegir una medida de distancia que sea relevante para su situación puede ser difícil. Sin embargo, una vez dicho esto, creo que lapoly
función está diseñada para elegir de modo que sea ortogonal con respecto a la covarianza, lo cual es útil para regresiones lineales.fuente
raw.mod
él estima la pendiente de la curva en x = 0, enorthogonal.mod
ella estima la pendiente marginal (es decir, idéntica alm(y ~ poly(x,1))
donde se omiten los términos de orden superior). No hay razón para que las estimaciones de estos estimados completamente diferentes tengan errores estándar comparables. Se puede construir fácilmente un contraejemplo donderaw.mod
hay estadísticas t mucho más altasEl uso de polinomios en bruto causará problemas porque tendremos un gran número. Aquí hay una pequeña prueba: estamos comparando el número de condición de la matriz con el polinomio crudo y ortogonal.
También puedes consultar mi respuesta aquí para ver un ejemplo.
¿Por qué hay coeficientes grandes para polinomios de orden superior?
fuente
R
la salida deprint(0.4, digits=20)
is0.40000000000000002
.Siento que varias de estas respuestas pierden completamente el punto. La respuesta de Haitao aborda los problemas computacionales con el ajuste de polinomios en bruto, pero está claro que OP pregunta por las diferencias estadísticas entre los dos enfoques. Es decir, si tuviéramos una computadora perfecta que pudiera representar todos los valores exactamente, ¿por qué preferiríamos un enfoque sobre el otro?
Creado el 25/10/2019 por el paquete reprex (v0.3.0)
El efecto marginal de
Petal.Width
a 0 del ajuste ortogonal y su error estándar son exactamente iguales a los del ajuste polinómico bruto. El uso de polinomios ortogonales no mejora la precisión de las estimaciones de la misma cantidad entre los dos modelos.Creado el 25/10/2019 por el paquete reprex (v0.3.0)
Ahora, si desea este beneficio interpretativo sobre el beneficio interpetacional de ser capaz de comprender los coeficientes del modelo, entonces debe usar polinomios ortogonales. Si prefiere mirar los coeficientes y saber exactamente lo que significan (aunque dudo que uno lo haga), entonces debería usar los polinomios en bruto. Si no le importa (es decir, solo desea controlar la confusión o generar valores pronosticados), entonces realmente no importa; ambas formas llevan la misma información con respecto a esos objetivos. También diría que los polinomios ortogonales deberían preferirse en la regularización (p. Ej., Lazo), porque eliminar los términos de orden superior no afecta los coeficientes de los términos de orden inferior, lo cual no es cierto con los polinomios en bruto,
fuente
stats::
de la llamada apoly()
enlm()
pormargins
lo reconozca (que es estúpida). Quería centrar mi argumento en las estimaciones puntuales y los errores estándar, y sé que se presenta mucha información extraña y que distrae, pero espero que el texto ilustre mis puntos.stats::poly()
. El error dice'degree' must be less than number of unique points
, lo que no me ayuda mucho. Sin embargo,margin()
está respaldando declaraciones comprobables por lo que no es importante.Corroboro la excelente respuesta de @ user5957401 y agrego comentarios sobre interpolación, extrapolación e informes.
Incluso en el dominio de valores de parámetros estables, los coeficientes / parámetros modelados por los polinomios ortogonales tendrán errores estándar sustancialmente más pequeños que los coeficientes / parámetros modelados por los parámetros brutos. Esencialmente, los polinomios ortogonales son un conjunto libre de descriptores de covarianza cero. ¡Eso es PCA gratis!
El único inconveniente potencial es tener que explicar esto a alguien que no comprende la virtud de los descriptores de covarianza cero. Los coeficientes no son inmediatamente interpretables en el contexto de los efectos de primer orden (tipo velocidad) o de segundo orden (tipo aceleración). Esto puede ser bastante condenatorio en un entorno empresarial.
Por lo tanto, sería "órdenes de magnitud" más seguro al informar sobre el modelo ortogonal que el modelo en bruto. En la práctica, interpolaría con cualquiera de los modelos, pero extrapolaría solo con el ortogonal.
fuente
Hubiera comentado para mencionar esto, pero no tengo suficiente representante, así que intentaré expandirme en una respuesta. Tal vez le interese ver que en la Sección 7.8.1 del Laboratorio en "Introducción al aprendizaje estadístico" (James et. Al., 2017, 8a impresión corregida), discuten algunas diferencias entre usar polinomios ortogonales o no, que es usar el
raw=TRUE
oraw=FALSE
en lapoly()
función. Por ejemplo, los coeficientes estimados cambiarán, pero los valores ajustados no:El libro también discute cómo cuando se usan polinomios ortogonales, los valores p obtenidos usando la
anova()
prueba F anidada (para explorar qué grado de polinomio podría estar justificado) son los mismos que los obtenidos cuando se usa la prueba t estándar, emitidos porsummary(fit)
. Esto ilustra que el estadístico F es igual al cuadrado del estadístico t en ciertas situaciones.fuente