www.gusucode.com > econ 案例源码程序 matlab代码 > econ/InspectConsumptionModelCoefficientsForStructuralChangeExample.m

    %% Inspect Consumption Model Coefficients for Structural Change
% Check coefficient estimates for instability in a model of food demand
% around World War II.  Implement forward and backward recursive
% regressions in a rolling window.
%%
% Load the U.S. food consumption data set, which contains annual
% measurements from 1927 through 1962 with missing data due to the war.
load Data_Consumption
%%
% For more details on the data, enter |Description| at the command prompt.
%%
% Plot the series.
P = Data(:,1); % Food price index
I = Data(:,2); % Disposable income index
Q = Data(:,3); % Food consumption index 

figure;
plot(dates,[P I Q],'o-')
axis tight
grid on
xlabel('Year')
ylabel('Index')
title('{\bf Time Series Plot of All Series}')
legend({'Price','Income','Consumption'},'Location','SE')
%%
% Measurements are missing from 1942 through 1947, which correspond to
% World War II.
%% 
% To examine elasticities, apply the log transformation to each series.
LP = log(P);
LI = log(I);
LQ = log(Q);
%%
% Consider a model in which log consumption is a linear function of the
% logs of food price and income. In other words,
%
% $$\texttt{LQ}_t=\beta_0+\beta_1\texttt{LI}_t+\beta_2\texttt{LP}+\varepsilon_t.$$
%
% $\varepsilon_t$ is a Gaussian random variable with mean 0 and standard
% deviation $\sigma^2$.  
%
%%
% Identify the breakpoint index at the end of the war, 1945.  Ignore
% missing years with missing data.
numCoeff = 4; % Three predictors and an intercept
T = numel(dates(~isnan(P))); % Sample size
bpIdx = find(dates(~isnan(P)) >= 1945,1) - numCoeff
%%
% The 12th iteration corresponds to the end of the war.
%%
% Plot forward recursive-regression coefficient estimates using a rolling
% window of size 1/4 the sample size. Indicate to plot the coefficients of
% |LP| and |LI| only in the same figure.
X = [LP LI];
y = LQ;
window = ceil(T*1/4);
recreg(X,y,'Window',window,'Plot','combined','PlotVars',[0 1 1],...
    'VarNames',{'Log-price' 'Log-income'});
%%
% Plot forward recursive-regression coefficient estimates using a rolling
% window of size 1/3 the sample size.
window = ceil(T*1/3);
recreg(X,y,'Window',window,'Plot','combined','PlotVars',[0 1 1],...
    'VarNames',{'Log-price' 'Log-income'});
%%
% Plot forward recursive-regression coefficient estimates using a rolling
% window of size 1/2 the sample size.
window = ceil(T*1/2);
recreg(X,y,'Window',window,'Plot','combined','PlotVars',[0 1 1],...
    'VarNames',{'Log-price' 'Log-income'});
%%
% As the window size increases, the lines show less volatility, but the
% coefficients do exhibit instability.