¿Cómo lidiar con las lagunas / NaN en los datos de series de tiempo cuando se usa Matlab para autocorrelación y redes neuronales?

9

Tengo una serie temporal de medidas (alturas-series unidimensionales). En el período de observación, el proceso de medición se redujo durante algunos puntos de tiempo. Entonces, los datos resultantes son un vector con NaNs donde había lagunas en los datos. Usando MATLAB, esto me está causando un problema al calcular la autocorrelación ( autocorr) y aplicar redes neuronales ( nnstart).

¿Cómo deben tratarse estos vacíos / NaN? ¿Debo eliminarlos del vector? ¿O reemplazar su entrada con un valor interpolado? (si es así, cómo en MATLAB)

Vass
fuente

Respuestas:

4

No tocaría los datos en absoluto. Use esto para la autocorrelación con NaNs:

http://www.mathworks.com/matlabcentral/fileexchange/43840-autocorrelation-and-partial-autocorrelation-with-nans/content/nanautocorr.m

"no tocar los datos" significa no eliminar ningún dato o intervalo de tiempo o reemplazar con 0 o la media, pondría en peligro la información sobre la dependencia lineal de retraso de tiempo específico. También evitaría simular los valores en los huecos, si está interesado en la autocorrelación "SAMPLE", de todos modos, incluso la mejor técnica de simulación no agregará más información sobre la autocorrelación, basándose en los datos mismos. Recodifiqué parcialmente las funciones de autocorrelación y autocorrelación parcial de matlab (enlace anterior) para tratar con NaN: cualquier par de datos, incluido NaN, se excluye del cálculo. Esto se hace para cada retraso. Funcionó para mi. Cualquier sugerencia es bien aceptada.

Fabio
fuente
Bienvenido @Fabio: ¿Podría dar más explicaciones sobre lo que quiere decir con "no tocar los datos"? ¿Te refieres a no quitar nada? También sería útil presentar el contenido al que se vinculó y explicar por qué esto ayuda al OP.
Momo
Hola Momo, gracias por el comentario. "no tocar los datos" significa no eliminar ningún dato o intervalo de tiempo o reemplazar con 0 o la media, pondría en peligro la información sobre la dependencia lineal de retraso de tiempo específico. Recodifiqué parcialmente las funciones de autocorrelación y autocorrelación parcial de matlab (enlace anterior) para tratar con NaN: cualquier par de datos que incluya NaN está excluido del cálculo. Esto se hace para cada retraso. Funcionó para mi. Cualquier sugerencia es bien aceptada.
Fabio
3

Hay algunos algoritmos que son inmunes a los valores perdidos, por lo que la solución preferida es buscarlos (por ejemplo, R acfpara la autocorrelación).

En general, el camino a seguir es simplemente descartar datos con observaciones faltantes (puede ser muy doloroso) o simplemente imputar sus valores; la media de vecinos podría ser suficiente para series suaves y brechas pequeñas, pero por supuesto hay una gran cantidad de otros métodos más potentes, utilizando splines, valores aleatorios / más frecuentes, imputación de modelos, etc.


fuente
2
El acf con valor perdido se calcula de la manera normal, pero los valores faltantes se 'omiten' en las sumas (es decir, la fórmula acf para un retraso dado parece una suma dividida por una suma, en cada una de esas sumas los valores faltantes pueden ser omitido) Esto no es lo mismo que eliminar los valores faltantes de los datos originales. El problema con matlab es que no omite NaN, e incluir eso en el cálculo convierte todo en NaN.
Cero
1

Use la detección de intervención para imputar los valles faltantes que explotan la útil estructura de ARIMA y cualquier tendencia de tiempo local y / o cambios de nivel.

IrishStat
fuente
1

Hay 2 problemas aquí. el primero es proporcionar un marco numérico significativo para su respuesta de autocorrelación en matlab. Para que esto suceda, debe estirar y / o parchar la porción de serie temporal de sus vectores de datos ... este componente de 'integridad de datos' del problema es el más fundamental.

en segundo lugar, debe decidir cómo manejar el componente de 'valor' de su vector ... esto depende en gran medida de la aplicación particular en cuanto a lo que es mejor asumir (por ejemplo, pequeñas marcas de tiempo faltantes y los NaN correspondientes) o los nulos podrían interpolarse de forma segura desde sus vecinos ... en espacios más grandes, establecer el valor en cero es probablemente más seguro ... o imputarlo como se recomienda anteriormente, obviamente para que esto sea significativo, los espacios nuevamente deben ser comparativamente pequeños). .

Chris
fuente