Tengo un conjunto de datos de series temporales de un sensor que aumenta linealmente, con rangos de valores entre 50 y 150. Implementé un algoritmo de regresión lineal simple para ajustar una línea de regresión en dichos datos, y estoy prediciendo la fecha en que la serie alcanzaría 120
Todo funciona bien cuando la serie se mueve hacia arriba. Pero, hay casos en los que el sensor alcanza alrededor de 110 o 115, y se reinicia; en tales casos, los valores comenzarían nuevamente en, por ejemplo, 50 o 60.
Aquí es donde empiezo a enfrentar problemas con la línea de regresión, ya que comienza a moverse hacia abajo y comienza a predecir la fecha anterior. Creo que debería considerar solo el subconjunto de datos desde donde se restableció anteriormente. Sin embargo, estoy tratando de entender si hay algún algoritmo disponible que considere este caso.
Soy nuevo en ciencia de datos, agradecería cualquier sugerencia para avanzar.
Editar: sugerencias de nfmcclure aplicadas
Antes de aplicar las sugerencias
A continuación se muestra la instantánea de lo que tengo después de dividir el conjunto de datos donde se produce el restablecimiento, y la pendiente de dos conjuntos.
encontrar la media de las dos pendientes y dibujar la línea desde la media.
¿Esta bien?
fuente
Respuestas:
Pensé que era un problema interesante, así que escribí un conjunto de datos de muestra y un estimador de pendiente lineal en R. Espero que te ayude con tu problema. Voy a hacer algunas suposiciones, la más importante es que desea estimar una pendiente constante, dada por algunos segmentos en sus datos. Otra suposición para separar los bloques de datos lineales es que el 'restablecimiento' natural se encontrará comparando las diferencias consecutivas y encontrando las que son desviaciones estándar X por debajo de la media. (Elegí 4 SD, pero esto se puede cambiar)
Aquí hay una gráfica de los datos, y el código para generarlos está en la parte inferior.
Para empezar, encontramos los descansos y ajustamos cada conjunto de valores de y registramos las pendientes.
Aquí están las pendientes: (3.309110, 4.419178, 3.292029, 4.531126, 3.675178, 4.294389)
Y podemos tomar la media para encontrar la pendiente esperada (3.920168).
Editar: predecir cuando la serie alcanza 120
Me di cuenta de que no terminé la predicción cuando la serie llega a 120. Si estimamos que la pendiente es m y vemos un restablecimiento en el tiempo t a un valor x (x <120), podemos predecir cuánto más tardaría en llegar 120 por un poco de álgebra simple.
Aquí, t es el tiempo que tomaría llegar a 120 después de un reinicio, x es a lo que se restablece ym es la pendiente estimada. Ni siquiera voy a tocar el tema de las unidades aquí, pero es una buena práctica resolverlas y asegurarme de que todo tenga sentido.
Editar: Crear los datos de muestra
Los datos de la muestra consistirán en 100 puntos, ruido aleatorio con una pendiente de 4 (con suerte lo calcularemos). Cuando los valores y alcanzan un límite, se restablecen a 50. El límite se elige aleatoriamente entre 115 y 120 para cada restablecimiento. Aquí está el código R para crear el conjunto de datos.
fuente
Su problema es que los reinicios no son parte de su modelo lineal. Debe cortar sus datos en diferentes fragmentos en los reinicios, para que no se produzca ningún reinicio dentro de cada fragmento y pueda ajustar un modelo lineal a cada fragmento. O puede crear un modelo más complicado que permita restablecimientos. En este caso, el tiempo de ocurrencia de los reinicios debe ingresarse manualmente en el modelo o el tiempo de reinicios debe ser un parámetro libre en el modelo que se determina ajustando el modelo a los datos.
fuente