Considere un vector x unidimensional de valor real que representa observaciones de algún proceso medido a intervalos igualmente espaciados a lo largo del tiempo. Llamamos x una serie de tiempo .
Supongamos que n denota la longitud de x y x̄ denota la media aritmética de x . La función de autocovarianza de muestra se define como
para todos - n < h < n . Esto mide la dependencia lineal entre dos puntos en la misma serie observada en diferentes momentos.
La función de autocorrelación de muestra , o ACF, se define como
Esto mide la predictibilidad lineal de la serie x en el tiempo t , que denotamos x t , usando solo el valor x t + h .
Tenga en cuenta que estas estimaciones de muestra no coinciden con los cálculos ingenuos basados en las propiedades teóricas. Es decir, la función de autocorrelación de la muestra no es igual al coeficiente de correlación de Pearson de x con el h -step lag de x .
Tarea
Dada una matriz xy un número entero no negativo h , imprime o devuelve las primeras autocorrelaciones de retraso h +1 de x , comenzando con el retraso 0. Las autocorrelaciones de retraso son las correspondientes a entradas negativas en las fórmulas anteriores.
Puede suponer que 0 < h < n , donde n es la longitud de x , y que 2 < n <256.
La salida debe ser correcta dentro de 1E-4. No hay restricciones sobre el uso de funciones integradas o el tiempo de ejecución.
Ejemplos
h, x -> output
--------------
5, [2.4, 2.4, 2.4, 2.2, 2.1, 1.5, 2.3, 2.3, 2.5, 2] -> [1.00000000, 0.07659298, -0.06007802, -0.51144343, -0.02912874, -0.10468140]
1, [2134, 1863, 1877, 1877, 1492, 1249] -> [1.0000000, 0.3343041]
2, [13067.3, 13130.5, 13198.4] -> [1.0000000000, -0.0002854906, -0.4997145094]
fuente
Python 3,
147130126120 bytesEsta solución probablemente se vaya a jugar más, es solo un comienzo.
Puedes llamarlo con:
fuente
MATL , 20 bytes
EDITAR (20 de mayo de 2016): a partir de la versión 18.0.0 del lenguaje, use en
Y+
lugar deX+
. El enlace incluye este cambio.Pruébalo en línea!
La correlación está estrechamente relacionada con la convolución. Normalizamos restando la media, luego convolucionamos, normalizamos nuevamente dividiendo entre el valor máximo y luego seleccionamos los rezagos deseados.
fuente
Mathematica, 27 bytes
Gracias a LegionMammal978 por guardar 1 byte.
Podríamos vencer a Jelly si los nombres de las funciones no fueran tan largos.
Caso de prueba
fuente
#2~CorrelationFunction~{#}&
.Octava,
4737 bytesfuente
disp
, porque está devolviendo una salida de función)disp
.