28 KiB
数学函数 / 时间序列分析
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"]:参数估计结果,,第一项为1;Ret["MA"]:参数估计结果,,第一项为1;Ret["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 协整检验结果数组