TimeSeriesForecast[tproc,data,k]
根据时间序列过程 tproc ,给出超出 data 的 k 步前向预测.
TimeSeriesForecast[tsmod,k]
给出 TimeSeriesModel tsmod 的 k 步前向预测.
TimeSeriesForecast
TimeSeriesForecast[tproc,data,k]
根据时间序列过程 tproc ,给出超出 data 的 k 步前向预测.
TimeSeriesForecast[tsmod,k]
给出 TimeSeriesModel tsmod 的 k 步前向预测.
更多信息和选项
- TimeSeriesForecast[tproc,{x0,…,xm},k] 将给出 Expectation[x[m+k]x[0]x0∧…∧x[m]xm],其中 xtproc,给定 data 的过程的期望值.
- TimeSeriesForecast 允许 tproc 为一个时间序列过程,就如 ARProcess,ARMAProcess,SARIMAProcess 等.
- data 可以是一个数值列表 {x1,x2,…},一个时间-数值对的列表 {{t1,x1},{t2,x2},…},或者 TemporalData.
- 可以设定以下预测规范:
-
k 前面第 k
步{kmax} 前面 1, …, kmax 步 {kmin,kmax} 前面 kmin, …, kmax 步处 {{k1,k2,…}} 使用前面的显式 {k1,k2,…} 步 - 如果 k 为整数,TimeSeriesForecast 将返回预测值,否则将返回 TemporalData.
- k 的默认值为1.
- TimeSeriesForecast 支持 Method 选项,另有下列设置:
-
Automatic 自动确定方法 "AR" 使用高阶 AR 过程近似 "Covariance" 基于精确方差函数 "Kalman" 使用卡曼滤波器 - 预测的均方差是合成操作误差,并且在 TemporalData 输出中以 MetaInformation 给出. 对于 forecast=TimeSeriesForecast[tproc,data,k],均方差可以使用 forecast["MeanSquaredErrors"] 预测.
范例
打开所有单元 关闭所有单元基本范例 (3)
对一个 ARProcess 预测前面三步:
data = {.1, .3, -.2, 0, -.2, .2};TimeSeriesForecast[ARProcess[{-.2, .4, .6}, .1], data, 3]一个 ARMAProcess:
TimeSeriesForecast[ARMAProcess[{.2, -.1}, {-.2, .3}, .1], data, 3]预测 TimeSeriesModel 的第七个值:
data = RandomFunction[ARMAProcess[{.2, -.1}, {-.2, .3}, .1], {10 ^ 3}];
tsmod = TimeSeriesModelFit[data, "ARMA"];forecast = TimeSeriesForecast[tsmod, 7]TimeSeriesForecast[tsmod, {{7}}]["MeanSquaredErrors"]["Path"]proc = ARMAProcess[{{{.8, .2}, {.3, .1}}}, {{{.2, 1}, {.5, -.3}}}, {{1, .2}, {.2, .5}}];
SeedRandom[3];
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}]范围 (7)
步骤 (4)
data = {.2, .4, -.1};
proc = ARProcess[1, {.4}, 1];TimeSeriesForecast[proc, data]TimeSeriesForecast[proc, data, 3]data = {.2, .4, -.1};
proc = ARProcess[1, {.4}, 1];TimeSeriesForecast[proc, data, {5}]%["Path"]data = {.2, .4, -.1};
proc = ARProcess[1, {.4}, 1];TimeSeriesForecast[proc, data, {3, 5}]%["Path"]data = {.2, .4, -.1};
proc = ARProcess[1, {.4}, 1];TimeSeriesForecast[proc, data, {{2, 3, 5}}]%["Path"]均方差 (3)
data = {.2, .4, -.1};
proc = ARProcess[1, {.4}, 1];TimeSeriesForecast[proc, data]以 TemporalData 的形式返回预测,提取均方差:
forecast = TimeSeriesForecast[proc, data, {{1}}]err = forecast["MeanSquaredErrors"]{forecast["Path"], err["Path"]}proc = ARMAProcess[1.2, {.3, .2}, {.8}, .1];
data = RandomFunction[proc, {1, 20}];forecast = TimeSeriesForecast[proc, data, {0, 10}];err = Sqrt[forecast["MeanSquaredErrors"]];uband = TimeSeriesThread[{1, 1}.#&, {forecast, err}];lband = TimeSeriesThread[{1, -1}.#&, {forecast, err}];ListLinePlot[{data, forecast, uband, lband}, PlotStyle -> {Automatic, Automatic, Gray, Gray}, Filling -> {3 -> {4}}]data = RandomFunction[proc = MAProcess[.4, {.3, .2}, .1], {1, 20}];forecast = TimeSeriesForecast[ARMAProcess[{-.2, .4, .6}, {.2, .1}, .1], data, {0, 10}];err = Sqrt[forecast["MeanSquaredErrors"]];
quantile = Quantile[NormalDistribution[], 1 - 1 / 2 (1 - .95)];uband = TimeSeriesThread[{1, quantile}.#&, {forecast, err}];lband = TimeSeriesThread[{1, -quantile}.#&, {forecast, err}];ListLinePlot[{data, forecast, uband, lband}, PlotStyle -> {Automatic, Automatic, Gray, Gray}, Filling -> {3 -> {4}}]选项 (4)
Method (4)
proc = MAProcess[{.3, .4}, 1];
data = {1, 1.4, 2};
forecast = TimeSeriesForecast[proc, data, {6}, Method -> "Covariance"]forecast["Path"]proc = MAProcess[{.3, .4}, 1];
data = {1, 1.4, 2};
forecast = TimeSeriesForecast[proc, data, {6}, Method -> "AR"]forecast["Path"]proc = MAProcess[{.3, .4}, 1];
data = {1, 1.4, 2};
forecast = TimeSeriesForecast[proc, data, {6}, Method -> "Kalman"]forecast["Path"]比较对一个 MAProcess 的精确和近似方法:
ma = MAProcess[{a}, σ^2];TimeSeriesForecast[ma, Array[x, 3], Method -> "Covariance"]TimeSeriesForecast[ma, Array[x, 3], Method -> "AR"]ar = ARProcess[{a}, σ ^ 2];TimeSeriesForecast[ar, Array[x, 3], Method -> "Covariance"]TimeSeriesForecast[ar, Array[x, 3], Method -> "AR"]应用 (3)
从 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]eproc = EstimatedProcess[data, ARProcess[3]]forecast = TimeSeriesForecast[eproc, data, {20}]DateListPlot[{data, forecast}, Joined -> True, Filling -> Bottom]考虑您的地点附近 2012 年 9 月 9 日每小时温度数据:
data = WeatherData[First@FindGeoLocation[], "Temperature", {2012, 9, 9}]FreeQ[data, Missing]用 MissingDataMethod 重新定义时间序列,以便利用插值补充缺失数据:
data1 = TimeSeries[data, MissingDataMethod -> {"Interpolation", InterpolationOrder -> 1}]RegularlySampledQ[data1]temp = TimeSeriesResample[data1, "Hour"]RegularlySampledQ[temp]估计 ARProcess:
proc = EstimatedProcess[temp, ARProcess[3]]forecast = TimeSeriesForecast[proc, temp, {12}]DateListPlot[{temp, forecast}, Filling -> Axis, Joined -> True]raw = WolframAlpha["usa retail sales", {{"History:RetailSales:EconomicData", 1}, "TimeSeriesData"}];raw[[1]]用选中的数据生成 TimeSeries:
data = QuantityMagnitude[TimeSeries[raw[[-12 * 15 ;; , 2]], {Automatic, raw[[-1, 1]], "Month"}]]grids = Table[{1992, 12 i}, {i, data["PathLength"]}];
DateListPlot[data, GridLines -> {grids, None}, AspectRatio -> 1 / 3]model = TimeSeriesModelFit[data, {"SARIMA", 12}]proc = model["BestFit"]属性和关系 (3)
使用精确或者近似方法在 ARProcess 下预测给出相同结果:
TimeSeriesForecast[ARProcess[{a}, σ^2], {x, y, z}, {5}, Method -> "Covariance"]["Path"]TimeSeriesForecast[ARProcess[{a}, σ^2], {x, y, z}, {5}, Method -> "AR"]["Path"]% - %%proc = MAProcess[{3., 1.}, 1];TimeSeriesInvertibility[proc]invproc = ToInvertibleTimeSeries[proc]data = {.2, -.3, .4};forecast = TimeSeriesForecast[proc, data, {3}]invforecast = TimeSeriesForecast[invproc, data, {3}]forecast - invforecast%["Path"]用 TimeSeriesModel 来预测:
data = TemporalData[TimeSeries,
{{{Quantity[46.76, "DegreesFahrenheit"], Quantity[50., "DegreesFahrenheit"],
Quantity[68.31, "DegreesFahrenheit"], Quantity[72.84, "DegreesFahrenheit"],
Quantity[71.74, "DegreesFahrenheit"], Quantity[76.75, "Deg ... DegreesFahrenheit"]}}, {TemporalData`DateSpecification[{2007, 3, 1, 0, 0, 0.},
{2017, 3, 1, 0, 0, 0}, {1, "Month"}]}, 1, {"Continuous", 1}, {"Discrete", 1}, 1,
{ResamplingMethod -> {"Interpolation", InterpolationOrder -> 1}}}, True, 314.1];tsm = TimeSeriesModelFit[data]forecast = TimeSeriesForecast[tsm, {20}]res = TimeSeriesForecast[tsm["Process"], tsm["TemporalData"], {20}]forecast["Path"] == res["Path"]文本
Wolfram Research (2012),TimeSeriesForecast,Wolfram 语言函数,https://reference.wolfram.com/language/ref/TimeSeriesForecast.html (更新于 2014 年).
CMS
Wolfram 语言. 2012. "TimeSeriesForecast." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2014. https://reference.wolfram.com/language/ref/TimeSeriesForecast.html.
APA
Wolfram 语言. (2012). TimeSeriesForecast. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/TimeSeriesForecast.html 年
BibTeX
@misc{reference.wolfram_2026_timeseriesforecast, author="Wolfram Research", title="{TimeSeriesForecast}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/TimeSeriesForecast.html}", note=[Accessed: 01-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_timeseriesforecast, organization={Wolfram Research}, title={TimeSeriesForecast}, year={2014}, url={https://reference.wolfram.com/language/ref/TimeSeriesForecast.html}, note=[Accessed: 01-November-2026]}