量化投資_MATLAB在時間序列建模預測及程序代碼


 1  ARMA時間序列機器特性

  下面介紹一種重要的平穩時間序列——ARMA時間序列。

  ARMA時間序列分為三種:

  AR模型,auto regressiv model

  MA模型,moving average model

  ARMA模型,auto regressive moving average model

   可證ARMA時間序列具有遍歷性,因此可以通過它的一個樣本估計自協方差函數及自相關函數。

2  ARMA、AR、MA模型的基礎知識(略)

3  例:隨機模擬下列序列,樣本容量10000,其中樣本符合均值為零,方差為1的標准正太分布。計算自相關值

  MATLAB代碼如下:

%% DEMO1
% 利用模型數據研究隨機模擬下序列。計算自相關函數
clc;clear;
rng('default'); % 初始化隨機種子,保持隨機種子一致
elps = randn(1,10000);  % 產生10000個服從正態分布的隨機數
x(1) = 0;  % 賦初始值
for j = 2:10000
    x(j) = 0.8 * x(j-1) + elps(j) - 0.4 * elps(j-1);  % 產生樣本點
end
y = (x - mean(x));  % 把數據中心化處理
gama0 = var(x);  % 求樣本方差
for j = 1:10
    gama(j) = y(j+1:end)*y(1:end-j)'/10000;  %求自協方差函數
end
rho = gama/gama0;  %求自相關函數
rho2 = autocorr(x); % 直接利用MATLAB工具箱求自相關函數。
disp([rho(1),rho(2),rho(4),rho(4)]);
disp([rho2(2),rho2(3),rho2(4),rho2(5)])

% 其自相關函數的計算結果基本一致
%     0.5430    0.4296    0.2551    0.2551
%     0.5430    0.4297    0.3396    0.2552

 

4  例:利用MATLAB計算自相關值

%% DEMO2
% 利用模型數據研究隨機模擬下序列。計算偏自相關函數
clc;clear;
rng('default'); % 初始化隨機種子,保持隨機種子一致
elps = randn(1,10000);  % 產生10000個服從正態分布的隨機數
x(1) = 0;  % 賦初始值
for j = 2:10000
    x(j) = 0.8 * x(j-1) + elps(j) - 0.4 * elps(j-1);  % 產生樣本點
end
y = (x - mean(x));  % 把數據中心化處理
gama0 = var(x);  % 求樣本方差
L = 10;
for j = 1:L
    gama(j) = y(j+1:end)*y(1:end-j)'/10000;  %求自協方差
end
rho = gama/gama0;   % 求自相關系數
f(1,1)=rho(1);
for k = 2:L
    s1 = rho(k);s2=1;  % 計算初始值
    for j = 1:k-1
        s1 = s1-rho(k-j)*f(k-1,j);
        s2 = s2-rho(j)*f(k-1,j);
        f(k,k)=s1/s2;
     end
     for j = 1:k-1
         f(k,j) = f(k-1,j)-f(k,k)*f(k-1,k-j);
     end
end
pcorr=diag(f)';  %提取偏相關函數
pcorr2=parcorr(x); %直接利用MATLAB工具箱計算偏相關函數
disp([pcorr(1),pcorr(2),pcorr(4),pcorr(4)]);
disp([pcorr2(2),pcorr2(3),pcorr2(4),pcorr2(5)])

% 利用公式和利用MATLAB工具箱計算的偏相關值基本一致
%     0.5430    0.1911    0.0057    0.0057
%     0.5431    0.1913    0.0694    0.0056

 

5  ARMA模型時間序列的建模與預報

步驟:

  第一:首先進行模型的識別與定價,即要判斷是AR(p),MA(q),還是ARMA(p,q)模型的類別,並估計階數p和q。其實這都是歸結到模型的定階問題。

  第二:當定階后,就要對模型參數進行估計。

  第三:定階與參數估計完成后,還有對模型進行檢驗,即要檢驗殘差是否為平穩白噪聲。若檢驗獲得通過,則ARMA模型建模完成。

  第四:作為時間序列建模后的一個重要應用,還要討論ARMA模型的時間序列的預報。

 

6  MATLAB中的GARCH工具箱可以實現時間序列建模的功能。工具箱中的模型ARMAX(R,M,Nx)為ARMA模型函數。下面通過一些實例來進行建模的演示。

 

7  MATLAB中arima模型和arimax模型的區別

  一元時間序列模型:arma和arima,具有差分和不差分的區別

  多元時間序列模型:arimax,時間序列一維以上的不同時間序列,在先生生活中預測往往受很多因素的影響。

 

7.1  arima模型的參數說明:

  7.1.1  如果差分為0的話就是arma模型。

  7.1.2  創建

      模式1:Md1 = arima  % 創建一個0級別的ARIMA模型,也就是arima(0,0,0)

      模式2:Md1 = arima(p,D,q)  % 創建一個非季節性的線性時間序列模型,其中p為AR模型的階數,D為幾階差分,q為MA模型的階數

      模式3:Md1 = arima(Name,Value)  % 創建一個線性時間序列模型,采用增加額外選項、值的方式。Name是可選項,Value為選項的值。Name必須用(' ')這種內部引用方式。對應的格式可以是Name1,Value,Name2,Value2.....

  7.1.3  創建方法:

  方法一:如果直接輸入采用模式2的形式Md1 = arima(p,D,q)的方式;Md1 = arima(1,1,1) % 表示一階差分的AR1,MA1模型。但是這個模型沒有任何的參數。是屬於首先建立整個模型的結構框架的形式:

      因此:輸出的也是一個對象引用的內容:

Md1 =
ARIMA(1,1,1) Model:
--------------------
Distribution: Name = 'Gaussian'
P: 2
D: 1
Q: 1
Constant: NaN
AR: {NaN} at Lags [1]
SAR: {}
MA: {NaN} at Lags [1]
SMA: {}
Variance: NaN

    方法二:對應Name-Value的變量輸入方式。其實這些Name和Value的鍵和值也是這個對象里面的內容。因此這里把所有的鍵和值列出來。進行解釋一下。

鍵:'AR'

解釋:非季節自回歸的參數。默認為空NaNs

鍵:'ARLags'

解釋:與AR系數相關的正整數滯后向量。默認為1,2

鍵:'Beta'

解釋:與AR系數相關的正整數滯后向量。默認[ ];非回歸系數回歸內容

鍵:'Constant'

解釋:線性時間序列中的標量常數,也就是常數項。默認NaN;

鍵:'D'

解釋:非負整數表示的非季節性差分滯后算子多項式的次數(非季節性的一體化程度)在線性時間序列。默認0;

鍵:'Distribution'

解釋:創新過程的條件概率分布。分布是“高斯”或“T”。或者,將其指定為具有字段名稱的數據結構,以存儲分布“高斯”或“T”。如果分布是“t”,則結構也需要字段自由度來存儲自由度。默認高斯分布;

鍵:'MA'

解釋:非季節性移動平均系數對應於可逆多項式細胞載體。當未指定malags,馬是一種細胞載體的系數在滯后1,…對非季節性移動平均多項式的次數。當指定的MALags,馬是一個相當長的細胞載體與MALags的滯后相關系數。默認NaN;

鍵:'MALags'

解釋:與MA系數相關的正整數滯后向量。默認0;

鍵:'SAR'

解釋:季節AR模型。

鍵:'SARLags'

解釋:。

鍵:'SMA'

解釋:。

鍵:'SMALags'

解釋:。

鍵:'Seasonality'

解釋:

線性時間序列模型中季節性差分滯后算子多項式的非負整數。默認為0;

鍵:'Variance'

解釋:模型創新的正標量方差,或支持的條件方差模型對象(例如,GARCH模型對象)。

  7.1.4  建模舉例:

  比如有這么一個模型ARIMA(2,1,1)  

  表達式如下:

  

  對應的MATLAB建模公式如下:

  tdist = struct('Name','t','DoF',10);
  model = arima('Constant',0.4,'AR',{0.8,-0.3},'MA',0.5,'D',1,'Distribution',tdist,'Variance',0.15)

  對應對象里面的內容如下:

model = 

    ARIMA(2,1,1) Model:
    --------------------
    Distribution: Name = 't', DoF = 10
               P: 3
               D: 1
               Q: 1
        Constant: 0.4
              AR: {0.8 -0.3} at Lags [1 2]
             SAR: {}
              MA: {0.5} at Lags [1]
             SMA: {}
        Variance: 0.15

   解釋:Constant:對應的是常數項:0.4

      AR:對應的是AR模型的滯后項的參數:0.8 -0.3

      MA:對應的是MA模型的參數:0.5

      D:為一階差分形式

      Distribution:tdist,如果加上分布,這里用一個結構體來說明,這里指的是t分布,有10個自由度。也可以不加這個分布,默認為高斯分布。

      Variance:指的是常數項的方差是0.5,在有些教材中一般都是在公式下面打一個小括號,對應每一個參數的表示方差(0.5)

 

 

 

8  其他相關配套函數

estimate Estimate ARIMA or ARIMAX model parameters
filter Filter disturbances using ARIMA or ARIMAX model
forecast Forecast ARIMA or ARIMAX process
impulse Impulse response function
infer Infer ARIMA or ARIMAX model residuals or conditional variances
print Display parameter estimation results for ARIMA or ARIMAX models
simulate Monte Carlo simulation of ARIMA or ARIMAX models

 

.

.

..................................

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM