平均値が大きく変動する(トレンドを含む)非定常な時系列は,階差(差分)を取ることで定常とみなせる場合がある。階差を取ることはZ変換を使って,次のように表現できる。
また,元の時系列に明確な周期の変動(季節変動と呼ぶ)が含まれる場合,すなわち,たとえば月ごとに記録したデータのような場合には,1年ごとの周期(12の周期)が自ずと含まれるから,この周期の変動を予め除去しておくことも有効であろう。p 周期の変動が含まれるなら,
これらすべてを組み合わることによって,トレンドと季節変動を含む非定常時系列に対する一般的なモデルが構築できる。
次のプログラムでは,まず,適当に与えたARMA過程をもとに,1回の積分にあたるトレンドと,p=12の周期の季節変動を含むようなサンプル時系列を生成している。そして改めて,そのサンプル時系列について1回階差をとり,さらにp=12周期の差分をとって,ほぼ定常な時系列とし,ARMAモデルをあてはめて,内包されていたARMA過程が回復できているかどうか(スペクトルを比較して)チェックしている。
オリジナルのプログラムは, こちらから,ダウンロード
% ARIMA 過程の同定
% -------------------------------
%
N = 240; % ある ARIMA過程(ドリフトと年変動を含む) を想定
a = [1 -0.763 0.624]; % A(z)
az = [1 -1]*[a 0;0 a]; % (1-z^(-1)) A(z)
azz = [az zeros(1,12-length(az)) -1*az] % (1-z^(-12))(1-z^(-1)) A(z)
b = [1 0.13 0.02]; % B(z)
%
% % (1-z^(-12))(1-z^(-1)) A(z)*Xn = B(z)*En
%
x = filter(b,azz,5*randn(240,1)); % サンプル時系列生成
subplot(421);plot(x); axis([0 240 -1000 1000]);legend('sample Xn',3)
fy = freqz(b,a,N);
subplot(422);semilogy(abs(fy));axis([0 120 1 100]);legend('buried ARMA')
%
y=x(2:N)-x(1:N-1); % 階差時系列
subplot(412);plot(y); axis([0 240 -200 200]);legend('difference Yn= Xn+1-Xn',3)
%
z=y(13:N-1)-y(1:N-13); % 年変動除去
subplot(413);plot(z); axis([0 240 -100 100]);legend('difference Zn= Yn+12-Yn',3)
%
% 階差時系列を AR過程 で同定
%
ai = aryule(y,20); % Yule-Walker法 /次数(20)
fy = freqz(1,ai,N);
subplot(427);semilogy(abs(fy));axis([0 120 1 100]);legend('spectrum of Yn',2)
%
% 年変動除去後の時系列を ARMA過程 で同定
%
ai = aryule(z,30); % Yule-Walker法 /次数(30)
hai=impz(1,ai,N); % インパルス応答
[bs,as] = stmcb(hai,2,2,10) % 次数(4,4); 10 iterations (Steiglitz-McBride法)
fz = freqz(bs,as,N);
subplot(428);semilogy(abs(fz));axis([0 120 1 100]);legend('recovered ARMA')
まず実行してみて,このプログラムの内容をよく理解してください。
図は,1880年から2003年までの北半球の年平均気温の推移を示したものである。上昇のトレンドが認められ,明らかに地球温暖化が進んでいるように見受けられる。
さて,このデータを解析し,2050年ぐらいまでの気温変動を予想して下さい。なお, データはこちらから ダウンロードして下さい。
<指針>
作成したプログラムと結果の図を印刷して,次の授業時間までに提出してください。