¿Puedes agregar términos polinómicos a la regresión lineal múltiple?

8

Estoy un poco confundido acerca de cuándo debería o no agregar términos polinómicos a un modelo de regresión lineal múltiple. Sé que los polinomios se usan para capturar la curvatura en los datos, pero siempre parece tener la forma de:

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

¿Qué pasa si sabes que hay una relación lineal entre y y x1, pero una relación no lineal entre y y x2? ¿Se puede usar un modelo en forma de:

y=x1+x2+x22+c

Supongo que mi pregunta es, ¿es válido dejar caer el X12 plazo y el x1x2 término, o ¿tiene que seguir la forma genérica de un modelo de regresión polinómica?

Amy K
fuente
55
Solo para completar, tenga en cuenta que si tiene x2 en el modelo debes tener Xtambién. Busque en este sitio el principio de marginalidad para obtener más información. Sé que no sugirió hacerlo, pero la información podría ser útil.
mdewey
Es realmente extraño ver algo como y=unaX+siX2y lo llamamos un modelo de regresión lineal, pero definitivamente lo es. Recuerda que tiene que ver con la linealidad en los coeficientes. Sugiero el video de Mathematical Monk sobre esto: m.youtube.com/watch?v=rVviNyIR-fI . Quince minutos pueden parecer un tiempo para gastar en esto, pero nunca olvidará que la regresión lineal puede involucrar un comportamiento no lineal. Tal vez como una pregunta para el OP: esy=unaX+siX2Un modelo de regresión lineal?
Dave
@mdewey, su declaración es demasiado general para ser correcta y / o tener sentido en todas las configuraciones. Puedo imaginar fácilmente un modelo bien definido conx2 pero sin x. Por ejemplo, casos en los que el proceso de generación de datos esy=β0+β1x2+ε o donde esta y=β0+β1z+ε dónde x=z (y z>0), o donde el modelo es simplemente la mejor aproximación (en comparación con el que incluye x) a cualquier proceso de generación de datos que estemos enfrentando.
Richard Hardy

Respuestas:

14

Además de la excelente respuesta de @ mkt, pensé en proporcionar un ejemplo específico para que lo veas y puedas desarrollar algo de intuición.

Generar datos por ejemplo

Para este ejemplo, generé algunos datos usando R de la siguiente manera:

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

Como puede ver en lo anterior, los datos provienen del modelo y=β0+β1x1+β2x2+β3x22+ϵ, dónde ϵ es un término de error aleatorio normalmente distribuido con media 0 y varianza desconocida σ2. Además,β0=1, β1=10, β2=0.4 y β3=0.8, mientras σ=1.

Visualice los datos generados a través de Coplots

Dados los datos simulados sobre la variable de resultado y y las variables predictoras x1 y x2, podemos visualizar estos datos usando 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)

Los coplots resultantes se muestran a continuación.

La primera gráfica muestra gráficos de dispersión de y versus x1 cuando x2 pertenece a cuatro rangos diferentes de valores observados (que se superponen) y mejora cada uno de estos gráficos de dispersión con un ajuste suave, posiblemente no lineal, cuya forma se estima a partir de los datos.

ingrese la descripción de la imagen aquí

La segunda gráfica muestra gráficos de dispersión de y versus x2 cuando x1 pertenece a cuatro rangos diferentes de valores observados (que se superponen) y mejora cada uno de estos gráficos de dispersión con un ajuste suave.

ingrese la descripción de la imagen aquí

La primera trama sugiere que es razonable suponer que x1 tiene un efecto lineal sobre y cuando se controla x2 y que este efecto no depende de x2.

La segunda trama sugiere que es razonable suponer que x2 tiene un efecto cuadrático en y cuando se controla x1 y que este efecto no depende de x1.

Ajustar un modelo correctamente especificado

Los coplots sugieren ajustar el siguiente modelo a los datos, lo que permite un efecto lineal de x1 y un efecto cuadrático de x2:

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

Construir componentes más gráficos residuales para el modelo especificado correctamente

Una vez que el modelo especificado correctamente se ajusta a los datos, podemos examinar las gráficas de componentes más residuos para cada predictor incluido en el modelo:

library(car)

crPlots(m)

Estos gráficos de componentes más residuales se muestran a continuación y sugieren que el modelo se especificó correctamente ya que no muestran evidencia de no linealidad, etc. De hecho, en cada uno de estos gráficos, no existe una discrepancia obvia entre la línea azul punteada que sugiera un efecto lineal de el predictor correspondiente y la línea magenta sólida que sugiere un efecto no lineal de ese predictor en el modelo.

ingrese la descripción de la imagen aquí

Ajustar un modelo especificado incorrectamente

Juguemos al abogado del diablo y digamos que nuestro modelo lm () fue de hecho incorrectamente especificado (es decir, mal especificado), en el sentido de que omitió el término cuadrático I (x2 ^ 2):

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

Construir componentes más gráficos residuales para el modelo especificado incorrectamente

Si construyéramos gráficas de componentes más residuos para el modelo mal especificado, veríamos inmediatamente una sugerencia de no linealidad del efecto de x2 en el modelo mal especificado:

crPlots(m.mis)

En otras palabras, como se ve a continuación, el modelo mal especificado no pudo capturar el efecto cuadrático de x2 y este efecto se muestra en el gráfico de componente más residual correspondiente al predictor x2 en el modelo mal especificado.

ingrese la descripción de la imagen aquí

La especificación errónea del efecto de x2 en el modelo m.mis también sería evidente al examinar las gráficas de los residuos asociados con este modelo contra cada uno de los predictores x1 y 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)

Como se ve a continuación, la gráfica de los residuos asociados con m.mis versus x2 exhibe un patrón cuadrático claro, lo que sugiere que el modelo m.mis no logró capturar este patrón sistemático.

ingrese la descripción de la imagen aquí

Aumentar el modelo especificado incorrectamente

Para especificar correctamente el modelo m.mis, necesitaríamos aumentarlo para que también incluya el término I (x2 ^ 2):

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

Aquí están las gráficas de los residuos versus x1 y x2 para este modelo correctamente especificado:

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)

Observe que el patrón cuadrático visto anteriormente en la gráfica de residuos versus x2 para el modelo mal especificado m.mis ahora ha desaparecido de la gráfica de residuos versus x2 para el modelo m correctamente especificado.

Tenga en cuenta que el eje vertical de todas las gráficas de residuos versus x1 y x2 que se muestran aquí debe etiquetarse como "Residual". Por alguna razón, R Studio corta esa etiqueta.

ingrese la descripción de la imagen aquí

Isabella Ghement
fuente
11

Sí, lo que estás sugiriendo está bien. Es perfectamente válido en un modelo para tratar la respuesta a un predictor como lineal y otro diferente como polinomial. También está completamente bien asumir que no hay interacciones entre los predictores.

mkt - Restablecer a Monica
fuente
1
Hola. Solo una duda asociada. Si ambosX y X2 son regresores, y dicen Xes estrictamente positivo, ¿habría un problema de multicolinealidad? ¿Es posible que los coeficientes tengan errores estándar más grandes?
Dayne
@Dayne Buena pregunta! Este es un tema que se discute también aquí y aquí
MKT - Restablecer Mónica
1
@mkt Esos enlaces ofrecen enfoques totalmente separados de la idea de Ingolifs sobre polinomios ortogonales. ¿Alguna idea sobre el enfoque polinómico ortogonal?
Dave
1
@Dave No sé mucho al respecto, me temo. Puede ser bueno hacer una nueva pregunta sobre la comparación de los enfoques.
mkt - Restablecer Monica
7

Debe tener cuidado de usar polinomios ortogonales si va a agregar términos polinomiales.

¿Por qué? Sin ellos tienes un problema parecido a la colinealidad . En ciertas regiones,X2 se verá bastante similar a X, y una parábola hará un trabajo decente al ajustar una línea recta.

Observar:

ingrese la descripción de la imagen aquí

Estos son polinomios de X,X2,X3.

Entre 0 y 1.5, las tres curvas aumentan monotónicamente y aunque se curvan de manera diferente entre sí, darán ajustes de calidad similares cuando x se correlaciona positivamente con y. Al usar los tres en su código

y ~ x + x^2 + x^3

esencialmente está utilizando formas redundantes para ajustar sus datos.

Los polinomios ortogonales esencialmente le dan margen de maniobra adicional cuando se ajusta, y cada polinomio es esencialmente independiente de los demás.

ingrese la descripción de la imagen aquí

Tres polinomios de grado 1,2 y 3 generados por la función poly () en R.

Tal vez, en lugar de pensar explícitamente en ellos como polinomios, los consideres como 'componentes de tendencia' o algo así:

Xrepresenta "más es siempre mejor" (o peor si el coeficiente es negativo). Si estuvieras haciendo una regresión sobre la calidad de la música frente al cencerro , necesitarías este componente.

X2representa una especie de zona de Ricitos de Oro. Si estuviera haciendo una regresión sobre el sabor de los alimentos frente a la cantidad de sal, este componente sería relevante.

X3es poco probable que sea un componente dominante por sí solo (el único ejemplo que se me ocurre es cuánto saben las personas frente a cuánto creen que saben ), pero su presencia influirá en la forma y simetría deX y X2 condiciones.

Hay muchas matemáticas complicadas involucradas en polinomios ortogonales, pero afortunadamente solo necesitas saber dos cosas:

  1. Los polinomios ortogonales son solo ortogonales en una región determinada. El ejemplo que di involucra polinomios que son solo ortogonales entre 0 y 1.5.
  2. Si está usando R, use la función poly () para hacer sus polinomios. poli (x, n) donde n es el grado del polinomio más alto. Los hará ortogonales para usted sobre el dominio de sus datosX.
Ingolifs
fuente
2
Esto es extremadamente interesante y no es algo que haya escuchado antes. Sin embargo, ¿tiene alguna referencia que diga que esto es necesario o útil? ¿Y útil para la predicción o la inferencia de parámetros? ¿Y conoces un comando de Python para "poli"?
Dave el
Varias facetas de la regresión polinómica ortogonal se han abordado aquí y aquí y mucho más.
Jason
Gran respuesta, y gracias por mencionarlo mejor que la publicación que tenía en mente. :)
Jason
1
@Ingolifs: ¡Esta es la mejor explicación de los polinomios ortogonales que he leído hasta ahora en este sitio! Estoy de acuerdo con Dave en que sería útil comentar en su respuesta sobre la utilidad de los polinomios ortogonales para la predicción o la inferencia de parámetros.
Isabella Ghement
1
+1, pero ten cuidado polyporque si lo intentas predict, volverá a colocar los polinomios en la muestra de predicción; es decir, tenemos basura.
usεr11852
0

No hay una regla que diga que tienes que usar todas tus variables. Si está tratando de predecir ingresos, y sus variables de características son el SSN, los años de escolaridad y la edad, y desea eliminar el SSN porque espera que cualquier correlación entre este y los ingresos sea espuria, es su decisión. Un modelo no es inválido simplemente porque hay otras variables que teóricamente podrías haber incluido, pero no lo hiciste. Decidir qué términos polinómicos incluir es solo una de las muchas decisiones con respecto a la selección de características.

Si bien los modelos polinómicos a menudo comienzan con la inclusión de todos los términos, eso es solo para que todos puedan evaluarse en cuanto a la cantidad que están agregando al modelo. Si parece que un término en particular es solo un sobreajuste, se puede descartar en iteraciones posteriores del modelo. La regularización, como la regresión de lazo, puede descartar variables menos útiles automáticamente. En general, es mejor comenzar con un modelo que tenga demasiadas variables, y reducirlo a las que sean más útiles, que comenzar solo con las variables en las que cree que debe confiar el modelo, y posiblemente perder una relación No estaban esperando.

Acumulacion
fuente