www.gusucode.com > econ 案例源码程序 matlab代码 > econ/ChooseTheBestARModelSpecificationExample.m
%% Choose the Best AR Model Specification % Compare AR model specifications for a simulated response series using % |lmtest|. %% % Consider the AR(3) model: % % $$y_t = 1 + 0.9y_{t-1}-0.5y_{t-2}+0.4y_{t-3}+\varepsilon_t,$$ % % where $\varepsilon_t$ is Gaussian with mean 0 and variance 1. Specify % this model using |arima|. % Copyright 2015 The MathWorks, Inc. Mdl = arima('Constant',1,'Variance',1,'AR',{0.9,-0.5,0.4}); %% % |Mdl| is a fully specified, AR(3) model. %% % Simulate presample and effective sample responses from |Mdl|. T = 100; rng(1); % For reproducibility n = max(Mdl.P,Mdl.Q); % Number of presample observations y = simulate(Mdl,T + n); %% % |y| is a a random path from |Mdl| that includes presample observations. %% % Specify the restricted model: % % $$y_t = c + \phi_1y_{t-1}+\phi_2y_{t-2}+\varepsilon_t,$$ % % where $\varepsilon_t$ is Gaussian with mean 0 and variance $\sigma^2$. Mdl0 = arima(3,0,0); Mdl0.AR{3} = 0; %% % The structure of |Mdl0| is the same as |Mdl|. However, every parameter is unknown, except that $\phi_3 = 0$. % This is an equality constraint during estimation. %% % Estimate the restricted model using the simulated data (|y|). [EstMdl0,EstParamCov] = estimate(Mdl0,y((n+1):end),... 'Y0',y(1:n),'display','off'); phi10 = EstMdl0.AR{1}; phi20 = EstMdl0.AR{2}; phi30 = 0; c0 = EstMdl0.Constant; phi0 = [c0;phi10;phi20;phi30]; v0 = EstMdl0.Variance; %% % |EstMdl0| contains the parameter estimates of the restricted model. %% % |lmtest| requires the unrestricted model score evaluated at the % restricted model estimates. The unrestricted model gradient is % % $$\frac{\partial l (\phi_1,\phi_2,\phi_3,c,\sigma^2;y_t,...,y_{t-3})}{\partial c} = % \frac{1}{\sigma^2}(y_t - c - \phi_1y_{t-1}-\phi_2y_{t-2}-\phi_3y_{t-3})$$ % % $$\frac{\partial l (\phi_1,\phi_2,\phi_3,c,\sigma^2;y_t,...,y_{t-3})}{\partial \phi_j} = % \frac{1}{\sigma^2}(y_t - c - \phi_1y_{t-1}-\phi_2y_{t-2}-\phi_3y_{t-3})y_{t-j}$$ % % $$\frac{\partial l (\phi_1,\phi_2,\phi_3,c,\sigma^2;y_t,...,y_{t-3})}{\partial \sigma^2} = % -\frac{1}{2\sigma^2}+\frac{1}{2\sigma^4}(y_t - c - \phi_1y_{t-1}-\phi_2y_{t-2}-\phi_3y_{t-3})^2.$$ % MatY = lagmatrix(y,1:3); LagY = MatY(all(~isnan(MatY),2),:); cGrad = (y((n+1):end)-[ones(T,1),LagY]*phi0)/v0; phi1Grad = ((y((n+1):end)-[ones(T,1),LagY]*phi0).*LagY(:,1))/v0; phi2Grad = ((y((n+1):end)-[ones(T,1),LagY]*phi0).*LagY(:,2))/v0; phi3Grad = ((y((n+1):end)-[ones(T,1),LagY]*phi0).*LagY(:,3))/v0; vGrad = -1/(2*v0)+((y((n+1):end)-[ones(T,1),LagY]*phi0).^2)/(2*v0^2); Grad = [cGrad,phi1Grad,phi2Grad,phi3Grad,vGrad]; % Gradient matrix score = sum(Grad)'; % Score under the restricted model %% % Evaluate the unrestricted parameter covariance estimator using the % restricted MLEs and the outer product of gradients (OPG) method. EstParamCov0 = inv(Grad'*Grad); dof = 1; % Number of model restrictions %% % Test the null hypothesis that $\phi_3=0$ at a 1% significance level using |lmtest|. [h,pValue] = lmtest(score,EstParamCov0,dof,0.1) %% % |pValue| is close to 0, which suggests that there is strong evidence to % reject the restricted, AR(2) model in favor of the unrestriced, AR(3) % model.