ARProcess
詳細
- ARProcessはAR(自己回帰)あるいはVAR(ベクトル自己回帰)としても知られている.
- ARProcessは離散時間・連続状態のランダム過程である.
- AR過程は
の差分方程式で説明される.ただし,
は状態出力,
はホワイトノイズ入力,
はシフト演算子であり,定数 c は指定がなければ0であるとみなされる. - 初期データ init はリスト{…,y[-2],y[-1]}として,あるいは,タイムスタンプが{…,-2,-1}であると考えられる単一路TemporalDataオブジェクトとして与えることができる.
- スカラーAR過程は,実数係数 aiおよび c,正の分散 v,非負の整数次数 p を持つことができる.
次元ベクトルAR過程は,次元
×
の実数係数行列 aiと長さ
の実ベクトル c を持つことができ,共分散行列 Σ は次元が
×
の正定値対称行列でよい.- 零定数のAR過程は,以下の条件の伝達関数
を持つ. -

スカラー過程 
ベクトル過程.
は
×
恒等行列 - 時系列過程 tproc についてのARProcess[tproc,p]は,対応する伝達関数の零点についての級数展開が次数 p まで一致するような,次数 p のAR過程を与える.
- 使用可能な時系列過程 tproc には,ARProcess,ARMAProcess,SARIMAProcessがある.
- ARProcess[p]は,EstimatedProcessおよび関連関数で使われる,次数 p の自己回帰過程を表す.
- ARProcessはCovarianceFunction,RandomFunction,TimeSeriesForecast等の関数で使うことができる.
例題
すべて開く すべて閉じる例 (3)
data = RandomFunction[ARProcess[2, {.3, -.5}, .1], {1, 10 ^ 2}]ListPlot[data, Filling -> Axis]CovarianceFunction[ARProcess[{a}, σ^2], s, t]DiscretePlot3D[CovarianceFunction[ARProcess[{.7, -.4, .5}, 1.], s, t], {s, 0, 10}, {t, 0, 10}, ExtentSize -> 1 / 2, ColorFunction -> "Rainbow"]DiscretePlot[CorrelationFunction[ARProcess[{.5, .1, .3, -.2}, 1], h], {h, 0, 20}, ExtentSize -> 1 / 2]DiscretePlot[PartialCorrelationFunction[ARProcess[{.5, .1, .3, -.2}, 1], h], {h, 1, 9}, ExtentSize -> 1 / 2]スコープ (38)
基本的な用法 (11)
data = RandomFunction[ARProcess[1, {.5}, 1], {30}, 4]ListLinePlot[data, Filling -> Axis]RandomFunction[ARProcess[1, {2 / 10, 1 / 10}, 1 / 10], {1, 4}, WorkingPrecision -> 20]["Path"]sample[a_] := RandomFunction[ARProcess[{a}, .1], {1, 200}];ListPlot[sample[#], Filling -> Axis, PlotLabel -> ("a = " ~~ ToString[#])]& /@ {-0.9, 0.9}pairs[a_] := Transpose[{Most[#], Rest[#]}]&[sample[a]["Values"]];ListPlot[pairs[#], PlotLabel -> ("a = " ~~ ToString[#])]& /@ {-0.9, 0.9}与えられた初期値を使い,弱定常過程のシミュレーションを行う:
sproc[x_] := ARProcess[0, {.4, .3}, 1, {x}];pts = {-4, 0, 4, 8};samples = Table[SeedRandom[4];RandomFunction[sproc[x], {30}], {x, pts}];ListLinePlot[samples, DataRange -> {0, 12}, PlotLegends -> (StringJoin["x = ", ToString[#]]& /@ pts)]トレンドのある過程の場合,初期値は経路全体の動作に影響を与える:
tproc[x_] := ARProcess[0, {1.1, -0.04}, 1, {x}];tsamples = Table[SeedRandom[4];RandomFunction[tproc[x], {30}], {x, pts}];ListLinePlot[tsamples, DataRange -> {0, 12}, PlotLegends -> (StringJoin["x = ", ToString[#]]& /@ pts)]α = {{.2, .1}, {-.3, .2}};
Σ = {{1.0, 0}, {0, 0.3}};
sample = RandomFunction[ARProcess[{α}, Σ], {1, 100}];s = TimeSeries[sample, ResamplingMethod -> Automatic];
f = s["PathFunction"];
g[t_ ? NumericQ] := f[t]ParametricPlot[g[t], {t, 1, 100}, ColorFunction -> Function[{x, y, t}, (ColorData["BlueGreenYellow"][t])], PlotStyle -> Thick, AspectRatio -> 1, AxesLabel -> {x, y}]gg[t_ ? NumericQ] := Join[{t}, f[t]]ParametricPlot3D[gg[t], {t, 1, 100}, ColorFunction -> Function[{t, x, y}, (ColorData["BlueGreenYellow"][t])], PlotStyle -> Thick, BoxRatios -> 1, AxesLabel -> {t, x, y}]α = {{.2, .1, .1}, {-.3, .2, .1}, {-.3, .2, -.1}};
β = {{.2, .5, .1}, {-.2, .9, .5}, {.3, .1, -.4}};
Σ = {{1, 0, 0}, {0, .3, 0}, {0, 0, .1}};
SeedRandom[4];sample = RandomFunction[ARProcess[{α, β}, Σ], {1, 10 ^ 2}];s = TimeSeries[sample, ResamplingMethod -> Automatic];f = s["PathFunction"];
g[t_ ? NumericQ] := f[t]ParametricPlot3D[g[t], {t, 1, 100}, ColorFunction -> Function[{x, y, z, t}, (ColorData["BlueGreenYellow"][t])], PlotStyle -> Thick, BoxRatios -> 1, AxesLabel -> {x, y, z}]sample = RandomFunction[ARProcess[{.2, -.4}, .1], {1, 300}];
eproc = EstimatedProcess[sample, ARProcess[2]]Show[ListPlot[CovarianceFunction[sample, {8}], Filling -> 0, PlotStyle -> PointSize[Medium]], DiscretePlot[CovarianceFunction[eproc, h], {h, 0, 8}, ExtentSize -> 1 / 2]]TimeSeriesModelを使って自動的に次数を求める:
TimeSeriesModelFit[sample, "AR"]bestfit = %["BestFit"]Show[ListPlot[CovarianceFunction[sample, {8}], Filling -> 0, PlotStyle -> PointSize[Medium]], DiscretePlot[CovarianceFunction[bestfit, h], {h, 0, 8}, ExtentSize -> 1 / 2]]proc = ARProcess[1, {.3, .4}, 1];SeedRandom[23];data = RandomFunction[proc, {100}];res = FindProcessParameters[data, ARProcess[1, {a, b}, 1], ProcessEstimator -> "MaximumLikelihood"]logℒ[x_Real, y_Real] := LogLikelihood[ARProcess[1, {x, y}, 1], data]ContourPlot[logℒ[x, y], {x, 0.1, .49}, {y, 0.1, .49}, Epilog -> {Red, Point[{a, b} /. res]}]proc = ARProcess[{1, 2}, {{{.2, .1}, {.5, .3}}}, {{1, .3}, {.3, .5}}];
data = RandomFunction[proc, {10 ^ 3}];eproc = EstimatedProcess[data, ARProcess[1]]Table[Show[ListPlot[CovarianceFunction[data["PathComponent", i], {8}], Filling -> 0, PlotStyle -> PointSize[Medium], PlotRange -> All], DiscretePlot[CovarianceFunction[eproc, h][[i, i]], {h, 0, 8}, ExtentSize -> 1 / 2]], {i, 1, 2}]proc = ARProcess[2, {.1, .4}, .1];
sample = RandomFunction[proc, {1, 50}];forecast = TimeSeriesForecast[proc, sample, {10}]forecast["Path"]ListLinePlot[{sample, forecast}, InterpolationOrder -> 0, Filling -> Axis]proc = ARProcess[{{{.3, .1}, {.9, .1}}, {{.2, -.4}, {.5, -.3}}}, {{1, .2}, {.2, .6}}];
data = RandomFunction[proc, {0, 15}];forecast = TimeSeriesForecast[proc, data, {10}]Row@Table[ListLinePlot[#["PathComponent", j]& /@ {data, forecast}, PlotLabel -> Subscript[x, j], PlotLegends -> {"data", "forecast"}], {j, 1, 2}]共分散とスペクトル (6)
CorrelationFunction[ARProcess[{a}, σ^2], h]//PiecewiseExpandCorrelationFunction[ARProcess[{1 / 3, 1 / 2}, σ^2], h]//FunctionExpand//PiecewiseExpandPartialCorrelationFunction[ARProcess[{a, b}, σ^2], h]//Simplify[#, h ≠ 0 && Element[h, Integers]]&PartialCorrelationFunction[ARProcess[{a, b, c, d}, σ^2], 1]Correlation[ARProcess[{a, b}, σ^2][{1, 2, 3}]]//Simplify//MatrixFormCovariance[ARProcess[{a}, σ^2][{1, 2, 3}]]//Simplify//MatrixFormARProcessの共分散行列の逆行列は,対称多重対角行列である:
cov = Covariance[ARProcess[{1 / 7, 1 / 4, 1 / 5}, 1][Range[8]]];
Inverse[cov]//MatrixFormΣ = {{Subscript[σ, 1]^2, ρ Subscript[σ, 1]Subscript[σ, 2]}, {ρ Subscript[σ, 1]Subscript[σ, 2], Subscript[σ, 2]^2}};
α = {{a, 0}, {0, b}};CovarianceFunction[ARProcess[{α}, Σ], h]//TraditionalFormPlot[PowerSpectralDensity[ARProcess[{.4, -.4, .3}, 1], w], {w, -π, π}, Filling -> Axis]PowerSpectralDensity[ARProcess[{a}, σ^2], w]ベクトルARMAProcess:
a = {{1 / 9, 0}, {1 / 3, 1 / 2}};
b = {{1, 3 / 4}, {1 / 2, -1 / 4}};
Σ = {{1, 1 / 3}, {1 / 3, 1}};
proc = ARMAProcess[{a}, {b}, Σ];psd = PowerSpectralDensity[proc, ω];
psd//FullSimplify//MatrixForm定常性と可逆性 (4)
WeakStationarity[ARProcess[.3, {1, 2}, 1, {}]]WeakStationarity[ARProcess[{{{.3, .2}, {-.4, .1}}}, {{1, .3}, {.3, .6}}]]cond2D = WeakStationarity[ARProcess[{Subscript[a, 1], Subscript[a, 2]}, σ^2]]RegionPlot[cond2D, {Subscript[a, 1], -2, 2}, {Subscript[a, 2], -2, 2}, FrameLabel -> Automatic]cond3D = WeakStationarity[ARProcess[{Subscript[a, 1], Subscript[a, 2], Subscript[a, 3]}, σ^2]]RegionPlot3D[Simplify@cond3D, {Subscript[a, 1], -2, 2}, {Subscript[a, 2], -2, 2}, {Subscript[a, 3], -2, 2}, PlotPoints -> 40, AxesLabel -> Automatic]v = Variance[ARProcess[{Subscript[a, 1], Subscript[a, 2]}, 1][∞]]//FullSimplifycond = WeakStationarity[ARProcess[{Subscript[a, 1], Subscript[a, 2]}, 1]]FullSimplify[v > 0, cond]TimeSeriesInvertibility[ARProcess[const, {Subscript[a, 1], Subscript[a, 2]}, σ^2]]推定法 (6)
ARProcessの推定に使用可能なメソッド:
methods = {Automatic, "MethodOfMoments", "MaximumConditionalLikelihood", "MaximumLikelihood", "SpectralEstimator", "MaximumEntropy"};SeedRandom[14];
data = RandomFunction[ARProcess[2, {.4, .2, .3}, 1], {100}];Grid[res = Table[{m, EstimatedProcess[data, ARProcess[3], ProcessEstimator -> m]}, {m, methods}], Frame -> All, Spacings -> {1, 2}, Alignment -> {Left, Center}]LogLikelihood[#[[2]], data]& /@ ressolvers = {Automatic, "LevinsonDurbin", "LeastSquares", "FindRoot", "NSolve"};SeedRandom[4];
data = RandomFunction[ARProcess[2, {.4, .2}, 1], {100}];Grid[Table[{m, EstimatedProcess[data, ARProcess[3], ProcessEstimator -> {"MethodOfMoments", Method -> m}]}, {m, solvers}], Frame -> All, Spacings -> {1, 2}, Alignment -> {Left, Center}]パラメータを固定する,あるいは反復する際は,モーメントについての一般的なソルバを使う:
EstimatedProcess[data, ARProcess[c, {.4, b}, v], ProcessEstimator -> "MethodOfMoments"]solvers = {Automatic, "FindMaximum", "NMaximize"};SeedRandom[4];
data = RandomFunction[ARProcess[2, {.4, .2}, 1], {100}];Grid[Table[{m, EstimatedProcess[data, ARProcess[3], ProcessEstimator -> {"MaximumConditionalLikelihood", Method -> m}]}, {m, solvers}], Frame -> All, Spacings -> {1, 2}, Alignment -> {Left, Center}]EstimatedProcess[data, ARProcess[c, {.1, b}, v], ProcessEstimator -> "MaximumConditionalLikelihood"]EstimatedProcess[data, ARProcess[c, {b, b}, v], ProcessEstimator -> "MaximumConditionalLikelihood"]solvers = {Automatic, "FindMaximum", "NMaximize"};SeedRandom[4];
data = RandomFunction[ARProcess[2, {.4, .2}, 1], {100}];Grid[Table[{m, EstimatedProcess[data, ARProcess[2], ProcessEstimator -> {"MaximumLikelihood", Method -> m}]}, {m, solvers}], Frame -> All, Spacings -> {1, 2}, Alignment -> {Left, Center}]EstimatedProcess[data, ARProcess[c, {.1, b}, v], ProcessEstimator -> "MaximumLikelihood"]EstimatedProcess[data, ARProcess[c, {b, b}, v], ProcessEstimator -> "MaximumLikelihood"]スペクトル推定器では,PowerSpectralDensityの計算に使う窓を指定することができる:
SeedRandom[4];
data = RandomFunction[ARProcess[2, {.4, .2, .1}, 1], {100}];Grid[Table[{m, EstimatedProcess[data, ARProcess[3], ProcessEstimator -> {"SpectralEstimator", "Window" -> m}]}, {m, {10, BartlettWindow, {3, HannWindow}}}], Frame -> All, Spacings -> {1, 2}, Alignment -> {Left, Center}]solvers = {Automatic, "FindMinimum", "NMinimize"};Grid[Table[{m, EstimatedProcess[data, ARProcess[2], ProcessEstimator -> {"SpectralEstimator", Method -> m}]}, {m, solvers}], Frame -> All, Spacings -> {1, 2}, Alignment -> {Left, Center}]EstimatedProcess[data, ARProcess[c, {.1, b}, v], ProcessEstimator -> "SpectralEstimator"]EstimatedProcess[data, ARProcess[c, {b, b}, v], ProcessEstimator -> "SpectralEstimator"]SeedRandom[4];
data = RandomFunction[ARProcess[2, {.4, .2}, 1], {100}];EstimatedProcess[data, ARProcess[2], ProcessEstimator -> "MaximumEntropy"]EstimatedProcess[data, ARProcess[2], ProcessEstimator -> "Burg"]過程スライス特性 (5)
SliceDistribution[ARProcess[c, {a}, σ^2], t]//PDF[#, x]&SliceDistribution[ARProcess[{.2, .3}, 1], {s, s + 3}]//MeanSliceDistribution[ARProcess[{.2, .3}, 1], {1, 2, 3}]//Covarianceα = {{Subscript[a, 1], 0}, {0, Subscript[a, 2]}};
Σ = {{Subscript[σ, 1]^2, ρ Subscript[σ, 1]Subscript[σ, 2]}, {ρ Subscript[σ, 1]Subscript[σ, 2], Subscript[σ, 2]^2}};Mean[ARProcess[{c1, c2}, {α}, Σ][3]]Covariance[SliceDistribution[ARProcess[{c1, c2}, {α}, Σ], {1, 2, 3}]]//MatrixFormpdf = PDF[ARProcess[c, {a}, σ^2, {}][t], x]//PiecewiseExpand//SimplifyPlot[Evaluate@Table[pdf /. {c -> 1, a -> .7, σ -> 1}, {t, 1, 4}], {x, -3, 6}, Filling -> Axis, PlotLegends -> {"t = 1", "t = 2", "t = 3", "t = 4"}]μ = Mean[ARProcess[c, {Subscript[a, 1], Subscript[a, 2]}, σ^2][∞]]v = Variance[ARProcess[c, {Subscript[a, 1], Subscript[a, 2]}, σ^2][∞]]PDF[NormalDistribution[μ, Sqrt[v]], x]FullSimplify[% - PDF[ARProcess[c, {Subscript[a, 1], Subscript[a, 2]}, σ^2][∞], x]]Expectation[x[3] ^ 2, xARProcess[c, {Subscript[a, 1], Subscript[a, 2]}, σ^2]]Probability[x[7] < 6, xARProcess[{a}, σ^2]]Skewness[ARProcess[c, {a}, σ^2][t]]Kurtosis[ARProcess[c, {Subscript[a, 1], Subscript[a, 2]}, σ^2][t]]Table[Moment[ARProcess[{Subscript[a, 1], Subscript[a, 2]}, σ^2][t], r], {r, 0, 5}]CharacteristicFunction[ARProcess[{Subscript[a, 1], Subscript[a, 2]}, σ^2][t], w]MomentGeneratingFunction[ARProcess[{Subscript[a, 1], Subscript[a, 2]}, σ^2][t], w]CentralMomentおよびその母関数:
Table[CentralMoment[ARProcess[{Subscript[a, 1], Subscript[a, 2]}, σ^2][t], r], {r, 0, 5}]CentralMomentGeneratingFunction[ARProcess[{Subscript[a, 1], Subscript[a, 2]}, σ^2][t], w]FactorialMomentは,記号次数では閉形式を持たない:
Table[FactorialMoment[ARProcess[{Subscript[a, 1], Subscript[a, 2]}, σ^2][t], r], {r, 0, 5}]FactorialMomentGeneratingFunction[ARProcess[{Subscript[a, 1], Subscript[a, 2]}, σ^2][t], w]Cumulantおよびその母関数:
Table[Cumulant[ARProcess[{Subscript[a, 1], Subscript[a, 2]}, σ^2][t], r], {r, 0, 5}]CumulantGeneratingFunction[ARProcess[{Subscript[a, 1], Subscript[a, 2]}, σ^2][t], w]表現 (6)
proc = MAProcess[.4, {.2, .3, -.1}, 1];
aproc = ARProcess[proc, 3]DiscretePlot[CovarianceFunction[#, h], {h, 0, 10}, ExtentSize -> 1 / 2, PlotLabel -> Head[#]]& /@ {proc, aproc}proc = MAProcess[{.4, .2}, {{{.2, .5}, {-.3, .5}}}, {{.6, .2}, {.2, .4}}];
aproc = ARProcess[proc, 3]ARProcess[ARMAProcess[c, {Subscript[a, 1], Subscript[a, 2]}, {Subscript[b, 1], Subscript[b, 2], Subscript[b, 3]}, v], 2]proc = ARMAProcess[.4, {.2, -.3, -.2}, {.8, -.2, .7}, 1., {}];
aproc = ARProcess[proc, 3]SeedRandom[13];sample = RandomFunction[proc, {100}];
SeedRandom[13];asample = RandomFunction[aproc, {100}];
ListLinePlot[{sample, asample}, PlotLegends -> {"ARMA", "AR"}]AR過程でSARIMA(季節自己回帰和分移動平均)過程を近似する:
proc = SARIMAProcess[{.2, -.3, -.1}, 1, {.6, .2}, {4, {.3}, 1, {}}, 1];
aproc = ARProcess[proc, 15]SeedRandom[13];sample = RandomFunction[proc, {150}];
SeedRandom[13];asample = RandomFunction[aproc, {150}];
ListLinePlot[{sample, asample}, PlotLegends -> {"SARIMA", "AR"}]TransferFunctionModel[ARProcess[{Subscript[a, 1], Subscript[a, 2]}, σ^2], z]α = {{.2, .3}, {0, .1}};
β = {{-.3, .1}, {.5, -.4}};
Σ = {{1, 0}, {0, 1}};
TransferFunctionModel[ARProcess[{α, β}, Σ], z]定常AR課程のPoleZeroPlot:
proc = ARProcess[{.3, .4, .1}, 1];
tfm = TransferFunctionModel[proc];PoleZeroPlot[tfm]proc = ARProcess[{.3, .5, .8}, 1, {}];
PoleZeroPlot[StateSpaceModel[proc]]StateSpaceModel[ARProcess[{Subscript[a, 1], Subscript[a, 2]}, σ^2]]α = {{.2, .3}, {0, .1}};
β = {{-.3, .1}, {.5, -.4}};
Σ = {{1, 0}, {0, 1}};
StateSpaceModel[ARProcess[{α, β}, Σ]]アプリケーション (6)
ARProcessを使ってARMAProcessを推定する:
data = RandomFunction[proc = ARMAProcess[{.3}, {.2}, 1], {10 ^ 4}];
ar = EstimatedProcess[data, ARProcess[20]]arma = ARMAProcess[ar, {1, 1}]LogLikelihood[#, data]& /@ {proc, arma}2012年8月におけるシャンペーンの日々の気温の平均を考える:
temp = TemporalData[TimeSeries, {{{20.5, 20.89, 22.5, 27.44, 26.5, 20.33, 18.83, 23.06, 20.83, 19.72,
14.89, 15.28, 18.11, 18.72, 17.5, 20.83, 17.94, 13.56, 16.44, 14.33, 14.72, 15.83, 17.28,
19.89, 20.44, 21.39, 24.89, 22.78, 22.83, 20.22, 24.4 ... te", 1}, 1,
{ResamplingMethod -> {"Interpolation", InterpolationOrder -> 1}, ValueDimensions -> 1,
MetaInformation -> {"Source" -> HoldForm[WeatherData["Champaign", "MeanTemperature",
{{2012, 8}, {2012, 8}, "Day"}]]}}}, True, 10.1];temp["Source"]DateListPlot[temp, Joined -> True, Filling -> Axis]eproc = EstimatedProcess[temp, ARProcess[20]]モデルとデータのCorrelationFunctionを比較する:
ListPlot[TemporalData[CorrelationFunction[#, {30}]& /@ {temp, eproc}], Filling -> {1 -> {2}}, PlotStyle -> PointSize[Medium], PlotLegends -> {"Data", "Model"}]temp = TemporalData[TimeSeries, {{{20, 18.3, 17.2, 16.1, 15.6, 18.3, 21.1, 23.3, 25.6, 27.2, 28.3, 28.9,
30, 30, 30, 30.6, 30, 28.3, 25.6, 22.8, 22.2, 20.6, 19.4, 17.8, 17.8, 16.1, 17.8, 17.8, 18.9,
18.3, 19.4, 20, 18.3, 18, 18.3, 19, 20.6, 22.8 ... "Hour"}]}, 1, {"Discrete", 1}, {"Discrete", 1}, 1,
{ResamplingMethod -> {"Interpolation", InterpolationOrder -> 1},
MetaInformation -> {"Source" -> HoldForm[WeatherData[FindGeoLocation[], "Temperature",
{2011, 6}]]}}}, True, 10.1];temp["Source"]DateListPlot[temp, Joined -> True, Filling -> Axis]proc = EstimatedProcess[temp, ARProcess[48]]推定された過程でTimeSeriesModelを作る:
tsm = TimeSeriesModelFit[temp, proc]{#["ACFPlot"], #["PACFPlot"]}&[tsm]2012年5月から2012年9月までのドルとユーロの日ごとの為替レート:
data = TemporalData[Automatic, {{{1.31, 1.31, 1.31, 1.3, 1.3, 1.3, 1.29, 1.29, 1.29, 1.27, 1.28, 1.28,
1.27, 1.26, 1.26, 1.26, 1.25, 1.24, 1.24, 1.23, 1.24, 1.24, 1.25, 1.26, 1.25, 1.26, 1.25, 1.25,
1.26, 1.26, 1.26, 1.26, 1.27, 1.27, 1.25, 1.25 ... Data`DateSpecification[{2012, 5, 2}, {2012, 9, 28}, "BusinessDay", "DayRange"]}, 1,
{"Discrete", 1}, {"Discrete", 1}, 1,
{MetaInformation -> {"Source" -> HoldForm[FinancialData]["EUR/USD",
{{2012, 5, 1}, {2012, 9, 30}}]}}}, True, 9.];data["Source"]DateListPlot[data, Joined -> True, Filling -> Bottom]With[{vals = data["Values"]}, ListPlot[Transpose[{Most[vals], Rest[vals]}]]]eproc = EstimatedProcess[data, ARProcess[3]]forecast = TimeSeriesForecast[eproc, data, {20}]DateListPlot[{data, forecast}, Joined -> True, Filling -> Bottom]現在地付近の1980年から2011年にかけての日毎の平均気温:
temp = TemporalData[TimeSeries, {{{-1.22, -4.2, 2.14, 9.92, 18.05, 20.6, 25.11, 23.63, 18.85, 10.11, 4.42,
-0.59, -4.52, -0.63, 4.72, 13.81, 14.6, 22.48, 23.41, 23.75, 19.75, 12.52, 7.45, -2.27, -7.41,
-3.33, 4.81, 9.41, 22.12, 21.34, 25.7, 23.2 ... , 1}, {"Discrete", 1}, 1,
{ResamplingMethod -> {"Interpolation", InterpolationOrder -> 1},
MetaInformation -> {"Source" -> HoldForm[WeatherData[FindGeoLocation[], "MeanTemperature",
{{1980, 1}, {2012, 1}, "Month"}]]}}}, True, 10.1];temp["Source"]DateListPlot[temp, Joined -> True, Filling -> Bottom]tsm = TimeSeriesModelFit[temp, "AR"]eproc = tsm["Process"]初期条件にAutomaticを仮定して定常性を調べる:
WeakStationarity[eproc]モデルとサンプルのCorrelationFunctionおよびPartialCorrelationFunctionを比較する:
modelCorr = DiscretePlot[#[eproc, h], {h, 1, 60}, PlotRange -> {-1, 1}, ExtentSize -> 1 / 2]& /@ {CorrelationFunction, PartialCorrelationFunction};
sampleCorr = ListLinePlot[#[temp["PathStates"], {1, 60}], PlotRange -> {-1, 1}, PlotLabel -> #]& /@ {CorrelationFunction, PartialCorrelationFunction};
MapThread[Show[#2, #1]&, {modelCorr, sampleCorr}]次のデータは,1961年の8ヶ月間のダウジョーンズ平均株価の利益と時価総額の利益を表している.ベクトル自己回帰をこのデータにフィットする:
data = TemporalData[{{1, {0.02619, 0.032994}}, {2, {0.02575, 0.033013}}, {3, {0.01442, 0.006127}}, {4, {0.02067, 0.022185}}, {5, {-0.02172, -0.030350}}, {6, {0.01913, 0.033709}}, {7, {0.03243, 0.022871}}, {8, {-0.03279, -0.020618}}}]ListLinePlot[data]eproc = EstimatedProcess[data, ARProcess[1]]sample = RandomFunction[eproc, {1, 8}, 10 ^ 3];mean = TimeSeriesThread[Mean, sample];ListLinePlot[mean]特性と関係 (7)
ARProcessはARMAProcessの特殊ケースである:
TransferFunctionModel[ARMAProcess[{Subscript[a, 1], Subscript[a, 2], Subscript[a, 3]}, {}, σ^2], z]TransferFunctionModel[ARProcess[{Subscript[a, 1], Subscript[a, 2], Subscript[a, 3]}, σ^2], z]% - %%ARProcessはARIMAProcessの特殊ケースである:
TransferFunctionModel[ARIMAProcess[{Subscript[a, 1], Subscript[a, 2], Subscript[a, 3]}, 0, {}, σ^2], z]TransferFunctionModel[ARProcess[{Subscript[a, 1], Subscript[a, 2], Subscript[a, 3]}, σ^2], z]% - %%ARProcessはFARIMAProcessの特殊ケースである:
TransferFunctionModel[FARIMAProcess[{Subscript[a, 1], Subscript[a, 2], Subscript[a, 3]}, 0, {}, σ^2], z]TransferFunctionModel[ARProcess[{Subscript[a, 1], Subscript[a, 2], Subscript[a, 3]}, σ^2], z]% - %%ARProcessはSARMAProcessの特殊ケースである:
TransferFunctionModel[SARMAProcess[{a}, {}, {1, {g}, {}}, σ^2], z]TransferFunctionModel[ARProcess[{a + g, -a g}, σ^2], z]Simplify[% - %%]ARProcessはSARIMAProcessの特殊ケースである:
TransferFunctionModel[SARIMAProcess[{a}, 0, {}, {1, {g}, 0, {}}, σ^2], z]TransferFunctionModel[ARProcess[{a + g, -a g}, σ^2], z]Simplify[% - %%]ARCHProcessの平方値はAR過程に従う:
proc = ARCHProcess[1, {.2, .3}];data = RandomFunction[proc, {10 ^ 4}]["PathStates"];平方値のCorrelationFunctionおよびPartialCorrelationFunction:
dataSQ = data ^ 2;
ListPlot[#[dataSQ, {30}], Filling -> Axis, PlotRange -> {-.2, 1}, PlotLabel -> #]& /@ {CorrelationFunction, PartialCorrelationFunction}ar = ARProcess[proc]AR過程のCorrelationFunctionおよびPartialCorrelationFunction:
ListPlot[#[ar, {30}], Filling -> Axis, PlotRange -> {-.2, 1}, PlotLabel -> #]& /@ {CorrelationFunction, PartialCorrelationFunction}累積AR過程はARMAProcessに等しい:
ar = ARProcess[{a}, v];
proc = TransformedProcess[x[t] + x[t - 1], xar, t];arma = ARMAProcess[{a}, {1}, v];Mean[proc[t]]Mean[arma[t]]Table[CovarianceFunction[proc, t, t + k] - CovarianceFunction[arma, t, t + k], {k, 0, 10}, {t, 1, 10}]//Simplify考えられる問題 (5)
特性の中には,広義の定常過程についてしか定義されないものもある:
CovarianceFunction[ARProcess[{2, 3, .3}, 1], h]FindInstanceを使って弱定常AR過程の例を求める:
FindInstance[a > 1 && WeakStationarity[ARProcess[{a, b, 1 / 3}, 1]], {a, b}]CovarianceFunction[ARProcess[{3 / 2, -5 / 4, 1 / 3}, 1], h]//DiscretePlot[#, {h, 0, 10}]&初期値が指定されていない過程は,弱定常条件を満足しなければならない:
ProcessParameterAssumptions[ARProcess[{a}, v]]RandomFunction[ARProcess[{1}, 1], {3}]RandomFunction[ARProcess[{1}, 1, {}], {3}]Levinson–Durbin推定法は,常に適用可能であるとは限らない:
SeedRandom[4];
data = RandomFunction[ARProcess[2, {.4, .2}, 1], {100}];EstimatedProcess[data, ARProcess[c, {.4, b, b}, v], ProcessEstimator -> {"MethodOfMoments", Method -> "LevinsonDurbin"}]EstimatedProcess[data, ARProcess[c, {.4, b, b}, v], ProcessEstimator -> {"MethodOfMoments", Method -> "NSolve"}]SeedRandom[4];
data = RandomFunction[ARProcess[2, {.4, .2}, 1], {100}];EstimatedProcess[data, ARProcess[c, {a * b, a, b}, v], ProcessEstimator -> {"MethodOfMoments", Method -> "NSolve"}]EstimatedProcess[data, ARProcess[c, {a * b, a, b}, v], ProcessEstimator -> "MaximumConditionalLikelihood"]最大エントロピー推定法では,固定母数あるいは反復母数は使用できない:
SeedRandom[4];
data = RandomFunction[ARProcess[2, {.4, .2}, 1], {100}];EstimatedProcess[data, ARProcess[c, {.1, b, b}, v], ProcessEstimator -> "MaximumEntropy"]EstimatedProcess[data, ARProcess[c, {.1, b, b}, v], ProcessEstimator -> Automatic]おもしろい例題 (2)
三次元の弱定常ARProcessのシミュレーションを行う:
A = {{.2, .1, .1}, {0, -.2, .3}, {.2, -.1, .3}};
S = {{.8, .1, -.2}, {.1, .5, .1}, {-.2, .1, .3}};
proc1 = ARProcess[{A}, S];
data1 = RandomFunction[proc1, {100}]["PathStates"];Graphics3D[{ColorData["SolarColors"][RandomReal[]], Tube@Line@data1}]B = {{.9, .2, .8}, {-.2, .8, -.3}, {.2, .2, .4}};
S = {{.8, .1, -.2}, {.1, .5, .1}, {-.2, .1, .3}};
proc2 = ARProcess[{B}, S, {}];
data2 = RandomFunction[proc2, {100}]["PathStates"];Graphics3D[{ColorData["SolarColors"][RandomReal[]], Tube@Line@data2}]SeedRandom[154];
data = RandomFunction[ARProcess[{.3}, 1], {50}, 200];sd = data["SliceData", 50];cf = ColorData["Rainbow"];
sliced = BarChart[Last[#], Axes -> False, BarOrigin -> Left, AspectRatio -> 4, ChartStyle -> (cf /@ Rescale[MovingAverage[First[#], 2], {Min[sd], Max[sd]}, {0, 1}]), ImageSize -> 55]&[HistogramList[sd, {Range[Min[sd], Max[sd], (Max[sd] - Min[sd]) / 20]}]];50におけるスライス分布の経路とヒストグラム分布をプロットする:
ListLinePlot[data, ImageSize -> 400, PlotRange -> All,
AspectRatio -> 3 / 4, Epilog -> Inset[sliced, {51, 0}, {0, 10}], PlotStyle -> (cf /@ Rescale[sd]), BaseStyle -> Directive[Thin, Opacity[0.5]], PlotRangePadding -> {{0, 15}, {.5, .5}}]関連するガイド
テキスト
Wolfram Research (2012), ARProcess, Wolfram言語関数, https://reference.wolfram.com/language/ref/ARProcess.html (2014年に更新).
CMS
Wolfram Language. 2012. "ARProcess." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2014. https://reference.wolfram.com/language/ref/ARProcess.html.
APA
Wolfram Language. (2012). ARProcess. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/ARProcess.html
BibTeX
@misc{reference.wolfram_2026_arprocess, author="Wolfram Research", title="{ARProcess}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/ARProcess.html}", note=[Accessed: 12-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_arprocess, organization={Wolfram Research}, title={ARProcess}, year={2014}, url={https://reference.wolfram.com/language/ref/ARProcess.html}, note=[Accessed: 12-August-2026]}