В этом примере показано, как использовать Байесов информационный критерий (BIC), чтобы выбрать степени p и q модели ARMA. Оцените несколько моделей с различным p и q значениями. Для каждой предполагаемой модели, выход значение целевой функции логарифмической правдоподобности. Введите значение логарифмической правдоподобности к aicbic
вычислить меру по BIC подгонки (который штрафует за сложность).
Симулируйте ARMA (2,1) временные ряды с 100 наблюдениями.
Mdl0 = arima('Constant',0.2,'AR',{0.75,-0.4},... 'MA',0.7,'Variance',0.1); rng(5) Y = simulate(Mdl0,100); figure plot(Y) xlim([0,100]) title('Simulated ARMA(2,1) Series')
Постройте демонстрационную автокорреляционную функцию (ACF) и частичная автокорреляционная функция (PACF) для симулированных данных.
figure subplot(2,1,1) autocorr(Y) subplot(2,1,2) parcorr(Y)
И демонстрационный ACF и PACF затухают относительно медленно. Это сопоставимо с моделью ARMA. Задержки ARMA не могут быть выбраны только путем рассмотрения ACF и PACF, но это кажется не больше, чем четырьмя AR, или термины MA необходимы.
Чтобы идентифицировать лучшие задержки, подбирайте несколько моделей с различным выбором задержки. Здесь, соответствуйте всем комбинациям p = 1..., 4 и q = 1..., 4 (в общей сложности 16 моделей). Сохраните целевую функцию логарифмической правдоподобности и количество коэффициентов для каждой подобранной модели.
LogL = zeros(4,4); % Initialize PQ = zeros(4,4); for p = 1:4 for q = 1:4 Mdl = arima(p,0,q); [EstMdl,~,LogL(p,q)] = estimate(Mdl,Y,'Display','off'); PQ(p,q) = p + q; end end
Вычислите BIC для каждой подобранной модели. Количество параметров в модели является p + q + 1 (для AR и коэффициентов MA и постоянного термина). Количество наблюдений в наборе данных равняется 100.
logL = LogL(:); pq = PQ(:); [~,bic] = aicbic(logL,pq+1,100); BIC = reshape(bic,4,4)
BIC = 4×4
102.4215 96.2339 100.8005 100.3440
89.1130 93.4895 97.1530 94.0615
93.6770 93.2838 100.2190 103.4779
98.2820 102.0442 100.3024 107.5245
В матрице выхода BIC строки соответствуют степени AR (p), и столбцы соответствуют степени магистра (q). Наименьшее значение является лучшим.
minBIC = min(BIC,[],'all')
minBIC = 89.1130
[minP,minQ] = find(minBIC == BIC)
minP = 2
minQ = 1
Наименьшим значением BIC является 89.1130
в (2,1) положение. Это соответствует модели ARMA(2,1), которая совпадает с моделью, которая сгенерировала данные.