Estoy buscando una biblioteca de Python que pueda realizar una regresión segmentada (también conocida como regresión por partes) .
Ejemplo :
python
linear-regression
library
software-recommendation
Franck Dernoncourt
fuente
fuente
Respuestas:
numpy.piecewise
puede hacer estoUn ejemplo se da en SO aquí . Para completar, aquí hay un ejemplo:
fuente
El método propuesto por Vito MR Muggeo [1] es relativamente simple y eficiente. Funciona para un número específico de segmentos y para una función continua. Las posiciones de los puntos de ruptura se estiman iterativamente realizando, para cada iteración, una regresión lineal segmentada que permite saltos en los puntos de ruptura. A partir de los valores de los saltos, se deducen las siguientes posiciones de punto de interrupción, hasta que no haya más discontinuidad (saltos).
En particular, la convergencia o el resultado puede depender de la primera estimación de los puntos de corte.
Este es el método utilizado en el paquete R Segmented .
Aquí hay una implementación en python:
Ejemplo:
[1]: Muggeo, VM (2003). Estimación de modelos de regresión con puntos de corte desconocidos. Estadísticas en medicina, 22 (19), 3055-3071.
fuente
He estado buscando lo mismo, y desafortunadamente parece que no hay ninguno en este momento. Algunas sugerencias sobre cómo proceder se pueden encontrar en esta pregunta anterior .
Alternativamente, puede buscar en algunas bibliotecas R, por ejemplo, segmentado, SiZer, strucchange, y si algo funciona, intente incrustar el código R en python con rpy2 .
Edición para agregar un enlace a py-earth , "Una implementación de Python de Splines de regresión adaptativa multivariante de Jerome Friedman".
fuente
Hay una publicación de blog con una implementación recursiva de regresión por partes. Esa solución se ajusta a la regresión discontinua.
Si no está satisfecho con el modelo discontinuo y desea un asentamiento continuo, le propondría buscar su curva en base a curvas en forma de
k
L, utilizando Lasso para la dispersión:Este código le devolverá un vector de coeficientes estimados:
Debido al enfoque de Lasso, es escaso: el modelo encontró exactamente un punto de quiebre entre 10 posibles. Los números 0.57 y 0.825 corresponden a 0.5 y 1.25 en el verdadero DGP. Aunque no están muy cerca, las curvas ajustadas son:
Este enfoque no le permite estimar el punto de interrupción exactamente. Pero si su conjunto de datos es lo suficientemente grande, puede jugar con diferentes
k
(tal vez ajustarlo mediante validación cruzada) y estimar el punto de interrupción con la suficiente precisión.fuente