33 lines
1.6 KiB
Python
33 lines
1.6 KiB
Python
import numpy as np
|
|
import matplotlib.pyplot as plt
|
|
|
|
|
|
def exponential_smoothing(series, alpha):
|
|
"""
|
|
Функция для экспоненциального сглаживания временного ряда.
|
|
|
|
:param series: Вектор временного ряда.
|
|
:param alpha: Коэффициент сглаживания (0 <= alpha <= 1).
|
|
:return: Сглаженный временной ряд.
|
|
"""
|
|
# Создаем вектор той же длины, что и исходный временной ряд, заполненный нулями
|
|
result = np.zeros_like(series)
|
|
# Первый элемент сглаженного ряда равен первому элементу исходного ряда
|
|
result[0] = series[0]
|
|
for t in range(1, len(series)):
|
|
# Каждый следующий элемент сглаженного ряда рассчитывается как взвешенная сумма текущего элемента исходного ряда
|
|
# и предыдущего элемента сглаженного ряда
|
|
result[t] = alpha * series[t] + (1 - alpha) * result[t - 1]
|
|
return result
|
|
|
|
if __name__ == "__main__":
|
|
# Пример использования функции
|
|
series = [10, 8, 6, 4, 5, 6, 8, 10] # Исходный временной ряд
|
|
alpha = 0.5 # Коэффициент сглаживания
|
|
smoothed_series = exponential_smoothing(series, alpha)
|
|
print(smoothed_series)
|
|
|
|
plt.plot(series)
|
|
plt.plot(smoothed_series)
|
|
plt.show()
|