Tengo muchos datos de series temporales: niveles y velocidades del agua frente al tiempo. Es la salida de una simulación de modelo hidráulico. Como parte del proceso de revisión para confirmar que el modelo está funcionando como se esperaba, tengo que trazar cada serie de tiempo para asegurarme de que no haya "bamboleo" en los datos (ver ejemplo de bamboleo menor a continuación). Usar la interfaz de usuario del software de modelado es una forma bastante lenta y laboriosa de verificar estos datos. Por lo tanto, escribí una macro VBA corta para importar varios bits de datos del modelo, incluidos los resultados en Excel y trazarlos todos a la vez. Espero escribir otra macro VBA corta para analizar los datos de series de tiempo y resaltar cualquier sección que sea sospechosa.
Mi único pensamiento hasta ahora es que podría hacer un análisis sobre la pendiente de los datos. Cualquier lugar donde la pendiente cambie rápidamente de positivo a negativo varias veces dentro de una ventana de búsqueda dada podría clasificarse como inestable. ¿Me estoy perdiendo algún truco más simple? Esencialmente, una simulación "estable" debería proporcionar una curva muy suave. Es probable que cualquier cambio repentino sea el resultado de una inestabilidad en los cálculos.
fuente
Respuestas:
Los detalles de la suavidad no importan mucho. En este ejemplo, un loess suavizar (implementado en
R
queloess
conspan=0.05
localizarla) fue utilizado, pero incluso una ventana media tendría bien hecho. Para suavizar los residuos absolutos ejecuté una media de ventana de ancho 17 (aproximadamente 24 minutos) seguida de una mediana de ventana. Estos suavizados en ventanas son relativamente fáciles de implementar en Excel. Una implementación eficiente de VBA (para versiones anteriores de Excel, pero el código fuente debería funcionar incluso en versiones nuevas) está disponible en http://www.quantdec.com/Excel/smoothing.htm .R
Códigofuente