Tengo una matriz de datos de series de tiempo para 8 variables con aproximadamente 2500 puntos (10 años de lunes a viernes) y me gustaría calcular la media, la varianza, la asimetría y la curtosis sobre una base de media móvil. Digamos cuadros 100 252 504 756 - Quisiera calcular las cuatro funciones arriba sobre sobre cada uno de los (tiempo-) cuadros, sobre una base diaria - así que la vuelta para el día 300 en el caso con el 100 marco del día, sería media Kurtosis de desviación de desviación del período day201-day300 (100 días en total). y así. Sé que esto significa que obtendría una salida de matriz, y el número de la primera trama de días sería NaNs, pero no puedo encontrar la indexación necesaria para hacer esto. Esta es una pregunta interesante porque creo que la solución óptima es diferente para la media que para las otras estadísticas de la muestra. He proporcionado un ejemplo de simulación a continuación que puede trabajar a través de. Primero, elija algunos parámetros arbitrarios y simule algunos datos: Para la media, use el filtro para obtener un promedio móvil: Originalmente pensé resolver este problema usando conv como sigue: Pero como PhilGoddard señaló en los comentarios, el enfoque de filtro evita la Necesidad del bucle. También tenga en cuenta que Ive elegido para hacer las fechas en la matriz de salida corresponden a las fechas en X para que en el trabajo posterior se puede utilizar los mismos subíndices para ambos. Así, las primeras observaciones de WindowLength-1 en MeanMA serán nan. Para la varianza, no puedo ver cómo utilizar filtro o conv o incluso una suma de ejecución para hacer las cosas más eficientes, por lo que en su lugar realizar el cálculo manualmente en cada iteración: Podemos acelerar ligeramente las cosas mediante la explotación del hecho de que ya hemos Calculó la media móvil media. Simplemente reemplace la línea de bucle dentro de lo anterior con: Sin embargo, dudo que esto haga mucha diferencia. Si alguien más puede ver una manera inteligente de usar filtro o conv para obtener la variación de la ventana móvil Id estar muy interesado en verlo. Dejo el caso de skewness y kurtosis al OP, ya que son esencialmente igual que el ejemplo de la varianza, pero con la función apropiada. Un último punto: si estuviera convirtiendo lo anterior en una función general, podría pasar una función anónima como uno de los argumentos, entonces tendría una rutina de promedio móvil que funciona para la elección arbitraria de las transformaciones. Final, punto final: Para una secuencia de longitudes de ventana, simplemente haga un bucle sobre el bloque de código completo para cada longitud de ventana. Sí, la función de filtro es realmente mejor para la media - pero yo quería hacer esto para varias funciones diferentes, no sólo la media. Acabo de publicar mi respuesta porque funcionó para mí y pensé que podría ayudar a alguien más. Ndash Dexter Morgan Apr 15 14 at 12: 40Frequency Response of the Running Average Filter La respuesta de frecuencia de un sistema LTI es el DTFT de la respuesta de impulso, La respuesta de frecuencia se reduce a la suma finita Podemos utilizar la identidad muy útil para escribir la respuesta de frecuencia como donde hemos dejado ae menos jomega. N 0 y M L menos 1. Podemos estar interesados en la magnitud de esta función para determinar qué frecuencias pasan a través del filtro sin atenuación y cuáles son atenuadas. A continuación se muestra un gráfico de la magnitud de esta función para L 4 (rojo), 8 (verde) y 16 (azul). El eje horizontal varía de cero a pi radianes por muestra. Observe que en los tres casos, la respuesta de frecuencia tiene una característica de paso bajo. Un componente constante (frecuencia cero) en la entrada pasa a través del filtro sin atenuación. Ciertas frecuencias más altas, como pi / 2, son completamente eliminadas por el filtro. Sin embargo, si la intención era diseñar un filtro de paso bajo, entonces no lo hemos hecho muy bien. Algunas de las frecuencias más altas se atenúan sólo por un factor de 1/10 (para la media móvil de 16 puntos) o 1/3 (para la media móvil de cuatro puntos). Podemos hacer mucho mejor que eso. La gráfica anterior se creó mediante el siguiente código Matlab: omega 0: pi / 400: pi H4 (1/4) (1-exp (-iomega4)) ./ (1-exp (-iomega)) H8 (1/8 (1-exp (-iomega8)) ./ (1-exp (-iomega)) trama (omega) (0, pi, 0, 1) Copia de copyright 2000- - Universidad de California, BerkeleyMoving-Filtro promedio de datos de tráfico Este ejemplo muestra cómo suavizar los datos de flujo de tráfico utilizando Un filtro de media móvil con una ventana deslizante de 4 horas. La siguiente ecuación de diferencias describe un filtro que promedia la hora actual y las tres horas anteriores de datos. Importe los datos de tráfico y asigne la primera columna de conteo de vehículos al vector x. Cree los vectores de coeficiente de filtro. Calcule el promedio móvil de 4 horas de los datos y trace los datos originales y los datos filtrados. MATLAB y Simulink son marcas comerciales registradas de The MathWorks, Inc. Consulte mathworks / marcas comerciales para obtener una lista de otras marcas comerciales propiedad de The MathWorks, Inc. Otros nombres de productos o marcas son marcas comerciales o marcas registradas de sus respectivos propietarios. Selecciona tu pais
No comments:
Post a Comment