TimeSeriesModelFit[data]
自動的に選択されたモデル族から data のための時系列モデルを構築する.
TimeSeriesModelFit[data,mspec]
mspec で指定されたモデル族から data のための時系列モデルを構築する.
TimeSeriesModelFit
TimeSeriesModelFit[data]
自動的に選択されたモデル族から data のための時系列モデルを構築する.
TimeSeriesModelFit[data,mspec]
mspec で指定されたモデル族から data のための時系列モデルを構築する.
詳細とオプション
- 時系列の解析にはTimeSeriesModelFitが使われる.これは,可能なモデルの大規模なクラスから時系列モデルを自動的に選択する.
- TimeSeriesModelFitは,構築する時系列モデルを表す記号的TimeSeriesModelオブジェクトを返す.モデルの特性と診断は model[property]から得ることができる.
- model["Properties"]を使って使用可能なモデル特性のリストを得ることができる.
- data は,数値のリスト{x1,x2,…},時間と値のペアのリスト{{t1,x1},{t2,x2},…},TimeSeries,あるいはTemporalDataである.
- 時間 t におけるモデルの値は model[t]で得ることができる.t が入力データの範囲にある場合は,時間 t におけるデータが返される.その他の場合は予測値が与えられる.
- 時間 t における予測限界は,model["PredictionLimits"][t]で得ることができる.
- モデル指定 mspec は次の形を取ることができる.
-
Automatic 使用するモデルを自動的に選択する "family" 指定された族からモデルを選択する {"family",params} 指定された族の部分集合からモデルを選択する - 次の族とパラメータ化を使うことができる.
-
"AR" {p} 自己回帰モデル族 "MA" {q} 移動平均モデル族 "ARMA" {p,q} 自己回帰移動平均モデル族 "ARIMA" {p,d,q} 和分ARMAモデル族 "SARMA" {{p,q},{sp,sq},s} 季節ARMAモデル族 "SARIMA" {{p,d,q},{sp,sd,sq},s} 季節ARIMAモデル族 "ARCH" {q} ARCHモデル族 "GARCH" {q,p} GARCHモデル族 - 自己回帰次数および移動平均次数の p および q,またそれらに季節性を与えた sp および sq は,Automatic,非負の整数,非負の整数のリスト,そのようなリストを示すSpanのいずれかで与えることができる.
- 非季節型の和分次数および季節型の和分次数の d および sd は,Automatic,非負の整数,非負の整数のリスト,そのようなリストを示すSpanのいずれかで与えることができる.
- 季節モデルについては,季節母数 s はAutomaticあるいは正の整数でよい.
- 追加的なモデル族のパラメータ化は,例題で示してある.
- model["property"]を使って次のモデル特性を得ることができる.
-
"BestFit" フィットされたモデル "BestFitParameters" 係数推定 "ErrorVariance" モデルの誤差分散 "FitResiduals" フィットされたモデルの残差 "StandardizedResiduals" 標準化されたモデル残差 "TemporalData" データをTemporalDataとして入力する - モデル選択に関連する特性
-
"CandidateModels" 選択基準で分類された候補モデルの集合 "CandidateModelSelectionValues" 各候補モデルのための選択基準の値 "CandidateSelectionTable" モデルと選択基準の値を含む表 "CandidateSelectionTableEntries" 候補選択表からの項目 "ModelFamily" 選択されたモデル族 "SelectionCriterion" 最適なモデルの選択に使用された基準 - 適合度を測る特性
-
"AIC" 赤池情報量基準 "AICc" 有限サンプル修正AIC "BIC" ベイズ(Bayes)情報量基準 "SBC" シュワルツ(Schwartz)–ベイズ情報量基準 - 次の特性を使ってモデル残差の白色性を査定することができる.
-
"ACFPlot" 残差の自己相関のプロット "ACFValues" "ACFPlot"からの値 "PACFPlot" 残差の偏自己相関のプロット "PACFValues" "PACFPlot"からの値 "LjungBoxPlot" Ljung–Box残差自己相関検定の
値のプロット"LjungBoxValues" "LjungBoxPlot"からの値 - 残差の白色特性"wprop"のために含める遅れの最大数は,model["wprop","LagMax"->max]を与えることで制御することができる.ただし,max は正の整数である.
- 係数推定のための特性と診断
-
"CovarianceMatrix" モデル係数のための共分散推定 "InformationMatrix" モデル係数のための情報行列 "ParameterConfidenceIntervals" 係数推定についての信頼区間 "ParameterStandardErrors" モデル係数の標準誤差 "ParameterTable" フィットされた係数情報の表 "ParameterTableEntries" 母数表の項目 - TimeSeriesModelFitは次のオプションを取る.
-
ConfidenceLevel 95/100 選択する信頼水準 » IncludeConstantBasis Automatic モデル中に定数を含めるかどうか » Method Automatic モデルの選択に使用するメソッド » WorkingPrecision Automatic 内部計算の精度 » - デフォルト設定のIncludeConstantBasis->Automaticは,非季節型の和分次数と季節型の和分次数の両方が0のときは,モデル中に定数を含む.その他の場合は定数は含まれない.
- Method->m 中のメソッド m は"Stepwise"または"GridSearch"である.段階的選択の場合,最適な選択基準のモデルが求まるまで,Automaticの母数次数は徐々に増大する.グリッド検索を使うと,指定されたグリッド上のすべてのモデルが余すことなく試される.
- 最高のモデルは,選択基準 crit に従って選ばれる.この基準はMethod->{m,"SelectionCriterion"->crit}で設定することができる.有効な選択基準には,"AIC"(デフォルト),"AICc","SBC","BIC"等がある.
例題
すべて開く すべて閉じる例 (1)
data = {5., 9., 8., 10., 6.1, 10.4, 9.1, 11.6, 7.5, 12.1, 10.4, 13.5, 9., 14.1, 11.9, 15.7, 10.8, 16.4, 13.7, 18.3, 12.9, 19., 15.8, 21.2,
15.3, 22.1, 18.3, 24.6};tsm = TimeSeriesModelFit[data]Normal[tsm]tsm[35]tsm["PredictionLimits"][35]ListLinePlot[{tsm["TemporalData"], TimeSeriesForecast[tsm, {10}]}]スコープ (22)
基本的な用法 (5)
ts = Accumulate[RandomVariate[NormalDistribution[], 10 ^ 4]];ListLinePlot[ts]tsm = TimeSeriesModelFit[ts]Normal[tsm]tsm = TimeSeriesModelFit[TemporalData[TimeSeries, {{{-1.16, -0.98, 2.7, 12.08, 16.83, 20.78, 24.32, 24.92, 19.28, 13.34,
11.19, 3.3, 1.91, 2.02, 2.36, 10.27, 13.16, 22.26, 26.67, 24.55, 22.07, 11.81, 5.49, 0.88,
-3.71, -2.51, 4.42, 9.55, 13.82, 19.35, 23.29, 24.0 ... ation[{2001, 1, 1, 0, 0, 0.}, {2012, 1, 1, 0, 0, 0.}, {1, "Month"}]},
1, {"Discrete", 1}, {"Discrete", 1}, 1,
{MetaInformation -> {"Caller" :> TemporalData[WeatherData["Chicago", "Temperature", dates][[All,
2]], dates]}}}, True, 10.]]DateListPlot[{tsm["TemporalData"], TimeSeriesForecast[tsm, {24}]}, Joined -> True]tsm["June 1, 2014"]tsm["PredictionLimits"]["June 1, 2014"]ts = TimeSeries[TimeEventSeries`TimestampData[Association["UniformlySpacedQ" -> True, "Count" -> 3362,
"Endpoints" -> TabularColumn[Association["Data" -> {{0, 3361}, {}, None},
"ElementType" -> "Integer64"]], "MinimumTimeIncrement" -> 1, "Cal ... 28697962798989,
0.014550264550264647, -0.009995654063450599, 0.005267778753292207, -0.0021834061135369565,
0.0070021881838073785, 0.009995654063450488, 0.001290877796902068}, {}, None},
"ElementType" -> "Real64"]], Association[]];ListLinePlot[ts, PlotRange -> All]tsm = TimeSeriesModelFit[ts, {"GARCH", {1, 2}}]tsm["ParameterTable"]data = TimeSeries[RandomFunction[ARIMAProcess[{.1}, 2, {.1, .2}, 2], {1, 10 ^ 2}]["Values"], {Automatic, Today, "BusinessDay"}]p1 = DateListPlot[data]tsm = TimeSeriesModelFit[data, {"ARIMA", {1, 2, 2}}]Show[p1, DateListPlot[RandomFunction[tsm, {1, 30}, 50], Joined -> True], PlotRange -> All]もとのデータを使って,TimeSeriesModelでの将来的な観測のシミュレーションを行う:
data = TemporalData[RandomFunction[ARProcess[{.8}, 1], {100}]["Values"], {"January 24 1982", Automatic, "Month"}]model = TimeSeriesModelFit[data]最もフィットする過程を使って,将来的な観測のシミュレーションを10回行う:
process = model["Process"]タイムスタンプあるいは初期値についての情報は,RandomFunctionには全く渡されていない:
SeedRandom["TSM"];BlockRandom[sim1 = RandomFunction[process, {10}, 4]]もとのデータによって与えられた情報を使うために,TimeSeriesModelを使ってシミュレーションを行う:
SeedRandom["TSM"];BlockRandom[sim2 = RandomFunction[model, {10}, 4]]{ListLinePlot[sim1], DateListPlot[sim2]}モデル指定 (6)
ts = RandomFunction[ARMAProcess[{.1, -.3}, {.1}, 1], {0, 10 ^ 4}];tsm = TimeSeriesModelFit[ts]同様に,Automaticを指定する:
TimeSeriesModelFit[ts, Automatic]SeedRandom[235];
ts = RandomFunction[ARProcess[{.1, .2}, 1], {0, 10 ^ 4}];tsm = TimeSeriesModelFit[ts, "AR"]SeedRandom[203371];
ts = RandomFunction[ARMAProcess[{.1}, {.2, -.3}, 1], {0, 10 ^ 4}];TimeSeriesModelFit[ts, {"ARMA", {0 ;; 2, 0 ;; 2}}]%["CandidateSelectionTable"]ts = RandomFunction[ARIMAProcess[{.2, -.1}, 1, {.5, -.3, .4}, 2], {0, 10 ^ 4}];ListLinePlot[ts]tsm1 = TimeSeriesModelFit[ts, {"ARIMA", {2, 1, 3}}]tsm2 = TimeSeriesModelFit[ts, {"ARIMA", {Automatic, 1, Automatic}}]ts = TemporalData[Automatic, {{{-0.6234770849029923, -0.43353873731436093, -1.4384562423305023,
-0.6121753077532655, -1.6377557914754912, -0.965769312027555, 0.11900665884869621,
1.7632213409033033, 2.595842448714646, 3.511220729322236, 3.4379 ... 13.320609605604798, -12.854481578284084, -10.497526742053997, -10.370034746782753,
-10.688808347192714, -9.898759741498635, -8.080916162954333, -7.919847928681525}},
{{0, 1000, 1}}, 1, {"Continuous", 1}, {"Discrete", 1}, 1, {}}, False, 9.];TimeSeriesModelFit[ts, "ARIMA"]あるいは,すべての母数次数にAutomaticを使う:
p = d = q = Automatic;TimeSeriesModelFit[ts, {"ARIMA", {p, d, q}}]
および
をAutomaticにしたままで和分次数
を固定するいくつかの等価な方法:
TimeSeriesModelFit[ts, {"ARIMA", {p, 1, q}}]TimeSeriesModelFit[ts, {"ARIMA", 1}]和分次数
をAutomaticにしたままで
および
を固定するいくつかの等価な方法:
TimeSeriesModelFit[ts, {"ARIMA", {1, d, 2}}]TimeSeriesModelFit[ts, {"ARIMA", {1, 2}}]ts = RandomFunction[SARIMAProcess[{.3}, 1, {.2}, {12, {.2}, 2, {}}, 1], {1, 10 ^ 4}];tsm = TimeSeriesModelFit[ts, "SARIMA"]あるいは,すべての母数次数にAutomatic を使う:
p = d = q = sp = sd = sq = s = Automatic;TimeSeriesModelFit[ts, {"SARIMA", {{p, d, q}, {sp, sd, sq}, s}}]他のすべてをAutomaticにしたままで,季節性の母数
を固定するいくつかの同等な方法:
TimeSeriesModelFit[ts, {"SARIMA", {{p, d, q}, {sp, sd, sq}, 12}}]TimeSeriesModelFit[ts, {"SARIMA", 12}]季節性
,和分次数
および
を固定するいくつかの等価な方法:
TimeSeriesModelFit[ts, {"SARIMA", {{p, 1, q}, {sp, 2, sq}, 12}}]TimeSeriesModelFit[ts, {"SARIMA", {1, 2, 12}}]モデル特性 (11)
tsm = TimeSeriesModelFit[TemporalData[TimeSeries, {{{-0.7935061667730144, 4.3778286773763035, 2.922958541001586,
1.9853580784609617, 1.147308854130249, 1.698080426822207, 0.008331318340714766,
0.10200160157297689, 2.2513707375476235, 0.8328655174414309, -2.378076 ... 761350230830915, 2.4578396008405163,
-0.9273117800247228, 0.3871528084319487, 1.0557919551990362, 1.8934299378382737,
3.913518335425615, 1.3010389634021429}}, {{1, 10000, 1}}, 1, {"Continuous", 1},
{"Discrete", 1}, 1, {}}, False, 10.]];tsm["Properties"]tsm = TimeSeriesModelFit[TemporalData[TimeSeries, {{{-0.7935061667730144, 4.3778286773763035, 2.922958541001586,
1.9853580784609617, 1.147308854130249, 1.698080426822207, 0.008331318340714766,
0.10200160157297689, 2.2513707375476235, 0.8328655174414309, -2.378076 ... 761350230830915, 2.4578396008405163,
-0.9273117800247228, 0.3871528084319487, 1.0557919551990362, 1.8934299378382737,
3.913518335425615, 1.3010389634021429}}, {{1, 10000, 1}}, 1, {"Continuous", 1},
{"Discrete", 1}, 1, {}}, False, 10.]];tsm["BestFit"]同等に,Normalを使う:
Normal[tsm]選ばれたモデルについて,いくつかのフィッティングの基準を示す:
tsm = TimeSeriesModelFit[TemporalData[TimeSeries, {{{-0.7935061667730144, 4.3778286773763035, 2.922958541001586,
1.9853580784609617, 1.147308854130249, 1.698080426822207, 0.008331318340714766,
0.10200160157297689, 2.2513707375476235, 0.8328655174414309, -2.378076 ... 761350230830915, 2.4578396008405163,
-0.9273117800247228, 0.3871528084319487, 1.0557919551990362, 1.8934299378382737,
3.913518335425615, 1.3010389634021429}}, {{1, 10000, 1}}, 1, {"Continuous", 1},
{"Discrete", 1}, 1, {}}, False, 10.]];sc = {"AIC", "AICc", "BIC", "SBC"};TableForm[{#, tsm[#]}& /@ sc]tsm["SelectionCriterion"]tsm = TimeSeriesModelFit[TemporalData[TimeSeries, {{{-0.7935061667730144, 4.3778286773763035, 2.922958541001586,
1.9853580784609617, 1.147308854130249, 1.698080426822207, 0.008331318340714766,
0.10200160157297689, 2.2513707375476235, 0.8328655174414309, -2.378076 ... 761350230830915, 2.4578396008405163,
-0.9273117800247228, 0.3871528084319487, 1.0557919551990362, 1.8934299378382737,
3.913518335425615, 1.3010389634021429}}, {{1, 10000, 1}}, 1, {"Continuous", 1},
{"Discrete", 1}, 1, {}}, False, 10.]];tsm["CandidateSelectionTable"]tsm["CandidateSelectionTableEntries"]//Shallowtsm = TimeSeriesModelFit[TemporalData[TimeSeries, {{{-0.7935061667730144, 4.3778286773763035, 2.922958541001586,
1.9853580784609617, 1.147308854130249, 1.698080426822207, 0.008331318340714766,
0.10200160157297689, 2.2513707375476235, 0.8328655174414309, -2.378076 ... 761350230830915, 2.4578396008405163,
-0.9273117800247228, 0.3871528084319487, 1.0557919551990362, 1.8934299378382737,
3.913518335425615, 1.3010389634021429}}, {{1, 10000, 1}}, 1, {"Continuous", 1},
{"Discrete", 1}, 1, {}}, False, 10.], Method -> {"GridSearch", "SelectionCriterion" -> "AICc"}];Shallow[mod = tsm["CandidateModels"]]ListPlot[MapThread[Tooltip, {tsm["CandidateModelSelectionValues"], mod}], PlotRange -> All, PlotStyle -> PointSize[Large], Filling -> Axis]ts = TemporalData[TimeSeries, {{{-0.7935061667730144, 4.3778286773763035, 2.922958541001586,
1.9853580784609617, 1.147308854130249, 1.698080426822207, 0.008331318340714766,
0.10200160157297689, 2.2513707375476235, 0.8328655174414309, -2.378076 ... 761350230830915, 2.4578396008405163,
-0.9273117800247228, 0.3871528084319487, 1.0557919551990362, 1.8934299378382737,
3.913518335425615, 1.3010389634021429}}, {{1, 10000, 1}}, 1, {"Continuous", 1},
{"Discrete", 1}, 1, {}}, False, 10.];tsm1 = TimeSeriesModelFit[ts, {"ARMA", {2, 0}}];tsm1["ACFPlot"]tsm2 = TimeSeriesModelFit[ts, {"ARMA", {2, 1}}];tsm2["ACFPlot"]ts = TemporalData[TimeSeries, {{{-0.7935061667730144, 4.3778286773763035, 2.922958541001586,
1.9853580784609617, 1.147308854130249, 1.698080426822207, 0.008331318340714766,
0.10200160157297689, 2.2513707375476235, 0.8328655174414309, -2.378076 ... 761350230830915, 2.4578396008405163,
-0.9273117800247228, 0.3871528084319487, 1.0557919551990362, 1.8934299378382737,
3.913518335425615, 1.3010389634021429}}, {{1, 10000, 1}}, 1, {"Continuous", 1},
{"Discrete", 1}, 1, {}}, False, 10.];tsm1 = TimeSeriesModelFit[ts, {"ARMA", {2, 0}}];tsm1["PACFPlot"]tsm2 = TimeSeriesModelFit[ts, {"ARMA", {2, 1}}];tsm2["PACFPlot"]ts = TemporalData[TimeSeries, {{{-0.7935061667730144, 4.3778286773763035, 2.922958541001586,
1.9853580784609617, 1.147308854130249, 1.698080426822207, 0.008331318340714766,
0.10200160157297689, 2.2513707375476235, 0.8328655174414309, -2.378076 ... 761350230830915, 2.4578396008405163,
-0.9273117800247228, 0.3871528084319487, 1.0557919551990362, 1.8934299378382737,
3.913518335425615, 1.3010389634021429}}, {{1, 10000, 1}}, 1, {"Continuous", 1},
{"Discrete", 1}, 1, {}}, False, 10.];tsm1 = TimeSeriesModelFit[ts, {"ARMA", {2, 0}}];tsm1["LjungBoxPlot"]tsm2 = TimeSeriesModelFit[ts, {"ARMA", {2, 1}}];tsm2["LjungBoxPlot"]mod = TimeSeriesModelFit[TemporalData[TimeSeries, {{{-0.7935061667730144, 4.3778286773763035, 2.922958541001586,
1.9853580784609617, 1.147308854130249, 1.698080426822207, 0.008331318340714766,
0.10200160157297689, 2.2513707375476235, 0.8328655174414309, -2.378076 ... 761350230830915, 2.4578396008405163,
-0.9273117800247228, 0.3871528084319487, 1.0557919551990362, 1.8934299378382737,
3.913518335425615, 1.3010389634021429}}, {{1, 10000, 1}}, 1, {"Continuous", 1},
{"Discrete", 1}, 1, {}}, False, 10.], {"ARMA", {2, 1}}];mod /@ {"ACFPlot", "PACFPlot", "LjungBoxPlot"}//GraphicsRow"ACFPlot"に使われた,最初の5個の自己相関値および95%信頼区間:
mod["ACFValues", "LagMax" -> 5]"PACFPlot"に使われた,最初の5個の偏自己相関値および95%信頼区間:
mod["PACFValues", "LagMax" -> 5]プロットに使われた,遅れ1から12までのLjung–Boxの
値および臨界値:
mod["LjungBoxValues", "LagMax" -> 12]tsm = TimeSeriesModelFit[TemporalData[TimeSeries, {{{-1.16, -0.98, 2.7, 12.08, 16.83, 20.78, 24.32, 24.92, 19.28, 13.34,
11.19, 3.3, 1.91, 2.02, 2.36, 10.27, 13.16, 22.26, 26.67, 24.55, 22.07, 11.81, 5.49, 0.88,
-3.71, -2.51, 4.42, 9.55, 13.82, 19.35, 23.29, 24.0 ... ation[{2001, 1, 1, 0, 0, 0.}, {2012, 1, 1, 0, 0, 0.}, {1, "Month"}]},
1, {"Discrete", 1}, {"Discrete", 1}, 1,
{MetaInformation -> {"Caller" :> TemporalData[WeatherData["Chicago", "Temperature", dates][[All,
2]], dates]}}}, True, 10.]]tsm["ParameterTable"]tsm["ParameterTableEntries"]tsm = TimeSeriesModelFit[d = TemporalData[TimeSeries, {{{-1.16, -0.98, 2.7, 12.08, 16.83, 20.78, 24.32, 24.92, 19.28, 13.34,
11.19, 3.3, 1.91, 2.02, 2.36, 10.27, 13.16, 22.26, 26.67, 24.55, 22.07, 11.81, 5.49, 0.88,
-3.71, -2.51, 4.42, 9.55, 13.82, 19.35, 23.29, 24.0 ... ation[{2001, 1, 1, 0, 0, 0.}, {2012, 1, 1, 0, 0, 0.}, {1, "Month"}]},
1, {"Discrete", 1}, {"Discrete", 1}, 1,
{MetaInformation -> {"Caller" :> TemporalData[WeatherData["Chicago", "Temperature", dates][[All,
2]], dates]}}}, True, 10.]]Sqrt[Diagonal[tsm["CovarianceMatrix"]] / d["PathLength"]]tsm["ParameterStandardErrors"]オプション (9)
ConfidenceLevel (2)
ts = RandomFunction[ARIMAProcess[{.1}, 2, {.2}, 1], {1, 150}];ListLinePlot[ts]tsm = TimeSeriesModelFit[ts, ConfidenceLevel -> .9]t = tsm["PredictionLimits"][155]tsm["PredictionLimits", ConfidenceLevel -> .99][155]ConfidenceLevelの設定は特徴検出の閾値に影響する:
SeedRandom[11];
data = RandomFunction[GARCHProcess[2, {.5}, {.3}], {1, 10 ^ 4}];TimeSeriesModelFit[data, ConfidenceLevel -> .9]Normal[%]TimeSeriesModelFit[data, ConfidenceLevel -> .99]
Normal[%]IncludeConstantBasis (1)
data = TemporalData[Automatic, {{{-0.14119052344221666, -1.596907640266988, -2.2582073671446694,
-1.9319420528595548, -1.1478947661154448, -0.3674878918612522, 0.6590713786839412,
-1.102826183727665, -1.674076427012788, -3.9969894719586714, -6.1 ... -27.10459273737598, -28.088716540543274, -29.740726054951963, -29.922334674607573,
-30.038824585257633, -32.389230950434325, -32.06299441006345, -32.95643499312959}},
{{0, 999, 1}}, 1, {"Discrete", 1}, {"Discrete", 1}, 1, {}}, False, 9.];TimeSeriesModelFit[data, "ARMA", IncludeConstantBasis -> True]//NormalTimeSeriesModelFit[data, "ARMA", IncludeConstantBasis -> False]//NormalMethod (5)
data = RandomFunction[ARMAProcess[{.1}, {.2}, 1], {1, 10 ^ 4}];tsm1 = TimeSeriesModelFit[data, "ARMA", Method -> Automatic]//Normaltsm2 = TimeSeriesModelFit[data, "ARMA", Method -> "Stepwise"]//Normaltsm1 == tsm2TimeSeriesModelFit[data, "ARMA", Method -> "GridSearch"]//NormalTimeSeriesModelFit[data, {"ARMA", {Automatic, 0 ;; 10}}, Method -> "Stepwise"]//Normaldata = RandomFunction[ARMAProcess[{.1}, {.2}, 1], {1, 10 ^ 4}];TimeSeriesModelFit[data, "ARMA"]["CandidateSelectionTable"]TimeSeriesModelFit[data, "ARMA", Method -> {Automatic, "SelectionCriterion" -> "BIC"}]["CandidateSelectionTable"]temp = TemporalData[Automatic, {{{-1.16, -0.98, 2.7, 12.08, 16.83, 20.78, 24.32, 24.92, 19.28, 13.34,
11.19, 3.3, 1.91, 2.02, 2.36, 10.27, 13.16, 22.26, 26.67, 24.55, 22.07, 11.81, 5.49, 0.88,
-3.71, -2.51, 4.42, 9.55, 13.82, 19.35, 23.29, 24.09 ... cation[{2001, 1, 1, 0, 0, 0.}, {2012, 1, 1, 0, 0, 0.}, {1, "Month"}]},
1, {"Discrete", 1}, {"Discrete", 1}, 1,
{MetaInformation -> {"Caller" :> TemporalData[WeatherData["Chicago", "Temperature", dates][[All,
2]], dates]}}}, True, 9.];TimeSeriesModelFit[temp, Method -> {Automatic, "MaxCandidates" -> 15}]["CandidateModels"]//LengthTimeSeriesModelFit[temp, Method -> {Automatic, "MaxCandidates" -> Infinity}]["CandidateModels"]//LengthTimeSeriesModelFit[temp]["CandidateModels"]//Lengthtemp = TemporalData[Automatic, {{{-1.16, -0.98, 2.7, 12.08, 16.83, 20.78, 24.32, 24.92, 19.28, 13.34,
11.19, 3.3, 1.91, 2.02, 2.36, 10.27, 13.16, 22.26, 26.67, 24.55, 22.07, 11.81, 5.49, 0.88,
-3.71, -2.51, 4.42, 9.55, 13.82, 19.35, 23.29, 24.09 ... cation[{2001, 1, 1, 0, 0, 0.}, {2012, 1, 1, 0, 0, 0.}, {1, "Month"}]},
1, {"Discrete", 1}, {"Discrete", 1}, 1,
{MetaInformation -> {"Caller" :> TemporalData[WeatherData["Chicago", "Temperature", dates][[All,
2]], dates]}}}, True, 9.];TimeSeriesModelFit[temp, Method -> {Automatic, "MaxAROrder" -> 1, "MaxMAOrder" -> 1, "MaxSeasonalAROrder" -> 1, "MaxSeasonalMAOrder" -> 1}]TimeSeriesModelFit[temp, Method -> {"GridSearch", "MaxCandidates" -> Infinity, "MaxAROrder" -> 2, "MaxMAOrder" -> 2, "MaxSeasonalAROrder" -> 2, "MaxSeasonalMAOrder" -> 2}]["CandidateModels"]//LengthTimeSeriesModelFit[temp, Method -> {"GridSearch", "MaxCandidates" -> Infinity, "MaxAROrder" -> 1, "MaxMAOrder" -> 1, "MaxSeasonalAROrder" -> 1, "MaxSeasonalMAOrder" -> 1}]["CandidateModels"]//Length階段的メソッドは現行の最適モデルの"MaxStepSize"次数内のモデルをフィットする:
data = TemporalData[Automatic, {{{0.48567872304876314, 0.554843335241101, 0.5934652242460972,
0.760477909565011, 1.7297685613735987, 1.212965224485393, 0.7565266649282496,
0.9400845884689406, -0.34817802196504266, -1.3246407289324051, -0.9286445 ... 646355753, 1.8935789572854922,
-0.002929238988200883, -0.771594065167061, -2.3867138941136625, -0.8945349352440608,
-2.3615995758210637, -0.5623814423867756}}, {{1, 10000, 1}}, 1, {"Continuous", 1},
{"Discrete", 1}, 1, {}}, False, 9.];AbsoluteTiming[tsmDefault = TimeSeriesModelFit[data, Method -> {Automatic, "MaxStepSize" -> 1}]]刻み幅を大きくすると質は高くなるが,検索時間が長くなることがある:
AbsoluteTiming[tsmBigStep = TimeSeriesModelFit[data, Method -> {"Stepwise", "MaxStepSize" -> 5}]]AbsoluteTiming[tsmGrid = TimeSeriesModelFit[data, "ARMA", Method -> "GridSearch"]]WorkingPrecision (1)
WorkingPrecisionを使ってより高精度の推定を得る:
ts = Accumulate[RandomChoice[{-1, 1}, 10 ^ 4]];TimeSeriesModelFit[ts, {"ARIMA", {1, 1, 1}}, WorkingPrecision -> 50]//Normalアプリケーション (8)
地域の気温 (1)
today = DateValue[Today, {"Year", "Month"}];
start = DateValue[DatePlus[Today, {-10, "Year"}], {"Year", "Month"}];
tspec = {start, today, "Month"};temp = TimeSeries[WeatherData[FindGeoLocation[], "Temperature", tspec, "NonMetricValue"], {start, Automatic, "Month"}]DateListPlot[temp, Joined -> True, FrameLabel -> Automatic]tsm = TimeSeriesModelFit[temp]tsm[DatePlus[today, {1, "Month"}]]fdates = DateRange[today, DatePlus[today, {1, "Year"}], "Month"];forecast = tsm /@ fdates;
bands = tsm["PredictionLimits"][#]& /@ fdates;DateListPlot[{bands[[All, 1]], forecast, bands[[All, 2]]}, {today, Automatic, "Month"}, Joined -> True, PlotStyle -> {Gray, Automatic}]航空機の乗客 (2)
次のデータは,1949年1月から1960年12月までの,アメリカ合衆国における月ごとの国際線航空機の乗客総数(単位:千)を含んでいる:
passengers = TemporalData[TimeSeries, {{{112, 118, 132, 129, 121, 135, 148, 148, 136, 119, 104, 118, 115, 126,
141, 135, 125, 149, 170, 170, 158, 133, 114, 140, 145, 150, 178, 163, 172, 178, 199, 199, 184,
162, 146, 166, 171, 180, 193, 181, 183, 218, ... . (1994) Time \
Series Analysis, Forecasting and\nControl. Second Edition. New York: Prentice-Hall.",
"Description" -> "International Airline Passengers: Monthly Totals (Thousands of Passengers) \
January 1949 - December 1960"}}}, True, 10.];before1958 = TimeSeriesWindow[passengers, {Automatic, "December 1957"}];
since1958 = TimeSeriesWindow[passengers, {"January 1958", Automatic}];p = DateListPlot[{before1958, since1958}, Joined -> True, PlotLegends -> {"Before 1958", "After 1958"}]時系列モデルを1958年より前の航空機の乗客データにフィットする:
tsm = TimeSeriesModelFit[before1958]1959年6月の航空機の予測乗客数と実際の乗客数を比較する:
tsm["June 1959"] * 1000//Round1000since1958["June 1959"]1958年から1961年までの予測を実際のデータと比較する:
DateListPlot[{before1958, since1958, Table[{t, tsm[t]}, {t, DateRange["January 1958", "December 1960", "Month"]}]}, Joined -> True, PlotLegends -> {"Before 1958", "After 1958", "Forecast"}]passengers = TemporalData[TimeSeries, {{{112, 118, 132, 129, 121, 135, 148, 148, 136, 119, 104, 118, 115, 126,
141, 135, 125, 149, 170, 170, 158, 133, 114, 140, 145, 150, 178, 163, 172, 178, 199, 199, 184,
162, 146, 166, 171, 180, 193, 181, 183, 218, ... . (1994) Time \
Series Analysis, Forecasting and\nControl. Second Edition. New York: Prentice-Hall.",
"Description" -> "International Airline Passengers: Monthly Totals (Thousands of Passengers) \
January 1949 - December 1960"}}}, True, 10.];tsm = TimeSeriesModelFit[passengers]k = 7;
start = "December 1st, 1960";tsm["TemporalData"]["DateFunction"] /@ tsm["TemporalData"]["FirstTimes"]forecastDates = DateRange[start, DatePlus[start, {k, "Year"}], "Month"];forecast = tsm /@ forecastDates;
bands = tsm["PredictionLimits"][#]& /@ forecastDates;pforecast = DateListPlot[{bands[[All, 1]], forecast, bands[[All, 2]]}, {start, Automatic, "Month"}, Joined -> True, Filling -> {1 -> {3}}, PlotStyle -> {Directive[Dashed, StandardGray], Directive[Thick, Green]}]sim = RandomFunction[tsm, {0, 12 * k}, 100];psim = DateListPlot[sim, PlotStyle -> Directive[Opacity[.25]], Joined -> True, PlotRange -> All]Show[psim, pforecast, PlotRange -> All]素数 (1)
実際の素数と推定された素数の差に時系列モデルをフィットする:
primeEstimator[n_] := n Log[n]primeDiff[n_] := Prime[n] - primeEstimator[n]diffs = Table[primeDiff[n], {n, 1, 250}];ListLinePlot[diffs, PlotRange -> All]tsm = TimeSeriesModelFit[diffs]Show[Plot[tsm["PredictionLimits"][t], {t, 251, 350}, PlotRange -> {100, 400}, AxesOrigin -> {251, 100}, PlotStyle -> {Gray, Dashed}], DiscretePlot[primeDiff[n], {n, 251, 350}, Filling -> None]]primeEstimator[300]//NprimeEstimator[300] + tsm[300]Prime[300]ListLinePlot[Transpose@Table[Join[{Prime[n], primeEstimator[n], primeEstimator[n] + tsm[n]}, primeEstimator[n] + tsm["PredictionLimits"][n]], {n, 251, 350}], PlotStyle -> {Automatic, Automatic, Automatic, Directive[Dashed, Gray], Directive[Dashed, Gray]}, PlotLegends -> {"primes", "original prime estimator", "improved prime estimator"}]事故死 (1)
アメリカ合衆国における月ごとの事故による死者数が6年間に渡って記録された:
deaths = ExampleData[{"Statistics", "USAccidentalDeaths"}, "EventSeries"]n = deaths["PathLength"]DateListPlot[deaths]ARProcessをデータにフィットする:
tsm1 = TimeSeriesModelFit[deaths, "AR"]Table[Pane[tsm1[plot], ImageSize -> Medium], {plot, {"ACFPlot", "PACFPlot"}}]診断プロットは12の季節性を持つモデルが必要であることを示唆している:
tsm12 = TimeSeriesModelFit[deaths, {"SARIMA", 12}](#[{"AIC", "AICc", "BIC", "SBC"}]& /@ {tsm1, tsm12})//GridTable[Pane[tsm12[plot], ImageSize -> Medium], {plot, {"ACFPlot", "PACFPlot"}}]sixM = RandomFunction[tsm12, {0, 1}, 10 ^ 4];α = 0.9;Quantile[sixM["28 Feb 1979"], {(1 - α/2), (1 + α/2)}]tsm12["PredictionLimits", ConfidenceLevel -> α]["28 Feb 1979"]オオヤマネコの皮 (1)
1850年から1911年までに,カナダのHudson Bay Companyが毎年販売したミンクの毛皮の枚数:
sales = TemporalData[TimeSeries, {{{29619, 21151, 24859, 25152, 42375, 50839, 61581, 61951, 76231, 63264,
44730, 31094, 49452, 43961, 61727, 60334, 51404, 58451, 73575, 74343, 27708, 31985, 39266,
44740, 60429, 72273, 79214, 79060, 84244, 62590, ... 7813, 57620, 66549, 54673, 55996, 60053, 39169, 21534, 17857, 21788, 33008}},
{{1850, 1911, 1}}, 1, {"Continuous", 1}, {"Discrete", 1}, 1,
{ValueDimensions -> 1, ResamplingMethod -> {"Interpolation", InterpolationOrder -> 1}}}, False,
10.];ListPlot[sales, Joined -> True, PlotRange -> All]saleModel = TimeSeriesModelFit[sales]sim = RandomFunction[saleModel, {0, 10}, 150]シミュレーションによる値は負になるかもしれないが,平均値関数は正の予測を与える:
forecast = TimeSeriesThread[Mean, sim];Min[forecast]Show[ListLinePlot[sales], ListLinePlot[sim, PlotStyle -> Directive[Opacity[.2]]],
ListLinePlot[forecast, PlotStyle -> Green], PlotRange -> All]小売り (1)
raw = WolframAlpha["usa retail sales", {{"History:RetailSales:EconomicData", 1}, "TimeSeriesData"}];raw[[1]]選択したものからTimeSeriesを作る:
data = TimeSeries[QuantityMagnitude[raw[[-12 * 15 ;; , 2]]], {Automatic, raw[[-1, 1]], "Month"}]grids = Table[{1992, 12 i}, {i, 1, data["PathLength"]}];
DateListPlot[data, GridLines -> {grids, None}, AspectRatio -> 1 / 3]model = TimeSeriesModelFit[data, {"SARIMA", 12}]proc = model["BestFit"]forecast = TimeSeriesForecast[model, {0, 7 * 12}]α = .95;
q = Quantile[NormalDistribution[], 1 - (1 - α) / 2];
err = forecast["MeanSquaredErrors"];
bands = TimeSeriesThread[{{1, -q}.#, {1, q}.#}&, {forecast, Sqrt[err]}]bands["ValueDimensions"]grids = Table[{1992, 12 i}, {i, data["PathLength"] + forecast["PathLength"]}];DateListPlot[{data, forecast, bands["PathComponent", 1], bands["PathComponent", 2]}, Filling -> {3 -> {4}}, AspectRatio -> 1 / 3, PlotStyle -> {Automatic, Automatic, Gray, Gray}, GridLines -> {grids, None}]医薬品販売と広告 (1)
次の時系列は,アメリカ合衆国の特許医薬品所有者であるLydia Pinkhamの,半年ごとの売上げと広告費である.Pinkham氏は家庭薬としてVegetable Compoundの製造を開始し,近所の人に配った.彼女の作った化合物は,薬草の粉末で,アルコールが18%含まれていた.Pinkham一族は1875年に,この,神経衰弱から子宮脱まであらゆる女性症状を治すという薬品を市場に売り出すことを決めた.この薬品は急速に支持を得,間もなく売上げが年間30万ドル近くにまでなった.薬品と公告に関する国の規制が厳しくなった1920年代になって,Lydia E. Pinkham Medicine Coは薬品のアルコール分を減らし,謳う効用も控えめにした:
sales = TemporalData[Automatic, {{{608, 451, 529, 543, 525, 549, 525, 578, 609, 504, 752, 613, 862, 866,
1016, 1360, 1482, 1608, 1800, 1941, 1229, 1373, 1611, 1568, 983, 1046, 1453, 1504, 807, 339,
562, 745, 749, 862, 1034, 1054, 1164, 1102, 1145 ... domestic sales and advertising of Lydia E,Pinkham Medicine,1907 to 1960",
"Source" -> "http://datamarket.com/data/set/22rf/annual-domestic-sales-and-advertising-of-lydi\
a-e-pinkham-medicine-1907-to-1960#!display=line&ds=22rf"}}}, True, 9.];sales["Source"]DateListPlot[sales, Filling -> Axis]salesModel = TimeSeriesModelFit[sales]Normal[salesModel]forecast = TimeSeriesForecast[salesModel, {2 * 5}]このモデルは,Pinkham家庭薬の有効性に対する顧客の信頼が急速に失われることを示している:
DateListPlot[{sales, forecast}, Filling -> Axis]考えられる問題 (2)
次のデータは,月ごとにサンプリングされ,季節性12を持つとことが分かっている:
data = TemporalData[TimeSeries, {{{Quantity[1.46376*^11, "USDollars"/"Months"],
Quantity[1.47079*^11, "USDollars"/"Months"], Quantity[1.59336*^11, "USDollars"/"Months"],
Quantity[1.63669*^11, "USDollars"/"Months"], Quantity[1.70068*^11, "USDolla ... 00, 3550089600, 3552768000, 3555446400, 3558038400, 3560716800, 3563308800,
3565987200, 3568665600, 3571084800, 3573763200, 3576355200, 3579033600, 3581625600}}}, 1,
{"Discrete", 1}, {"Discrete", 1}, 1, {ValueDimensions -> 1}}, True, 10.];data["Dates"] === TimeSeriesResample[data, "Month"]["Dates"]DateListPlot[data, Joined -> True]TemporalDataは,このデータが月ごとに等間隔で置かれていることは分かっていない:
RegularlySampledQ[data]28日という最小時間増分で自動リサンプリングを行うと,季節性が13になる:
MinimumTimeIncrement[data]TimeSeriesModelFit[data]TemporalDataがデータを規則性を持つものとして扱うようにする:
dataR = TimeSeries[data, TemporalRegularity -> True];RegularlySampledQ[dataR]TimeSeriesModelFit[dataR]TimeSeriesModelFitは,モーメント法を使って候補となる過程の母数を推定する.異なる推定器を用いると順位が変わることがある:
data = RandomFunction[MAProcess[{4 / 5, -4 / 5}, 1], {0, 1000}];tsm = TimeSeriesModelFit[data, {"MA", 2}, "IncludeConstantBasis" -> False]tsm["BestFit"]mle = EstimatedProcess[data, MAProcess[{b1, b2}, v], ProcessEstimator -> "MaximumLikelihood"]criteria = {"AIC", "BIC", "SBC", "AICc"};mleCrits = TimeSeriesModelFit[data, mle][criteria];
bestFitCrits = tsm[criteria];TableForm[{Style[#, Gray]& /@ bestFitCrits, Style[#, StandardGray]& /@ mleCrits}, TableHeadings -> {{"BestFit", "MLE"}, criteria}]関連するガイド
-
▪
- 時系列過程 ▪
- 時系列の処理 ▪
- 科学的データ解析 ▪
- 教師あり機械学習 ▪
- 科学的モデル ▪
- Wolfram Data Dropを使用する ▪
- 信号の可視化と解析 ▪
- 顕微鏡検査のための画像計算
テキスト
Wolfram Research (2014), TimeSeriesModelFit, Wolfram言語関数, https://reference.wolfram.com/language/ref/TimeSeriesModelFit.html.
CMS
Wolfram Language. 2014. "TimeSeriesModelFit." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/TimeSeriesModelFit.html.
APA
Wolfram Language. (2014). TimeSeriesModelFit. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/TimeSeriesModelFit.html
BibTeX
@misc{reference.wolfram_2026_timeseriesmodelfit, author="Wolfram Research", title="{TimeSeriesModelFit}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/TimeSeriesModelFit.html}", note=[Accessed: 02-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_timeseriesmodelfit, organization={Wolfram Research}, title={TimeSeriesModelFit}, year={2014}, url={https://reference.wolfram.com/language/ref/TimeSeriesModelFit.html}, note=[Accessed: 02-November-2026]}