Files
playbook/skills/tsl-api-reference/references/codegen/dotnet/math/time_series_analysis.md
T

28 KiB
Raw Blame History

数学函数 / 时间序列分析

ar(y, p, approach)

声明:function

自回归模型,AR(p)模型,选择使用最小二乘,Yule-Walker方法,Foiward-backward,Geometric lattice,Burg's lattice-bas去估计p阶自回归模型的系数,返回结果有自回归系数、残差方差、预测值及预测波动等信息

参数 类型 说明
y array of real 样本序列,为一维数组类型,注意要零均值化
p integer 自回归阶数
approach string 估计方法

返回:array

示例

elps := randnorm(0, 1, 200);
y := array();
y[0] := 0;
y[1] := 0;
for i := 2 to 199 do
    y[i] := -0.5 * y[i-1]+0.3 * y[i-2]+elps[i];
return ar(y, 2, 'ls');

arma(series, p, q)

声明:function

自回归移动平均模型,ARMA(p,q)模型,采用逆函数去估计自回归系数和移动平均系数,返回结果有自回归系数、移动平均系数、残差方差等信息 ARMA模型: 其中:为原序列零均值化的新序列,是自回归方程系数,为移动平均系数,是零均值、方差为的平稳白噪声

参数 类型 说明
series array 样本序列,为一维数组类型,注意要零均值化
p int 自回归阶数,整数类型
q int 移动平均阶数,整数类型;返回结果:Ret["AR"]:参数估计结果,,第一项为1Ret["MA"]:参数估计结果,,第一项为1Ret["T-test"]:AR模型参数的T检验;Ret["LossFunction"]Ret["FPE"]:预测最大误差;Ret["AIC"]:模型的AIC信息准则;Ret["SC"]:模型的SC信息准则;Ret["e"]:残差信息;Ret["Inverted AR Roots"]:AR特征方程的特征根;Ret["Inverted MA Roots"]:MA特征方程的特征根;Ret["R_squared"]:AR模型的可决系数;Ret["Adjusted_R_squared "]:AR模型的修正可决系数;Ret["Sum_squared_resid"]:AR模型的离差平方和;Ret["Durbin Watson stat"]:DW统计量;Ret["Log Likelihood"]:对数极大似然值;Ret["S.E. of regression"]:回归标准差

返回:array

示例

elps := randnorm(0, 1, 200);
y := array();
y[0] := 0;
for i := 1 to 199 do
    y[i] := 0.8*y[i-1]+elps[i]-0.4*elps[i-1];
arma(y, 1, 1);

garchFit(model_spec, y, x, e0, s0, y0)

声明:function

广义自回归条件异方差模型,采用极大似然估计方法估计模型的参数

参数 类型 说明
model_spec array 模型设置项,为数据表类型,参考:表8-5
y array 原始数据,一维数字数组
x array 均值方程回归外生变量,二维数字数组,可缺省
e0 array 自回归方程残差序列起始的几项取值,一维数字数组,可缺省
s0 array 条件方程方差序列起始的几项取值,一维数字数组,可缺省
y0 array 原始序列起始的几项取值,一维数字数组,可缺省

返回:array

示例

// 以1995年1月至2000年8月日元兑换美元汇率值序列(JPY,如图8-9)为例介绍怎样用天软来进行ARCH建模(序列共1427个值)。
// 图8-9日元兑换美元汇率值(JPY)序列图8-10DJPY时间序列
// JPY序列显然是一个非平稳时间序列,对JPY进行差分,DJPY表示收益,见图8-10,因为DJPY是一个平稳时间序列,应该使用DJPY建立时间序列模型。按照ARMA模型中讲的那样对DJPY拟合ARMA模型,根据自相关系数以及偏自相关系数,AIC准则等,我们最终将模型定为AR(3)模型。
d_jpy := diff(jpy);
m := mean(d_jpy);
d_jpy := d_jpy-m;
ret := arma(d_jpy, 3, 0);
// 得到的结果是:
// 图8-11 AR(3)残差
// 该模型的残差如图8-11所示,我们怀疑残差含有异方差,使用Time_ARCHTest函数检验。
Time_ARCHTest(ret["e"], 1, 0.05);
// 图8-12 AR(3)残差
// 拒绝原假设,认为模型含有异方差,建立ARCH模型,首先建立ARCH(7)模型(尝试多次,最大滞后选为7为宜)。
// 图8-13ARCH模型结果图8-14异方差估计情况
modelspec := array(
    ("R": 3,
    "M": 0,
    "AR": nil,
    "MA": nil,
    "Regress": nil,
    "VarianceModel": "GARCH",
    "C": nan,
    "P": 0,
    "Q": 7,
    "GARCH": array(),
    "ARCH": array(),
    "Leverage": nil));
t := garchFit(modelspec, d_jpy);
// 得到的异方差如图8-14。ARCH模型中的的滞后项太多,应该尝试建立GARCH(1, 1)模型:
modelspec := array(
    ("R": 3,
    "M": 0,
    "AR": nil,
    "MA": nil,
    "Regress": nil,
    "VarianceModel": "GARCH",
    "C": nan,
    "P": 1,
    "Q": 1,
    "GARCH": array(),
    "ARCH": array(),
    "Leverage": nil));
t := garchFit(modelspec, d_jpy);
// 图8-15GARCH模型结果图8-16方差估计情况

GM_Estimate(x, l)

声明:function

GM(1,1)模型,用于灰色系统模型的l步预测 结果说明: 平均相对误差:越小越接近零越好; 关联度:当ρ=0.5时,关联度大于0.6便满意 方差比:C 小误差概率:P

参数 类型 说明
x array 数据矩阵,为一维数组类型;
l any 预测步长,为整数类型

返回:array

Time_ACF(y)

声明:function

自相关系数,计算随机序列与所有滞后阶数的相关系数

参数 类型 说明
y array 数组,样本序列;;p:整数,返回样本自相关系数序列的长度,默认值为3,允许缺省;

返回:array

Time_Analyse(y, model, p, q, l)

声明:function

ARMA模型分析,时间序列的ARMA模型分析,可以自动的选择q与p

参数 类型 说明
y array 样本序列,为一维数组类型;
model string 模型类别为AR、MA、ARMA,为字符串类型;
p any 自回归阶数,取0则自动选择阶数,为整数类型;
q any 移动平均阶数,取0则自动选择阶数,为整数类型;
l any 预测步长,为整型类型;

返回:any

Time_ARCH(r_series, q, l)

声明:function

自回归条件异方差模型,本模型的ARCH模型如下: sss 可把异方差方程进行整合,得到 用最小二乘法去估计方程的系数了,得到系数的相合估计。 或者用最大似然估计去估计参数,得到精度估计,最大似然估计的目标函数值为

参数 类型 说明
r_series array 资产收益率,为一维数组类型;
q any 自回归阶数,为整数类型;
l any 预测步长,为整数类型

返回:array

Time_ARCHTest(u, q, alpha)

声明:function

时间序列异方差的ARCH检验,原假设都为没有异方差,即不存在ARCH效应,Hypothesis为1表示接受原假设,0表示拒绝原假设 检验统计量为: 对方程进行估计,得到F统计量和T×R2统计量并进行检验

参数 类型 说明
u array 残差序列,为一维数组类型
q any 滞后阶数,为整数类型
alpha float 1-alpha为置信水平,一般为5%,也有1%和10%,数值越小,判断越严格

返回:array

示例

u := array(0.10, 0.12, 0.08, 0.11, 0.09, 0.13, 0.10, 0.07, 0.12, 0.09);
return Time_ARCHTest(u, 1, 0.05);
// 输出:返回包含 2 个元素的 ARCH 检验结果数组

Time_ARMA(y, p, q, l)

声明:function

建议使用ARMA模型替换,自回归移动平均模型,ARMA(p,q)模型,采用逆函数去估计自回归系数和移动平均系数,返回结果有自回归系数、移动平均系数、残差方差、预测值及预测波动。 估计过程如下: ,为自协方差 其中:yt为原序列零均值化的新序列,μ为原序列的均值,ρp是自相关系数,φq是自回归方程系数,θq为移动平均系数,εt是零均值、方差为σ2的平稳白噪声

参数 类型 说明
y array 样本序列,为一维数组类型;
p any 自回归阶数;
q any 移动平均阶数
l any 预测步长,整数

返回:array

Time_ARp(y, p, l)

声明:function

建议使用AR模型替换,自回归模型,AR(p)模型,用Yule-Walker方程去估计p阶自回归模型的系数,返回结果有自回归系数、残差方差、预测值及预测波动。估计过程如下 AR(p)模型: 如有常数项,则 ,为自协方差 其中:为原序列零均值化的新序列,为原序列的均值,是自相关系数,是自回归方程系数,是零均值,方差为的平稳白噪声

参数 类型 说明
y array 样本序列,为一维数组类型;
p any 自回归阶数;
l any 预测步长;

返回:array

Time_AutoCov(y, l)

声明:function

自协方差,求样本序列跟滞后L阶序列的协方差,即自协方差 自协方差计算公式如下: 其中:yt是样本序列,yL是滞后L阶的序列

参数 类型 说明
y array 样本序列,为一维数组类型;
l any 滞后阶数,为整数类型;

返回:any

示例

return Time_AutoCov(array(1.0, 2.0, 3.0, 4.0, 5.0), 1);
// 输出:1.25

Time_ChoseP(y, model, f)

声明:function

判断AR模型最佳的阶数,采用信息准则函数判断模型的最佳阶数 其中:T为样本容量,K为待估计参数

参数 类型 说明
y array 样本序列,为一维数组类型;
model string 模型类别为AR、MA、ARMA,为字符串类型;
f string 判断准则为SBIC和AIC,为字符串类型

返回:any

Time_DanielTest(y, alpha)

声明:function

在1-alpha置信水平下,进行随机时间序列的Daniel平稳性检验。返回结果为一个数组,第一个为q值(q>0:序列有上升趋势,q<0:序列有下降趋势),第二个为T统计量,第三个为p值,第四个为是否接受原假设。原假设为x是平稳序列,所以H为1表示接受原假设,0表示拒绝原假设 其中:qs是Spearman相关系数,Rt为秩统计量,n为样本容量

参数 类型 说明
y array 随机时间序列,为一维数组类型
alpha float 显著性水平,实数类型,取值在0-1之间

返回:array

Time_Diff(y, n)

声明:function

序列差分

参数 类型 说明
y array 需要做差分的数组数据
n any 差分的阶数,0阶不做处理

返回:any

Time_GARCH(rseries, model)

声明:function

广义自回归条件异方差模型,包含四种模型:GARCH(1,1)、GJR(1,1)、IGARCH(1,1)和EGARCH(1,1),本模型采用了最大似然估计法去估计模型的系数,可做一步预测。 GARCH(1,1) GJR(1,1) IGARCH(1,1) EGARCH(1,1) 最大似然估计的目标函数值为

参数 类型 说明
rseries array 资产收益率,为一维数组类型;
model string 模型类别,为字符串类型;

返回:any

Time_GreenFun(ap, mq)

声明:function

中间函数,ARMA模型的Green函数,Green函数的递推公式如下: 式中: ,,是自回归方程系数,为移动平均系数

参数 类型 说明
ap array 自相关系数,为一维数组类型;
mq array 移动平均系数,为一维数组类型;

返回:array

Time_InvFun(ap, mq)

声明:function

中间函数,模型逆函数,ARMA模型的逆函数,Green函数的递推公式如下: 式中: ,,是自回归方程系数,为移动平均系数

参数 类型 说明
ap array 自相关系数,为一维数组类型;
mq array 移动平均系数,为一维数组类型;

返回:array

Time_MAq(y, q, l)

声明:function

建议使用ARMA模型替换,移动平均模型,MA(q)模型,用条件最小二乘法去估计q阶移动平均模型的系数,返回结果有移动平均系数、残差方差、预测值及预测波动。 估计过程如下: MA(q)模型: 具有逆转形式: 用算子形式比较,可得: s 条件最小二乘法使得下列残差平方和最小: 可将上述转化为矩阵形式,先求得的取值,在利用上上式计算移动平均系数 如有常数,则常数项为原序列的均值。 ,为自协方差 其中:yt为原序列零均值化的新序列,μ为原序列的均值,θq为移动平均系数,εt是零均值,方差为σ2的平稳白噪声

参数 类型 说明
y array 样本序列,为一维数组类型;
q any 移动平均阶数;
l any 预测步长;

返回:array

Time_PACF(y)

声明:function

偏自相关系数,计算随机序列与所有滞后阶数的偏自相关系数,返回结果是一个数组。偏相关系数的计算公式如下: 是自相关系数,是偏相关系数

参数 类型 说明
y array 样本序列,为一维数组类型

返回:array

Time_RandomTest(y, m, alpha)

声明:function

Ljung和Box提出的修正Qm统计量,用于检验序列是否为白噪声,原假设为白噪声序列,即纯随机序列。(Hypothesis为1表示接受原假设,0表示拒绝原假设) Qm统计量的计算公式如下: 其中:是自相关系数,T是样本容量,m是最大滞后长度

参数 类型 说明
y array 样本序列,为一维数组类型
m any 最大滞后长度,整数类型,一般取样本数的四分之一
alpha float 显著性水平,实数类型,取值在0-1之间

返回:array

Time_VolatilitySpillover(x, y, w_type, m, c_type)

声明:function

波动溢出,底层模型为AR(3)-GARCH(1,1),对时间序列X与Y进行Granger因果检验

参数 类型 说明
x array 一维数字数组,时间序列X
y array 一维数字数组,时间序列Y
w_type any 整型 或 一维数字数组,加权方式,一维数字数组表示可同时返回多种加权方式
m any 整数 或 一维数字数组,滞后阶数,一维数字数组表示同时计算多个M的场景,缺省时M:= array(5,10,20,30,40);
c_type any 整数,因果检验类型

返回:array

示例

x := array(
    0.10, 0.12, 0.11, 0.15, 0.14, 0.18, 0.17, 0.20, 0.19, 0.23,
    0.21, 0.25, 0.24, 0.28, 0.27, 0.30, 0.29, 0.33, 0.31, 0.35
);
y := array(
    0.08, 0.09, 0.11, 0.10, 0.13, 0.12, 0.15, 0.14, 0.17, 0.16,
    0.19, 0.18, 0.21, 0.20, 0.23, 0.22, 0.25, 0.24, 0.27, 0.26
);
return Time_VolatilitySpillover(x, y, 0, 5, -1);
// 输出:返回包含 6 个元素的波动溢出检验结果数组

Times_ADFTest(y, diff, style, f, p, alpha)

声明:function

时间序列的平稳性ADF检验;返回结果为ADF统计量和给定显著性水平下的ADF统计量的临界值;如果ADF统计量的绝对值比临界值的绝对值大,则可在该显著性水平下,拒绝原序列存在单位根的原假设,即原序列是平稳的

参数 类型 说明
y array 时间序列数据,为一维数组类型
diff any 差分次数,整数类型,0表示不进行差分
style any 是否存在常数或趋势项的选项,整数类型,无常数无趋势使用0、有常数无趋势1、有常数有趋势2
f string 滞后阶数判断信息准则,字符串类型,"SBIC""AIC"
p any 滞后阶数,为整型类型,输入0则表示自动选择
alpha float 显著性水平,实数类型,范围在0-1之间

返回:array

Times_Cointergration(y, x, alpha)

声明:function

建议使用Times_Cointergration_test函数替换本函数,协整检验—E-G两步法检验变量的协整关系,E-G法如下: 1)在因变量与自变量存在同阶单整关系的条件,进行最小二乘法回归; 2)把回归后的残差进行平稳性检验,如果残差序列是平稳的,则两者存在协整关系,否则不存在

参数 类型 说明
y array 因变量,为一维数组类型;
x array 自变量矩阵,为二维数组类型;
alpha float 1-alpha为置信水平,一般为5%,也有1%和10%,数值越小,判断越严格;

返回:string

Times_Cointergration_test(y, x, constant, alpha_type, style, criterion)

声明:function

E-G两步法协整检验变量的协整关系,E-G法基本步骤如下: 1)在因变量与自变量存在同阶单整关系的条件,进行最小二乘法回归; 2)把回归后的残差进行平稳性检验,如果残差序列是平稳的,则两者存在协整关系,否则不存在

参数 类型 说明
y array 被解释变量,为一维数组类型
x array 解释变量,为一维数组类型
constant bool 回归方程是否含有常数项,为布尔类型
alpha_type float 显著性水平,为实数类型,一般在0-1之间
style any ADF法检验单整阶数时是否存在常数或趋势项,整数类型,无常数无趋势使用0、有常数无趋势1、有常数有趋势2
criterion string 滞后阶数判断信息准则,字符串类型,"SBIC""AIC"

返回:array

Times_ECM(y, x, resid, alpha, q, p)

声明:function

两变量间的误差修正模型,准确的刻画了两序列间的短期波动特征 误差修正模型是时间序列间协整关系的主要表现形式,准确的刻画了序列间的长期均衡关系和短期波动特征。设一阶自回归分布滞后模型为: 其中,是均值为零,方差为的白噪声,进行适当的整理有: 其中若记 称为误差修正项

参数 类型 说明
y array 被解释变量,为一维数组类型
x array 解释变量,为一维数组类型
resid array 协整检验时的残差,没有输入,使用最小二乘得到
alpha float 显著性水平
q any 整数类型,被解释变量的滞后项
p any 整数类型,解释变量的滞后项

返回:any

Times_Granger(y, x, q, alpha)

声明:function

Granger因果检验,原假设:X不是Y的Granger原因,Hypothesis为1表示接受原假设,0表示拒绝原假设 原假设: 分别对上述两个回归方程做回归,提取残差平方和XESS跟YESS,则F统计量如下计算

参数 类型 说明
y array 被解释变量,为一维数组类型
x array 解释变量,为一维数组类型
q any 滞后阶数,为整数类型
alpha float 显著性水平,为实数类型,一般在0-1之间

返回:array

Times_GrangerCausality(series_matrix, lag_order)

声明:function

对矩阵中的多个序列执行两两 Granger 因果检验

参数 类型 说明
series_matrix array 多个时间序列组成的矩阵;可由两条序列用 `left_series
lag_order any 滞后阶数

返回:array

Times_johansen(x, p, k)

声明:function

进行Johansen协整检验,第一列的迹、最大特征值统计量的原假设是:没有协整关系;第二列的迹、最大特征值统计量的原假设是最多只有一个协整关系;第三列的迹、最大特征值统计量的原假设是最多只有两个协整关系……

参数 类型 说明
x array 输入多元时间序列,每一列为一指标,每行为一时间 (nobs*m)
p any 是否含时间趋势及常数项p = -1,没有时间趋势以及常数项p =0,含常数项p =1,含常数项以及一次时间项p >1,含常数项以及高次时间项
k any 滞后阶数

返回:array

示例

x := array(
    (1.0, 1.1),
    (1.2, 1.3),
    (1.4, 1.5),
    (1.7, 1.6),
    (1.9, 2.0),
    (2.1, 2.2),
    (2.4, 2.3),
    (2.6, 2.7),
    (2.8, 2.9),
    (3.1, 3.0),
    (3.3, 3.4),
    (3.5, 3.6)
);
return Times_johansen(x, 0, 1);
// 输出:返回包含 7 个元素的 Johansen 协整检验结果数组