Введение во временные ряды
Математически стохастический процесс определяется как семейство временных случайных величин, а именно {x(t), t∈T}, где T представляет диапазон изменений в момент времени t. При T={0,±1,±2,…} такой случайный процесс x(t) является случайной функцией дискретного времени t, называемой временным рядом. Компонентами временного ряда являются: долгосрочные тренды, сезонные изменения, циклические изменения и нерегулярные изменения:
- Долгосрочный тренд (Т)Это общая тенденция изменения, сформированная некоторыми фундаментальными факторами в течение длительного периода времени.
- Сезонные изменения (S)Это регулярная циклическая смена, происходящая со сменой сезонов в течение года. Это результат различных факторов, таких как климатические условия, условия производства, праздники или обычаи людей.
- Циклическая вариация (С)Это временной ряд, который демонстрирует периодические изменения нефиксированной длины. Цикл циклических колебаний может длиться какое-то время, но в отличие от тренда это не непрерывное движение в одном направлении, а чередующаяся волна равных колебаний.
- Нерегулярное движение (I)Это случайное колебание во временном ряду после удаления тенденций, сезонных изменений и периодических колебаний. Нерегулярные колебания обычно смешиваются во временном ряду, вызывая волнообразные или колебательные изменения временного ряда. Ряд, содержащий только случайные колебания, также называется стационарным рядом.
Стационарность ряда
Вот примерно то, что написано в Baidu:Стационарный временной ряд Грубо говоря, временной ряд называется стационарным, если в нем нет систематического изменения среднего (нет тренда), нет систематического изменения дисперсии и строго исключены периодические изменения..
Стационарность временных рядов, как и других случайных процессов, делится на строгую стационарность и широкую стационарность.
- Ян Пинпинг: Если для всех моментов времени t любое натуральное число k и любое k положительных целых чисел, Совместное распространение иСовместное распределение такое же, мы называем временной рядОн строг и стабилен. Это,Сильным условием является то, что совместное распределение , остается неизменным при поступательном преобразовании времени.
- широкий и устойчивый: если временной рядВыполняются следующие два условия:,является константой,зависит только от l временного рядаслабо стационарен. среднее значение ряда,иКовариация не меняется со временем, а l — любое целое число.
Поскольку трудно добиться строгой стационарности, обычно стационарные временные ряды относятся к широким стационарным. Если это нестационарный временной ряд, его можно преобразовать в широкий стационарный ряд с помощью множественных разностей.
разница, это временной рядзначение в момент времени tсо значением в момент времени t−1разница, то получим новую последовательность, является разностью первого порядка для новой последовательностиПроделайте ту же операцию еще раз, это разница второго порядка. Обычно нестационарные временные ряды могут быть преобразованы в слабостационарные или приблизительно слабостационарные временные ряды после d разностей.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import tushare as ts
pro = ts.pro_api()
df = pro.daily(ts_code='600519.SH',start_date='20180101') #茅台股价
df = df[['trade_date','close']]
df['trade_date'] = pd.to_datetime(df['trade_date'])
data = df.set_index('trade_date')
data['change_pct'] =''
for i in range(0,len(data['close'])-1):
data.iloc[i, 1] = 100*(data['close'][i+1] - data['close'][i])/data['close'][i] # 计算每日收益率(涨跌幅)
data['change_pct'] = data['change_pct'][0:-1]
data['close_diff_1'] = data['close'].diff(1)
data = data[0:-1] # 由于changepct值最后一行缺失,因此去除最后一行
data['change_pct'] = data['change_pct'].astype('float64') #使changepct数据类型和其他三列保持一致
data.plot(subplots=True,figsize=(12,12))
Коэффициенты корреляции и автокорреляционные функции
Коэффициент корреляции
Для двух векторов мы хотим определить, связаны они или нет. Очень естественной идеей является использование угла между вектором и вектором в качестве определения расстояния.Чем меньше угол, тем меньше расстояние, и чем больше угол, тем больше расстояние. Мы часто используем формулу косинуса для вычисления углов:
заМы называем это внутренним продуктом, например:
Формула определения коэффициента корреляции, коэффициента корреляции между X и Y:
Формула расчета сметы по выборке:
Коэффициент корреляции на самом деле является вычислением угла между двумя векторами в векторном пространстве, а ковариация является внутренним произведением двух векторов после удаления среднего.
Если два вектора параллельны, коэффициент корреляции равен 1 или -1, 1, когда они направлены в одном направлении, и -1, когда они направлены в противоположные стороны. Если два вектора перпендикулярны, косинус прилежащего угла равен 0, что указывает на то, что они не связаны. Чем меньше угол между двумя векторами, тем ближе абсолютное значение коэффициента корреляции к 1 и тем выше корреляция. Просто здесь при расчете вектор деусредняется, то есть операция централизации. вместо прямого использования вектора, рассчитать.
Автокорреляционная функция (ACF)
Коэффициент корреляции измеряет линейную корреляцию двух векторов, в то время как в стационарных временных рядах, мы иногда задаемся вопросом,со своей прошлой стоимостьюлинейная корреляция. В настоящее время мы расширяем понятие коэффициента корреляции до коэффициента автокорреляции.
иКоэффициент корреляции называетсяИнтервалКоэффициент автокорреляции , обычно записывается как:
Здесь используются свойства слабостационарных рядов:
образец стационарного временного ряда,, то интервал равенОценка выборочного коэффициента автокорреляции для:
затем функцияназываетсяизПример функции автокорреляции (ACF)
Когда автокорреляционная функциявсе значенияКогда оба равны 0, мы считаем ряд полностью некоррелированным, поэтому нам часто нужно проверить, равны ли 0 множественные коэффициенты автокорреляции.
Гибридная инспекция
Нулевая гипотеза:
Альтернативная гипотеза:
Статистика смешанного теста:
Степени свободы прогрессивного послушанияизраспределенный
Правила принятия решения:
который,больше, чем степень свободыхи-квадрат распределенияквантили, мы отвергаем.
Большинство программ дастp-значение, тогда, когда p-значение меньше или равно уровню значимостиПри отклонении H0.
Пример:
import statsmodels.api as sm
close_data = data['close'] # 上证指数每日收盘价
m = 10 # 检验10个自相关系数
acf,q,p = sm.tsa.acf(close_data, nlags=m, qstat = True)
# np.r_是按列连接两个矩阵,就是把两矩阵上下相加,要求列数相等,类似于pandas中的concat()。
# np.c_是按行连接两个矩阵,就是把两矩阵左右相加,要求行数相等,类似于pandas中的merge()。
out = np.c_[range(1,11), acf[1:], q, p]
output = pd.DataFrame(out, columns=['lag', 'ACF', 'Q', 'P-value'])
output = output.set_index('lag')
print(output)
lag ACF Q P-value
1.0 0.963283 212.504727 3.903196e-48
2.0 0.928599 410.863584 6.054892e-90
3.0 0.893812 595.463129 9.703299e-129
4.0 0.858595 766.569712 1.337073e-164
5.0 0.820359 923.482644 2.201222e-197
6.0 0.778788 1065.538402 5.955998e-227
7.0 0.744518 1195.960070 5.278705e-254
8.0 0.712521 1315.960270 8.343090e-279
9.0 0.686764 1427.955165 7.044640e-302
10.0 0.658661 1531.448754 0.000000e+00
Примем уровень значимости за 0,05, видно, что все p-значения меньше 0,05, тогда отвергаем нулевую гипотезу. Поэтому мы считаем, что последовательность коррелирует с последовательностью. Давайте посмотрим на ряд дневной доходности за тот же период:
change_data = data['change_pct']
m = 10 # 检验10个自相关系数
acf,q,p = sm.tsa.acf(change_data,nlags=m,qstat=True) ## 计算自相关系数 及p-value
out = np.c_[range(1,11), acf[1:], q, p]
output=pd.DataFrame(out, columns=['lag', "AC", "Q", "P-value"])
output = output.set_index('lag')
print(output)
lag AC Q P-value
1.0 0.010467 0.025092 0.874137
2.0 -0.018733 0.105814 0.948468
3.0 -0.015576 0.161875 0.983496
4.0 -0.023547 0.290575 0.990414
5.0 0.034672 0.570871 0.989298
6.0 -0.133740 4.760213 0.574915
7.0 -0.047866 5.299284 0.623491
8.0 -0.085952 7.045520 0.531729
9.0 0.064843 8.043923 0.529726
10.0 -0.032424 8.294713 0.600074
Видно, что все значения p превышают уровень значимости 0,05. Мы выбираем предположить, то есть ряд возвратов не имеет значимой корреляции.
Ряды белого шума и линейные временные ряды
последовательность белого шума
Случайные переменные(t=1,2,3...), если он состоит из последовательности некоррелированных случайных величин, то есть для всех S, не равных T,Случайные переменныеиКовариация равна нулю, это называетсячисто случайный процесс.
Для чисто случайного процесса, если егоОжидание и дисперсия постоянны, это называется процессом белого шума. Образцы процесса белого шума на самом деле называются последовательностями белого шума или сокращенно белым шумом. Причина, по которой его называют белым шумом, заключается в том, что он имеет сходные характеристики с белым светом: спектр белого света имеет одинаковую интенсивность на каждой частоте, а спектральная плотность белого шума имеет одинаковое значение на каждой частоте.
Линейный временной ряд
последовательно{}, если это можно записать так:
засреднее значение ,представляет собой последовательность белого шума, то мы называем {} — линейная последовательность. впозвонил вмоментинновацииилиШок.
Многие временные ряды являются линейными, то есть линейными временными рядами, и, соответственно, существует много моделей линейных временных рядов, таких как те, которые будут представлены далее.АР, Массачусетс, АРМА, являются линейными моделями, но не все финансовые временные ряды являются линейными. Для слабостационарных последовательностей легко получитьСреднее значение и дисперсия:
заДисперсия. так какдолжно быть меньше положительной бесконечности, поэтомудолжно бытьсходящаяся последовательность, тем самым удовлетворяя час,. То есть сувеличение, возмущение на расстоянииправильноэффект постепенно исчезнет.
Авторегрессионные (AR) модели
В предыдущем разделе мы рассчитали АКФ некоторых концов данных, Глядя на таблицу, мы видим, что коэффициент автокорреляции значим, когда интервал равен 1. Это показывает, что вданные времени, в прогнозированиивремяможет быть полезно!
Исходя из этого, мы можем построить следующую модель:
в{}Дапоследовательность белого шума, эта модель имеет ту же форму, что и простая модель линейной регрессии, которую также называют моделью авторегрессии первого порядка (AR) или моделью AR(1) для краткости.
Модель AR(1) легко обобщить на модель AR(p):
Характеристический корень и тест на стационарность модели AR(p)
Сначала предположим, что последовательностьСлабо стабильный, Там есть;
в,является константой. так как{} — это последовательность белого шума, поэтому мы имеем:
Итак, есть:
По характеру стационарности имеем,тем самым:
Предполагая, что знаменатель в формуле не равен 0, назовем следующее уравнение характеристическим уравнением:
уравнениеОбратная величина всех решений называется собственным корнем модели., я упалМодуль собственных значений меньше 1, то последовательность AR(p) стационарна.
Затем мы используем этот метод для проверки стационарности ряда дневной доходности:
change_data = data['change_pct'] # 载入收益率序列
change_data = np.array(change_data, dtype=np.float)
model = sm.tsa.AR(change_data)
results_AR = model.fit()
plt.figure(figsize=(12,6))
plt.plot(change_data, 'b', label = 'changepct')
plt.plot(results_AR.fittedvalues, 'r', label = 'AR model')
plt.legend()
Мы можем видеть, сколько заказов у модели:
print(len(results_AR.roots)) # 模型阶数
Видно, что автоматически сгенерированная модель AR имеет порядок 15. В следующем разделе мы рисуем собственные значения модели для проверки на стационарность:
r1 = 1
theta = np.linspace(0, 2*np.pi, 360)
x1 = r1 * np.cos(theta)
y1 = r1 * np.sin(theta)
plt.figure(figsize=(6,6))
plt.plot(x1, y1, 'k') # 画单位圆
roots = 1 / results_AR.roots # 计算results_AR.roots后取倒数
for i in range(len(roots)):
plt.plot(roots[i].real, roots[i].imag, '.r', markersize=8) #画特征根
plt.show()
Видно, что все характеристические корни лежат в единичной окружности, тогда ряд стационарен.
Определить порядок модели AR
Для порядка модели линейной регрессии обычно считается, что по мере увеличения порядка точность модели будет улучшаться. Но слишком высокий порядок сделает модель слишком сложной. Ниже описаны два метода определения порядка модели AR: функция частичной корреляции (pACF) и функция информационного критерия (AIC, BIC, HQIC).
Частичная корреляционная функция (pACF)
Сначала вводится модель AR с возрастающим порядком:
Первый член в правой части уравнения является постоянным членом, а последний член является членом ошибки,является выборочной частичной автокорреляционной функцией с интервалом i из {rt}.представляет вклад в {rt} заказа, добавленного на основе строки i-1. Для модели AR, когда она превышает определенное значение p, частичная автокорреляционная функция должна постепенно приближаться к 0, что не только соответствует нашему интуитивному пониманию, но и имеет соответствующие теоретические доказательства, которые можно найти.
Для введения частичной корреляционной функции мы не будем здесь ее подробно раскрывать, а сосредоточимся на одном свойстве: выборочная частичная корреляционная функция последовательности AR(p) усечена на p-шаге. Так называемое усечение означает, что быстрая сходимость должна быть быстрой почти до нуля или в пределах доверительного интервала.
Ниже приведена диаграмма частичной автокорреляционной функции роста и падения цены акций Moutai в 2018 году. При значимом уровне 5% доверительный интервал принимается как
Посмотрите на диаграмму Pacf:
fig = plt.figure(figsize=(12,6))
ax1 = fig.add_subplot(111)
fig = sm.graphics.tsa.plot_pacf(change_data, lags=40, ax=ax1)
К сожалению, определить очевидный порядок p по приведенному выше рисунку непросто. Однако видно, что с увеличением времени функция частичной корреляции постепенно приближается к 0. Этот результат дает нам две идеи: во-первых, функция частичной корреляции приближается к 0, указывая на то, что модель AR используется для имитации последовательности до Разумно; Во-вторых, трудно определить порядок p или порядок p очень велик на приведенном выше рисунке, что указывает на то, что модель может иметь MA (скользящее среднее, которое будет введено позже). Это дает нам хотя бы некоторое представление о восприятии.
Информационный критерий Функция
В настоящее время обычно используемые функции информационных критериев включают информационное содержание Акаике (AIC), байесовское информационное содержание (BIC) и информационное содержание Ханнана-Куинна (HQIC). Все они основаны на функции правдоподобия L и количестве параметров k, где n представляет размер выборки. Так как в Python есть соответствующие функции, формула только для понимания:
Наша цель — выбрать такой порядок k, чтобы значение информативности было минимальным. Имея так много моделей на выбор, мы обычно используем правило AIC. Мы знаем, что увеличение количества свободных параметров улучшает качество подгонки, и AIC поощряет точность подгонки данных, но пытается избежать переобучения. Таким образом, предпочтительной должна быть модель с наименьшим значением AIC.
Давайте проверим p, определенное по трем критериям, и по-прежнему будем использовать дневную норму доходности. Чтобы уменьшить количество вычислений, мы вычисляем только первые 7 интервалов, чтобы увидеть эффект.
aicList = []
bicList = []
hqicList = []
for i in range(1,8): #从1阶开始算
order = (i,0) # 使用ARMA模型,其中MA阶数为0,只考虑了AR阶数。
chgdataModel = sm.tsa.ARMA(change_data,order).fit()
aicList.append(chgdataModel.aic)
bicList.append(chgdataModel.bic)
hqicList.append(chgdataModel.hqic)
plt.figure(figsize=(10,6))
plt.plot(aicList,'ro--',label='aic value')
plt.plot(bicList,'bo--',label='bic value')
plt.plot(hqicList,'ko--',label='hqic value')
plt.legend(loc=0)
При расчете информационной критериальной функции мы обнаружили, что с увеличением порядка скорость работы становилась все медленнее и медленнее, поэтому были взяты только первые 7 заказов.Видно, что порядок, заданный АИК, равен 0, а порядок дается BIC и HQIC. Число равно 0. Конечно, как упоминалось ранее, предсказывать последовательность только с помощью модели AR неточно, и только вычисления результатов первых 7 порядков недостаточно для определения оптимального порядка.
Конечно, использование вышеуказанного метода для расчета по одному очень трудоемко.На самом деле, есть функции, которые могут напрямую вычислить соответствующий порядок в соответствии с критериями.Это для модели ARMA, которую мы обсудим позже.
Тестирование AR-моделей
Если модель адекватна, ее остаточный ряд должен быть белым шумом, который можно использовать для проверки того, насколько близки остатки к белому шуму, в соответствии со смешанным тестом, который мы представили в главе 1. Сначала найдите остаточную последовательность:
delta = results_AR.fittedvalues - change_data[15:] # 取得误差项
plt.figure(figsize=(10,6))
# plt.plot(change_data[17:],label='original value')
# plt.plot(results_AR.fittedvalues,label='fitted value')
plt.plot(delta,'r',label=' residual error')
plt.legend(loc=0)
Затем мы проверяем, близка ли она к последовательности белого шума:
acf,q,p = sm.tsa.acf(delta,nlags=10,qstat=True) # 计算自相关系数 及p-value
out = np.c_[range(1,11), acf[1:], q, p]
output=pd.DataFrame(out, columns=['lag', "ACF", "Q", "P-value"])
output = output.set_index('lag')
print(output)
lag ACF Q P-value
1.0 0.001303 0.000363 0.984792
2.0 -0.003122 0.002459 0.998771
3.0 0.013582 0.042318 0.997714
4.0 -0.014884 0.090414 0.999008
5.0 0.014418 0.135770 0.999656
6.0 0.007551 0.148269 0.999936
7.0 -0.003774 0.151407 0.999990
8.0 -0.014438 0.197556 0.999996
9.0 0.022536 0.310547 0.999996
10.0 -0.014879 0.360051 0.999999
Наблюдая за p-значением, можно увидеть, что последовательность можно считать не имеющей корреляции, а аппроксимацию можно считать, что остаточная последовательность близка к белому шуму.
качество посадки
Скорректированный критерий согласия:
Числитель справа представляет дисперсию остатков, а знаменатель представляетДисперсия. Значение adjR² находится в диапазоне от 0 до 1, и чем больше значение, тем лучше эффект подгонки. Вычислив значение adjR² этой последовательности, мы обнаружили, что эффект не очень хороший, что также соответствует нашим ожиданиям.
Ниже мы рассчитываем качество соответствия предыдущей модели AR для дневной нормы прибыли:
adjR = 1 - delta.var()/change_data[15:].var()
print(adjR)
Выходное значение: 0.05178424488182409.Видно, что подгонка модели нехорошая.Конечно это не важно.Может эта последовательность не подходит для подгонки с моделью AR.
Прогнозирование моделей дополненной реальности
Мы сначала должны разделить исходную выборку на обучающую выборку и тестовую выборку, а затем посмотреть на эффект предсказания или взять в качестве примера предыдущие данные:
train = change_data[:-10]
test = change_data[-10:]
output = sm.tsa.AR(train).fit()
output.predict()
predicts = output.predict(216, 225, dynamic=True) #共226个数据
compare = pd.DataFrame()
compare['original'] = change_data[-10:]
compare['predict'] = predicts
print(compare)
original predict
0 1.608146 0.853237
1 0.388352 -0.585180
2 -1.726237 0.435650
3 1.406797 0.482424
4 -0.406002 0.967699
5 -3.883607 -0.727744
6 -1.830801 0.412699
7 -0.174712 -0.076781
8 -2.877610 0.223773
9 -1.677702 -0.055838
compare.plot()
Предсказания модели очень плохие. Можем ли мы добиться лучших результатов с другими моделями? Мы продолжим это в следующем разделе.
Модель скользящей средней (MA)
Здесь мы непосредственно приводим вид модели MA(q):
является постоянным термином. здесь, это модель дополненной реальностимоментвозмущениеИлиновый интерес, можно обнаружить, что модель используетСлучайные возмущения или ошибки прогноза за последние q периодов для линейного выражения текущего значения прогноза.
Свойства моделей MA
Стационарность
Модели МА всегда слабо стационарны, потому что они представляют собой конечные линейные комбинации последовательностей белого шума (остатков). Таким образом, по характеру слабой стационарности можно сделать два вывода:
автокорреляционная функция
Для модели MA q-порядкаАвтокорреляционная функция АКФвсегдаq-ступенчатое усечениеиз. Следовательно, последовательность MA (q) только линейно связана с ее первыми значениями задержки q, поэтому это модель с «ограниченной памятью». Это можно использовать для определения порядка модели, что будет описано позже.
обратимость
когда удовлетворенобратимое состояниеПри модель MA(q) можно переписать как модель AR(p). Вывод здесь не производится, а даются условия обратимости для МА 1-го и 2-го порядка.
1-го уровня:
Уровень 2:
Определение порядка МА
Мы уже знаем, что порядок модели AR можно приблизительно определить путем вычисления частичной автокорреляционной функции (pACF). Для модели MA автокорреляционная функция (ACF) должна использоваться для определения порядка.
fig2 = plt.figure(figsize=(12,6))
ax2 = fig2.add_subplot(111)
fig2 = sm.graphics.tsa.plot_acf(change_data,lags=40,ax=ax2)
Можно обнаружить, что это все еще не очевидно.Здесь 6-й порядок используется в качестве столбца для построения изображения модели MA и исходного дневного роста и падения:
results_MA = sm.tsa.ARMA(change_data, (0,6)).fit() # 取ARMA模型中AR的阶数为0,MA的阶数为6
plt.figure(figsize=(12,6))
plt.plot(change_data, 'b', label = 'changepct')
plt.plot(results_MA.fittedvalues, 'r', label = 'MA model')
plt.legend()
Прогноз модели MA
Поскольку отдельного модуля МА в см.цах нет, используем модуль АРМА, пока порядок р АР установлен равным 0. Порядок(p,q) во входных параметрах функции см.ца.АРМА представляет порядок АР и МА. По мере увеличения порядка модели объем вычислений резко возрастает, поэтому здесь в качестве примера установлена модель 6-го порядка. Мы используем последние 10 данных в качестве выборок для сравнения прогнозируемых значений.
train = change_data[:-10]
test = change_data[-10:]
chgdataModel_MA = sm.tsa.ARMA(train, (0,6)).fit() # 取ARMA模型中AR的阶数为0,MA的阶数为6
Давайте сначала посмотрим на эффект подгонки:
delta = chgdataModel_MA.fittedvalues - train
score = 1 - delta.var()/train.var()
print(score)
Можно видеть, что оценка 0,028525493755446107 намного меньше 1, и эффект подгонки не очень хороший. Затем мы используем установленную модель для прогнозирования последних 10 данных:
predicts_MA = chgdataModel_MA.predict(216, 225, dynamic=True)
compare_MA = pd.DataFrame()
compare_MA['original'] = test
compare_MA['predict_MA'] = predicts_MA
print(compare_MA)
Видно, что эффект от установленной модели очень плохой, и даже если она смотрит только на взлеты и падения, правильной скорости недостаточно. Модель не подходит для исходных данных. Это не имеет значения, было бы странно, если бы так просто предсказать ежедневный рост и падение цен на акции.Содержание MA представлено лишь кратко.Далее в основном представлена модель ARMA.
Модели авторегрессивной скользящей средней (ARMA)
В некоторых приложениях нам нужны модели AR или MA высокого порядка для адекватного описания динамической структуры данных, поэтому проблема становится громоздкой. Чтобы преодолеть эту трудность, предлагается модель авторегрессивной скользящей средней (ARMA). Основная идея состоит в том, чтобы объединить модели AR и MA, чтобы количество используемых параметров было небольшим. Модель имеет вид:
в,{} — последовательность белого шума,ивсе неотрицательные целые числа.Обе модели AR и MA являются особыми формами ARMA(p,q)..
использоватьОператор обратного сдвига(оператор обратного смещения,Сейчаспоследний момент), приведенная выше модель может быть записана как:
В это время мы просиможидания, получить:
То же, что и наша модель дополненной реальности в прошлом выпуске. Итак, имеем то же характеристическое уравнение:
уравнениеОбратная величина всех решений называется собственным корнем модели., я упалМодуль собственных значений меньше 1, то модель ARMA неподвижна. Один момент имеет решающее значение: прикладной объект модели ARMA должен быть стационарной последовательностью! Следующие шаги основаны на предположении, что исходная последовательность является стационарной.
Идентификация заказов модели ARMA
Порядок судей PACF, ACF
Мы оцениваем значения p и q, наблюдая усечение PACF и ACF соответственно. (Ограниченная задержка порядка 40)
fig = plt.figure(figsize=(12,12))
ax1=fig.add_subplot(211)
fig = sm.graphics.tsa.plot_acf(change_data,lags=30,ax=ax1)
ax2 = fig.add_subplot(212)
fig = sm.graphics.tsa.plot_pacf(change_data,lags=30,ax=ax2)
Видно, что порядок модели должен быть (6,24). Однако вычислительная сложность такого моделирования высокого порядка огромна. Почему бы не ограничить лаг-порядок меньшим? Если для лагов установлено значение 25, 20 или меньше, порядок будет (0,0), что, очевидно, не является тем результатом, который нам нужен.
Подводя итог, из-за большого объема вычислений моделирование (6,24) здесь не используется. Другой метод используется для определения порядка.
Порядок информационных критериев
Были некоторые введения в информационные руководящие принципы. Ниже мы применяем три вышеупомянутых правила соответственно, чтобы определить порядок нашей модели, и данные по-прежнему представляют собой последовательность ежедневных подъемов и падений. Чтобы контролировать объем вычислений, мы ограничиваем максимальный порядок AR не более чем 6, а максимальный порядок MA — не более 4. Но недостатком этого является то, что это может быть локальный оптимум.
import warnings
warnings.filterwarnings("ignore")
sm.tsa.arma_order_select_ic(change_data,max_ar=6,max_ma=4,ic='aic')['aic_min_order'] # AIC
#(5, 4)
sm.tsa.arma_order_select_ic(change_data,max_ar=6,max_ma=4,ic='bic')['bic_min_order'] # BIC
#(0, 0)
sm.tsa.arma_order_select_ic(change_data,max_ar=6,max_ma=4,ic='hqic')['hqic_min_order'] # HQIC
#(0, 0)
Можно видеть, что модельный порядок, решаемый AIC, равен (5,4). Мы возьмем критерий AIC в качестве критерия здесь ~ Что касается того, какой критерий лучше, вы можете смоделировать и сравнить отдельно ~
Прогнозирование и тестирование моделей ARMA
Процесс прогнозирования аналогичен процессу MA и здесь повторяться не будет. Оценка точности соответствия результатов прогнозирования по-прежнему очень низкая, но, судя по графику прогнозирования, она кажется немного сильнее, чем раньше, по крайней мере, в средней части эффект неплох.
Возможные причины:
- При определении порядка информационного критерия для уменьшения объема вычислений мы задаем максимальный порядок моделей AR и MA, а полученный таким образом порядок является лишь локальным оптимальным решением.
- Модели ARMA недостаточно, чтобы предсказать тренд цен на акции (это нормально, иначе каждый может заработать много денег)
Модель дифференциальной авторегрессионной скользящей средней (ARIMA)
Последовательности, которые мы изучали до сих пор, были сосредоточены на стационарных последовательностях. То есть объект, изучаемый моделью ARMA, представляет собой стационарную последовательность. Если ряд нестационарный, рассмотрите возможность использования модели ARIMA. АРИМА имеет только на одно «я» больше, чем АРМА, а это означает, что у него на одну коннотацию больше, чем у АРМА: то есть различие. Нестационарный временной ряд может быть преобразован в стационарный временной ряд после d разностей. Для конкретного значения d наша оценка проверяется на стационарность ряда после того, как разница составляет 1 раз, Если она нестационарна, разница продолжается. После d раз тест представляет собой стационарную последовательность.
Поскольку общий процесс аналогичен процессу ARMA, он не будет здесь подробно описываться.
Вознаграждение автора WeChat Payалипай