主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

時系列データの解析

この例では,timeseriesオブジェクトと関数回归を使用して時系列データを可視化し解析する方法を示します。

航空機の乗客データ

まず,1949年1月~ 1960年12月の期間における航空機の月別乗客数(千単位)の配列を作成します。

% 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960Y = [112 115 145 171 196 204 242 284 315 340 360 417 .% 1月118 126 150 180 196 188 233 277 301 318 342 391% 2月132 141 178 193 236 235 267 317 356 362 406 419% 3月129 135 163 181 235 227 269 313 348 348 396 461% 4月121 125 172 183 229 234 270 318 355 363 420 472% 5135 149 178 218 243 264 315 374 422 435 472 535% 6月148 170 199 230 264 302 364 413 465 491 548 622% 7月148 170 199 242 272 293 347 405 467 505 559 606% 8月136 158 184 209 237 259 312 355 404 404 463 508% 9月119 133 162 191 211 229 274 306 347 359 407 461% 10月104 114 146 172 180 203 237 271 305 310 362 390% 11月118 140 166 194 201 229 278 306 336 337 405 432];% 12月%来源:% Hyndman, r.j.,时间序列数据库,% http://www-personal.buseco.monash.edu.au/ hyndman / TSDL /。% 2005年10月复制。

時系列オブジェクトの作成

時系列オブジェクトを作成するときは,データ値と共に時間情報を保持できます。月別データがあるので,日付の配列を作成し,それをYデータと共に使用して時系列オブジェクトを作成します。

年= repmat(1)(1949:1960), 12日;莫= repmat((1:12), 1、12);时间= datestr (datenum(年(:),莫(:),1));ts = timeseries (y (:),,“名字”“AirlinePassengers”);ts.TimeInfo.Format =“dd-mmm-yyyy”;tscol = tscollection (ts);情节(ts)

图中包含一个坐标轴。标题为Time Series Plot: airlinepasspassengers的坐标轴包含一个类型为line的对象。

傾向と季節性の調査

この系列は,線形または2次の傾向があり,季節性の高い要素を含んでいるようです。さらに,季節的な変動の大きさは,一般的なレベルの増加と共に増加します。季節的な変動は,対数変換によってさらに一定になる可能性があります。まず,軸のスケールを変更します。

甘氨胆酸h_gca =;h_gca。YScale =“日志”

图中包含一个坐标轴。标题为Time Series Plot: airlinepasspassengers的坐标轴包含一个类型为line的对象。

季節的な要素は対数スケールでモデル化した方が簡単のようです。対数変換を使用して新しい時系列を作成します。

tscol = addts (tscol、日志(ts.data),“logAirlinePassengers”);logts = tscol.logAirlinePassengers;

次に,月別偏差を重ね合わせて年間平均をプロットします。ここでは,数年の期間にわたる月ごとの変動が一定であるかどうかを判断する必要があります。月-年のフォーマットの行列としてデータを取り扱うこのような操作では,元のデータ行列に対して操作する方が便利です。

t =重塑(datenum(时间),12日12);呆呆的=日志(y);ymean = repmat(1)意味着(呆呆的),12日;Ydiff = logy - ymean;X = yr + (mo-1)/12;情节(x, ymean,“b -”, x, ymean + ydiff,的r -)标题(“年内每月变动幅度”)包含(“年”

图中包含一个坐标轴。以“年内月变化”为标题的轴包含24个线型对象。

次に,年と月を入れ替えて,年-年の傾向が各月において一定であるかどうかを判断しましょう。

甘氨胆酸h_gca =;h_gca。Position = [0.13 0.58 0.78 0.34];次要情节(2,1,2);t =重塑(datenum(时间),12日12);mmean = repmat(意思是(呆呆的,2),1、12);Mdiff = logic - mmean;X = mo + (yr-min(yr(:)))/12;情节(x, mmean“b -”, x”,(mmean + mdiff)”,的r -)标题(“年内每月趋势”)包含(“月”

图中包含2个轴。带有标题的轴1年月变幅包含24个线型对象。带有标题的轴2在一个月内的年度趋势包含24个类型线的对象。

傾向と季節性のモデル化

この系列を,季節的な要素を含む線形傾向としてモデル化してみましょう。

次要情节(1 1 1);X = [dummyvar(mo(:)) logs .time];[b,少女,渣油]=回归(logts.data X);tscol = addts (tscol X * b,“Fit1”
时间序列收集对象:未命名的时间向量特征开始日期01- 1- 1949结束日期01- 12 -1960成员时间序列对象:airlinepasspassengers logairlinepasspassengers Fit1
情节(logts)情节(tscol。Fit1,“颜色”“r”)举行传奇(“数据”“健康”“位置”“西北”

图中包含一个坐标轴。标题为Time Series Plot: logairlinepasspassengers的坐标轴包含2个line类型的对象。这些对象代表Data, Fit。

このグラフに基づくと,近似は良好のようです。実際のデータと近似値との差は,ここでの目的では問題になるほどの大きさではありません。

ですが,これについてさらに詳しく調べてみましょう。残差は独立しているように見えなければなりません。自己相関(隣接する残差間の相関)が存在する場合は,それをモデル化し,近似を改善する余地があることが考えられます。残差から時系列を作成し,プロットしてみましょう。

tscol = addts (tscol、渣油、“Resid1”);情节(tscol.Resid1)

图中包含一个坐标轴。标题为Time Series Plot:Resid1的坐标轴包含一个类型为line的对象。

残差は独立しているようには見えません。むしろ,隣接する残差間の相関は非常に強いように見えます。これは,ダービン——ワトソン検定を使用して正式に検定できます。

[p, dw] = dwt (tscol.Resid1.data X)
p = 7.7787 e-30
dw = 0.4256

ダービン——ワトソン統計量の低いp値は,時間と残差が相関していることを示しています。仮説検定の一般的なカットオフは,p < 0.05が有意であるかどうかを判断することです。ここでは非常に小さp値いが,残差が相関していることを示す強力な証拠となっています。

この自己相関を取り除くために,モデルを変更してみましょう。曲線の一般的な形状は,中央で高く,末端で低くなっています。これは2次の項を考慮する必要があることを示しています。ただし,この項を追加しても,自己相関は残るようにも思われます。実際に試してみましょう。

X = [dummyvar(mo(:))) logts. log . log . log . log . log . log . log . log . log . log . log。时间logts.time。^ 2);(b2,少女,resid2) =回归(logts.data X);tscol = addts (tscol resid2,“Resid2”);情节(tscol.Resid2)

图中包含一个坐标轴。标题为Time Series Plot:Resid2的坐标轴包含一个类型为line的对象。

[p, dw] = dwt (tscol.Resid2.data X)
p = 8.7866 e-20
dw = 0.6487

二乗項を追加すると,元の残差プロットで顕著に見られた曲線は取り除かれましたが,プロットと新しいダービン——ワトソン検定の両方において,残差にまだ大きな相関があることが示されています。

このような自己相関は,X変数ではキャプチャされなかった他の原因によってもたらされている可能性があります。モデルを改善し,相関を削減できる他のデータを収集する必要がありそうです。他のデータが存在しない場合は,単に別のパラメーターをモデルに追加して,自己相関を表すことができます。それを行ってみましょう。ここでは,二乗項を取り除き,誤差に対して自己回帰モデルを使用します。

自己回帰プロセスには次の2つの段階があります。

Y(t) = X(t,:)*b + r(t) %原始数据回归模型r(t) = rho * r(t-1) + u(t) %残差自回归模型

残差系列r (t)を一連の個別の値とする場合は,通常の回帰モデルとは異なり,残差は個別の値で構成される独自の誤差項u (t)をもつ自己回帰モデルに従うことができます。

このモデルを作成するために,無名関数fを作成して近似値Yfitを計算し,Y-Yfitがu値をもたらすようにします。

Y(t) = Y(t-1) + (X(t,:) - (X(t -1,:))

この無名関数では,[ρ;b]を単一のパラメーターベクトルcに組み合わせます。結果として得られる残差は,相関していない系列にかなり近いものになります。

(r = corr渣油(1:end-1),残油(2:结束);的初始猜想X = [dummyvar(mo(:)) logs .time];Y = logts.data;f = @(c,x) [Y(1);c (1) * Y (1: end-1) + (x (2:,:) - c (1) * x (1: end-1,:)) * c(2:结束)];c = nlinfit (X, Y, f, [r;b]);u = Y - f(c,X);tscol = addts (tscol u“本质”);情节(tscol.ResidU);

图中包含一个坐标轴。标题为Time Series Plot:ResidU的坐标轴包含一个类型为line的对象。

まとめ

この例では、统计和机器学习工具箱の機能を利用してMATLAB®の時系列オブジェクトを使用する方法を説明しています。ts.dataという表記を使用すると,データを抽出し入力として関数に与えることが簡単にできます。また,関数controlchartには時系列オブジェクトを直接渡すことができます。

计量经济学工具箱™や系统辨识工具箱™の機能など,時系列用に特別に設計された機能を使用すると,さらに詳細な解析を実行できます。