Considérons un vecteur x à valeur réelle unidimensionnel qui représente les observations de certains processus mesurés à des intervalles également espacés dans le temps. Nous appelons x une série chronologique .
Soit n la longueur de x et x̄ la moyenne arithmétique de x . L' exemple de fonction d' autocovariance est défini comme
pour tous - n < h < n . Cela mesure la dépendance linéaire entre deux points sur la même série observée à des moments différents.
L' exemple de fonction d' autocorrélation , ou ACF, est défini comme
Cela mesure la prévisibilité linéaire de la série x au temps t , que nous désignons x t , en utilisant uniquement la valeur x t + h .
Notez que ces estimations d'échantillon ne correspondent pas aux calculs naïfs basés sur les propriétés théoriques. C'est-à-dire que la fonction d'autocorrélation de l'échantillon n'est pas égale au coefficient de corrélation de Pearson de x avec le décalage h- step de x .
Tâche
Étant donné un tableau x et un entier non négatif h , affichez ou renvoyez les premières autocorrélations de décalage h +1 de x , en commençant par le décalage 0. Les corrélations de décalage sont celles correspondant aux entrées négatives dans les formules ci-dessus.
Vous pouvez supposer que 0 < h < n , où n est la longueur de x , et que 2 < n <256.
La sortie doit être correcte à 1E-4 près. Il n'y a aucune restriction sur l'utilisation des fonctions intégrées ou le temps d'exécution.
Exemples
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]
la source
Python 3,
147130126120 120 octetsCette solution va probablement être étudiée plus loin, ce n'est qu'un début.
Vous pouvez l'appeler avec:
la source
MATL , 20 octets
EDIT (20 mai 2016): à partir de la version 18.0.0 de la langue, utilisez à la
Y+
place deX+
. Le lien inclut cette modification.Essayez-le en ligne!
La corrélation est étroitement liée à la convolution. Nous normalisons en soustrayant la moyenne, puis convolutons, normalisons à nouveau en divisant par la valeur maximale, puis choisissons les décalages souhaités.
la source
Mathematica, 27 octets
Merci à LegionMammal978 pour avoir économisé 1 octet.
Nous pourrions battre Jelly si les noms de fonction n'étaient pas si longs.
Cas de test
la source
#2~CorrelationFunction~{#}&
.Octave,
4737 octetsla source
disp
, car vous renvoyez une sortie de fonction)disp
.