Рассмотрим одномерный действительный вектор x, который представляет наблюдения некоторого процесса, измеренного через равные промежутки времени. Мы называем й в временных рядах .
Пусть n обозначает длину x, а x̄ обозначает среднее арифметическое x . Образец автоковариационная функция определяется как
для всех - n < h < n . Это измеряет линейную зависимость между двумя точками на одном и том же ряду, наблюдаемую в разное время.
Образец автокорреляционная функция , или АКФ, определяется как
Это измеряет линейную предсказуемость ряда x в момент времени t , который мы обозначим x t , используя только значение x t + h .
Обратите внимание, что эти выборочные оценки не соответствуют наивным расчетам, основанным на теоретических свойствах. То есть, функция автокорреляции образца не равняться коэффициенту корреляции Пирсона по й с ч -ступенен лагом х .
задача
Принимая во внимание массив х и неотрицательное целое число час , печать или возвращать первые ч +1 отставание автокорреляций х , начиная с запаздыванием 0. лаг автокорреляции являются те , которые соответствуют отрицательным входам в приведенных выше формулах.
Можно предположить, что 0 < h < n , где n - длина x , а 2 < n <256.
Вывод должен быть правильным с точностью до 1E-4. Нет никаких ограничений на использование встроенных функций или времени работы.
Примеры
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]
источник
Python 3,
147130126120 байтовЭто решение, вероятно, будет дальше в гольфе, это только начало.
Вы можете позвонить с помощью:
источник
MATL , 20 байтов
РЕДАКТИРОВАТЬ (20 мая 2016 г.): начиная с версии 18.0.0 языка используйте
Y+
вместоX+
. Ссылка включает это изменение.Попробуйте онлайн!
Корреляция тесно связана с сверткой. Мы нормализуем путем вычитания среднего значения, затем сворачиваем, снова нормализуем путем деления на максимальное значение, а затем выбираем желательные лаги.
источник
Mathematica, 27 байт
Спасибо LegionMammal978 за сохранение 1 байта.
Мы могли бы победить Jelly, если бы имена функций были не такими длинными.
Прецедент
источник
#2~CorrelationFunction~{#}&
.Октава,
4737 байтисточник
disp
, потому что вы возвращаете вывод функции)disp
.