¿Puedo usar una variable que tenga una relación no lineal con la variable dependiente en la regresión logística?

9

Digamos que estoy construyendo un modelo de regresión logística donde la variable dependiente es binaria y puede tomar los valores. 0 o 1. Deje que las variables independientes seanx1,x2,...,xm - existen mvariables independientes. Digamos por elkEn la variable independiente, el análisis bivariado muestra una tendencia en forma de U, es decir, si agrupo xk dentro 20 cada uno de ellos contiene aproximadamente el mismo número de observaciones y calculo la 'tasa mala' para cada contenedor - # observaciones donde y = 0 / observaciones totales en cada contenedor - luego obtengo una curva en forma de U.

Mis preguntas son:

  1. ¿Puedo usar directamente xkcomo entrada al estimar los parámetros beta? ¿Se violan algunos supuestos estadísticos que podrían causar un error significativo en la estimación de los parámetros?
  2. ¿Es necesario 'linealizar' esta variable a través de una transformación (log, cuadrado, producto consigo mismo, etc.)?
Mozan Sykol
fuente
3
Es Xk¿Uno de los predictores que desea incluir en el modelo? Parece que estás diciendo esoP(Y=1) es una función en forma de U de Xk. Una curva en forma de U a menudo se puede aproximar bien mediante una función cuadrática (especialmente cerca del valle): ¿ha considerado incluir un término lineal y cuadrático en esa variable en el modelo?
Macro
@Macro gracias por tu sugerencia. He visto algunos modeladores que ajustan una función lineal por partes (asumiendo una forma de U afilada), donde cada línea se estima a partir de los datos con los saltos determinados visualmente y luego la salida de la ecuación lineal se proporciona como una entrada a la regresión logística. Sin embargo, no soy un gran admirador del enfoque.
Mozan Sykol

Respuestas:

12

Debería utilizar una formulación flexible que capture la no linealidad automáticamente, por ejemplo, alguna versión de un modelo aditivo generalizado . La elección de un pobre es un polinomioxk, xk2, ..., xkpk, pero tales polinomios producen sobrevuelos terribles en los extremos del rango de sus respectivas variables. Una formulación mucho mejor sería utilizar splines B (cúbicos) (vea una nota de introducción aleatoria de la primera página de Google aquí , y un buen libro, aquí ). Las estrías B son una secuencia de jorobas locales:

http://ars.sciencedirect.com/content/image/1-s2.0-S0169743911002292-gr2.jpg

La altura de las jorobas se determina a partir de su regresión (lineal, logística, otra GLM), ya que la función que está ajustando es simplemente

θ=β0+k=1KβkB(xxkhk)

para la forma funcional especificada de su joroba B(). Con mucho, la versión más popular es una estría cúbica lisa en forma de campana:

B(z)={14(z+2)3,2z114(3|x|36x2+4),1<x<114(2x)3,1x20,otherwise

En el lado de la implementación, todo lo que necesita hacer es configurar 3-5-10, cualquier número de nudos xk sería razonable para su aplicación y crearía las variables 3-5-10 correspondientes en el conjunto de datos con los valores de B(xxkhk). Por lo general, se elige una cuadrícula de valores simple, conhk siendo el doble del tamaño de malla de la cuadrícula, de modo que en cada punto, hay dos splines B superpuestas, como en el diagrama anterior.

StasK
fuente
2
¿Cómo puedes decir que necesita algo tan complicado? Ciertamente, un término cuadrático en una covariable x que parece tener esa forma podría incorporarse en el modelo de regresión logística de la forma en que el OP parece quererlo.
Michael R. Chernick
1
@MichaelChernick Sí, acepté la respuesta ya que me enseñó un nuevo concepto, pero probablemente no necesitaré una solución tan complicada.
Mozan Sykol
3
@Michael Ese es un punto importante. Sin embargo, me alienta un comentario del OP que menciona un procedimiento de ajuste lineal por partes ad hoc . Splining funciona con el mismo espíritu pero con mayor flexibilidad y rigor. Los términos cuadráticos podrían funcionar, pero parece mucho esperar.
whuber
Me parece más una constante por partes: el valor medio de la respuesta dentro de un contenedor es equivalente a la regresión en la variable / indicador ficticio de ese contenedor, y esa es la constante por partes ... @MichaelChernick: generalmente no se sabe, pero yo Todavía no he visto una aplicación donde las estrías B serían inferiores al ajuste polinomial.
StasK
@StasK Si inferior significa que no se ajusta también a los datos, entonces creo que un tamaño de muestra pequeño sería un polinomio simple.
Michael R. Chernick
5

Al igual que la regresión lineal, se requiere que la regresión logística y los modelos lineales más generalizados sean lineales en los parámetros, pero no necesariamente en las covariables. Entonces, se pueden usar términos polinómicos como un cuadrático que Macro sugiere. Este es un malentendido común del término lineal en los modelos lineales generalizados. Los modelos no lineales son modelos que no son lineales en los parámetros. Si el modelo es lineal en los parámetros y contiene términos de ruido aditivo que son IID, el modelo es lineal incluso si hay covariables como X2log X o exp (X). Como ahora leo la pregunta, parece estar editada. Mi respuesta específica sería sí a 1 y no necesaria a 2.

Michael R. Chernick
fuente
1

Otra alternativa viable que emplea el taller de modelaje para el que trabajo habitualmente es agrupar las variables independientes continuas y sustituir la 'tasa mala'. Esto obliga a una relación lineal.

Zelazny7
fuente
También he visto esto. ¿Cómo eliges los contenedores?
Adam Ryczkowski
1
Hay una variedad de métodos de discretización que puede usar. R tiene el discopaquete. Creé mi propio algoritmo que divide recursivamente una variable continua basada en el valor de la información. Lo puse en un paquete R aquí: github.com/Zelazny7/binnr (¡trabajo en progreso!). También sustituiría el peso de la evidencia en lugar de la media. Cuando se combina con la regresión LASSO, ¡los resultados son fantásticos!
Zelazny7
¡Gracias! ¿Puedes comparar el binnralgoritmo con los CRAN smbinning?
Adam Ryczkowski
'binnr' está escrito en C y es muy rápido. También es compatible con las condiciones del mundo real, como los valores de anulación y la monotonicidad. Es posible decirle a 'binnr' que solo haga cortes discretos cuando las tasas malas son monótonas. 'smbinning' usa árboles de inferencia condicional que, en mi experiencia, requieren mucho tiempo en conjuntos de datos de tamaño decente porque dependen de permutaciones. 'binnr' también le permite hacer ajustes interactivos a los contenedores con una interfaz de línea de comando
Zelazny7
¿Lo usaste en producción? ¿Conoce algún error oculto o casos de esquina sin marcar? Pienso usarlo para un gran cliente y solo tendré 1 día para probarlo antes de aplicar su código.
Adam Ryczkowski