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

37 KiB
Raw Blame History

数学函数 / 回归 / 回归检验

regress_ridge(y, x, k, constant, alpha)

声明:function

执行岭回归并返回回归系数、残差和统计检验结果

参数 类型 说明
y array of real 被解释变量序列
x array of real 解释变量矩阵,每列对应一个解释变量
k real|array 可选。岭参数或岭参数序列
constant boolean 可选。是否包含常数项,默认 true
alpha real 可选。显著性水平,默认 0.05

返回:array

示例

范例01:使用指定岭参数执行回归

y := array(49.0, 50.2, 50.5, 48.5);
x := array(
    (1.0, 2.0),
    (2.0, 1.0),
    (3.0, 4.0),
    (4.0, 3.0));
return regress_ridge(y, x, 0.1, true, 0.05);

boxcox(y)

声明:function

在做线性回归的过程中,不可观测的误差可能是和预测变量相关,于是给线性回归的最小二乘法估计系数的结果带来误差,为了解决这样的方差齐性问题,所以考虑对相应应变量做Box-Cox变换,变换之后,可以一定程度上减小不可观测的误差和预测变量的相关性

参数 类型 说明
y array of real 因变量序列,为一维数组类型

返回:array

示例

data := rand(100);
return boxcox(data);

NW_Adjustment_Simplification(y, alpha, al)

声明:function

在单因子有效性的检验中,进行检验的往往是组合收益率序列或者因子收益率序列在 时序上是否显著异于零,这一过程本身并不涉及回归过程,因此无法直接使用上一节中介绍的调整方法。然而,我们知道组合收益或者因子收益在时序上极有可能存在异方差和自相关特性,因此在计算序列标准误时,必须对其进行 Newey-West 调整,从而得到其标准差的一致性估计,进而得到更稳健的 t 值。 关于这个问题Bali et al(2016)指出对于单个因子收益率序列的显著性检验,我们可以将其转换为一个简单的线性回归模型:将 1 作为自变量,将因子收益率作为因变量,进行回归得到残差变量。此时残差项即为因子收益率减去它在时间序列上的均值。把残差项和X=1代入即可得到简化的结果,对Q的估计形式如下:QNW-Simple=1Tt=1Tet2+l=1Lt=l+1Twletet-l 其中,wl=1-l1+L 这里的Q实际上不是矩阵,只是一个数。 将Q代入Cov[β*]中就可以求出收益率方差的估计,之后就可以进行T检验了。σ2=QNW-Simple/T

参数 类型 说明
y array 一维数字数组, 因变量
alpha float 实数,显著性水平,应为0到1之间的值,默认0.05
al any 整数,自相关最大滞后阶数,可缺省,默认用Newey and West (1994)?提出的方法计算,至少为1

返回:array

Regress_AdjustedR2(r, t, k)

声明:function

计算回归方程经调整的R平方,考虑由于加入新的解释变量而产生自由度的损失

参数 类型 说明
r any 回归方程的拟合优度R平方,实数类型;
t any 样本的容量,整数类型;
k any 自变量的个数;

返回:any

Regress_AicAndSbic(u, k, t)

声明:function

信息准则函数,判断序列的最佳滞后阶数,分别计算AIC和SBIC统计量,并把结果赋值到一个一维数组,第一个是Aic值,第二个Sbic值。当选择最佳滞后阶数时,统计量越小越好。 AIC和SBIC的表达式如下所示: 其中:T为样本容量;k为自变量个数;u为残差

参数 类型 说明
u array 回归方程的残差序列,为一维数组类型;
k any 解释变量的个数;
t any 样本的容量,整数类型;

返回:array

Regress_Binary(y, x, extimation, methods, constant, alpha)

声明:function

二元离散选择模型。返回结果有方程的系数、负2倍对数似然值和Wald检验(原假设为解释变量对被解释变量影响不显著,检验包含统计量、P值和原假设的值1表示接受原假设,0表示拒绝原假设)

参数 类型 说明
y array 二元离散被解释变量序列,为一维数组类型
x array 解释变量矩阵,每一列为一个解释变量,为二维数组类型
extimation string 模型选择,字符串类型,"logit"或"probi"
methods any 0:单纯形法,1:转轴法,2:模式搜索法, 3:拟牛顿下山法,一般使用3方法
constant bool object
alpha float 显著性水平,实数类型,取值在0-1之间,缺省时只输出模型的估计

返回:array

Regress_CMLS(y, x, u, constant)

声明:function

线性回归方程的最小二乘法参数估计(可选择是否包含常数项),返回回归方程的系数,如果有常数项则排在第一项

参数 类型 说明
y array 被解释变量序列,为一维数组类型
x array 解释变量矩阵,为二维数组类型,每一列为一个解释变量
u array 残差序列,为一维数组类型,变参
constant bool 是否包含常数项,为布尔类型,缺省为true

返回:array

Regress_Constraint(y, x, constant, a, b, aeq, beq, alpha, options, lb, ub)

声明:function

线性约束最小二乘回归

参数 类型 说明
y array 被解释变量序列,为一维数组类型,不可缺省
x array 解释变量矩阵,为二维数组类型,每一列为一个自变量,不可缺省
constant bool object
a array 不等式约束二维数字数组,不可缺省
b array 不等式约束一维数字数组,不可缺省
aeq array 等式约束二维数字数组
beq array 等式约束一维数字数组
alpha float 显著性水平,实数或整数,在0与1之间,缺省时只做参数的估计
options any 方法选择: 0 残差平方和最小;1 方差最小
lb array 下界约束一维数组
ub array 上界约束一维数组

返回:array

Regress_DWTest(u)

声明:function

德宾-沃森检验:检验随机误差项是否存在一阶自相关。结果返回DW统计量 DW统计量:(一般认为值在2附近,则随机误差项不存在自相关)

参数 类型 说明
u array 方程残差,为一维数组类型;

返回:any

Regress_FTest(y, u, k, alpha)

声明:function

在1-alpha的置信水平下,方程线性关系的置信检验:F检验;返回的结果是一个数组,第一个数为F统计值,二为p值,三为原假设的值(0表示拒绝,1表示接受) F-检验统计量: 其中:RSS是残差平方和,即; ESS是回归平方和,因变量的拟合值与因变量均值的差的平方,即; TSS是总平方和 TSS=RSS+ESS; 原假设:(为方程的系数)表示回归方程不显著

参数 类型 说明
y array 被解释变量序列,为一维数组类型;
u array 回归方程的残差序列,为一维数组类型;
k any 自变量的个数;
alpha float 1-alpha为置信水平,一般为5%,也有1%和10%,数值越小,判断越严格;

返回:array

Regress_GRStest(alpha_values, residual_matrix, factor_matrix)

声明:function

执行 GRS 检验

参数 类型 说明
alpha_values array 截距项或 alpha 向量
residual_matrix array 回归残差矩阵
factor_matrix array 因子收益或因子暴露矩阵

返回:array

Regress_HettestSpearman(y, x, alpha, constant)

声明:function

基于等级相关系数的异方差检验

参数 类型 说明
y array 数组,因变量,一维数字数组
x array 数组,自变量,二维数字数组
alpha float 实数,显著性水平,值域为[0,1]
constant bool object

返回:array

Regress_JBTest(y, alpha)

声明:function

在1-alpha的置信水平下,Jarque-Bera检验:检验y是否符合正态分布;返回一个数组,第一个数为Jarque-Bera统计值,二为p值,三为原假设的值(0表示拒绝,1表示接受); Jarque-Bera统计量: 其中:S、K分别表是随即变量的偏度和峰度;T:样本容量; Jarque-Bera统计量服从渐进的分布。 原假设:随机序列为正态分布

参数 类型 说明
y array 随即序列,接受检验的序列,一维数组类型
alpha float 1-alpha为置信水平,一般为5%,也有1%和10%,数值越小,判断越严格;

返回:array

Regress_Logistic(y, x, constant, alpha)

声明:function

logit二元离散选择模型。返回结果有方程的系数、负2倍对数似然值和Wald检验(原假设为解释变量对被解释变量影响不显著,检验包含统计量、P值和原假设的值1表示接受原假设,0表示拒绝原假设)

参数 类型 说明
y array 因变量序列,为一维数组类型;
x array 自变量矩阵,为二维数组类型,每一列为一个自变量;自变量x的长度应小于等于因变量y,否则会报错,最好等于,若小于会对结果有影响
constant bool object
alpha float 显著性水平,一般为5%,也有1%和10%,数值越小,判断越严格;默认为0.05

返回:array

Regress_MLS(y, x, u)

声明:function

线性回归方程的最小二乘法参数估计(包含常数项),返回回归方程的系数,常数项排在第一项

参数 类型 说明
y array 被解释变量序列,为一维数组类型
x array 解释变量矩阵,为二维数组类型,每一列为一个解释变量
u array 残差序列,为一维数组类型,变参

返回:array

Regress_NLM(func, x, y, initial)

声明:function

多元非线性回归,采用Marquardt方法求多元非线性方程的最小二乘回归系数

参数 类型 说明
func string 回归方程函数名,为字符串类型
x array 解释变量矩阵,为二维数组类型,每一列为一个解释变量
y array 被解释变量序列,为一维数组类型
initial array 估计参数初始值,一维数字数组

返回:array

示例

x := array(
    (273.100, 2577.400),
    (339.000, 3496.200),
    (396.900, 4283.000),
    (429.900, 4838.900),
    (441.900, 5160.300),
    (438.400, 5425.100),
    (432.200, 5854.020),
    (434.000, 6280.000),
    (437.000, 6859.600),
    (433.500, 7702.800),
    (438.700, 8472.200),
    (455.800, 9421.600),
    (464.000, 10493.000),
    (471.000, 11759.500),
    (493.600, 13785.800)
);
y := array(
    2110.810,
    2851.340,
    3537.570,
    3919.470,
    4185.640,
    4331.600,
    4615.900,
    4998.000,
    5309.000,
    6029.880,
    6510.940,
    7182.100,
    7942.880,
    8696.550,
    9997.470
);
x := x[:, 0:1];
return Regress_NLM(
    "Demo_Regress_NLM_CallBack",
    x,
    y,
    array(-0.2, 0.2, 0.8)
);
// 输出:返回非线性回归结果数组

function Demo_Regress_NLM_CallBack(beta, x);
begin
    return beta[0] * (x[0] ^ beta[1]) * (x[1] ^ beta[2]);
end;

Regress_pri(y, x, exps, alpha)

声明:function

主成分回归,利用解释变量(Z 分数标准化)进行主成分分析降维得到的主成分,来对被解释变量(Z分数标准化)进行回归,进而消除多重共线性

参数 类型 说明
y array 被解释变量序列,为一维数组类型
x array 解释变量矩阵,为二维数组类型,每一列为一个解释变量
exps float 主成分累计贡献率,作为选取主成分数目的依据,当为小数时,代表累计贡献率的阀值,比如0.85,当为整数时,代表取的主成分的个数,比如2表示取前2个主成分。
alpha float 显著性水平,实数或整数,在01之间

返回:array

示例

y := array(1.0, 2.0, 2.5, 4.0, 5.0);
x := array(
    (1.0, 1.1),
    (2.0, 1.9),
    (3.0, 3.2),
    (4.0, 3.8),
    (5.0, 5.1)
);
return Regress_pri(y, x, 0.85, 0.05);
// 输出:返回包含 6 个元素的主成分回归结果数组

Regress_QRlsq(y, x, u, constant)

声明:function

线性回归方程基于QR分解的最小二乘法参数估计(可选择是否包含常数项),返回回归方程的系数,如果有常数项则排在第一项

参数 类型 说明
y array 因变量序列,为一维数组类型;
x array 自变量矩阵,为二维数组类型,每一列为一个自变量;
u array 残差序列,为一维数组类型;
constant bool object

返回:array

Regress_RSquare(y, u, weight, dtype)

声明:function

计算回归方程的拟合程度R平方,可适用与一元或多元的线性回归

参数 类型 说明
y array 因变量序列,为一维数组类型;
u array 回归方程的残差序列,为一维数组类型;
weight array 一维数字数组,权重
dtype any 整型,返回数据类型

返回:array

Regress_Stepwise(y, x, a_e, a_d)

声明:function

逐步回归,默认的回归方程包含常数项,程序返回的结果:ret["x"]为筛选的变量的下标,ret["regress"]为筛选变量与因变量进行回归的结果

参数 类型 说明
y array 因变量序列,为一维数组类型
x array 自变量矩阵,为二维数组类型,每一列为一个解释变量
a_e float 选取变量的显著性水平,默认为0.05,为实数类型
a_d float 剔除变量的显著性水平,默认为0.1,为实数类型

返回:array

Regress_TTest(x, a, u, k, alpha, constant)

声明:function

在1-alpha的置信水平下,n元线性回归变量系数的置信检验:T检验;返回的结果是一个数组,第一个数为T统计值,二为p值,三为原假设的值(0表示拒绝,1表示接受) n元线性回归 T-检验统计量: 其中:为方程系数的估计,T为样本容量,k为自变量个数,X为常量加自变量的矩阵,其中; 原假设:(为方程的系数)表示回归方程不显著

参数 类型 说明
x array 变量矩阵,为二维数组类型,每一列为一个解释变量;
a array 回归系数,为一维数组类型;
u array 方程残差,为一维数组类型;
k any 自变量个数,为整数类型;
alpha float 1-alpha为置信水平,一般为5%,也有1%和10%,数值越小,判断越严格;
constant bool object

返回:array

Regress_TTest_NW(x, a, u, alpha, constant, al, v_ols)

声明:function

用NW调整对回归系数进行T检验。此调整用于当残差或者因变量(两者等价)存在异方差性并且存在自相关性时,利用OLS回归后对回归系数的协方差矩阵进行NW调整计算,得到每个系数NW调整后的标准误,再进行T检验。公式如下QNW=1Tt=1Tet2XtXt'+l=1Lt=l+1Twletet-lXtXt-l'+Xt-lXt' 其中,wl=1-l1+L 其中e为残差序列,Xi为X第i行的转置,L为自相关最大滞后阶数,Newey and West (1994)?提出可以用下面这个公式自动计算L=4*(T100)2/9 之后代入下式计算出回归系数的协方差矩阵,它的对角元即为每个系数的方差Covβ*=X'X-1X'σ2ΩXX'X-1=TX'X-1QNWX'X-1

参数 类型 说明
x array 二维数字数组, 自变量,不需要包含全1列
a array 一维数字数组,回归系数, 有常数项回归时,a 为 常数项系数 union 自变量系数,;无常数项回归时,a 为 自变量系数
u array 一维数字数组,残差序列,一维数字数组
alpha float 实数,显著性水平,应为0到1之间的值,默认0.05
constant bool object
al any 整数,自相关最大滞后阶数,可缺省,默认用Newey and West (1994)?提出的方法计算,至少为1
v_ols array 二维数字数组,回归系数协方差矩阵,中间计算变量,无返回,但后续可以直接调用

返回:array

Regress_TTest_RWLS(x, a, u, k, alpha, constant, weight, restrictiveness)

声明:function

T检验,在alpha的置信水平下,n元线性回归变量系数的显著性检验 原假设:回归方程系数不显著。带约束的加权最小二乘 RWLS 模型,对回归系数进行显著性检验, 适用于以下

参数 类型 说明
x array 一维数字数组,自变量矩阵,注意:含常数项的回归不需要给全1列
a array 一维数字数组,方程系数;有常数项时,a 为 常数项系数 union 自变量系数;无常数项时,a 为 自变量系数
u array 一维数字数组,残差序列
k any 整型,自变量的个数;k = length(a)-constant;有常数项回归时,k := mcols(x);;无常数项回归,k := mcols(x)-1;
alpha float 实数,显著性水平
constant bool Bool,是否为含常数项回归
weight array 数组,加权回归的权重,默认等权重
restrictiveness array 数组,线性约束,只需要给对应于回归系数个数长度的一维数组,默认无约束;例如:有5个系数,分别为x0,x1,x2,x3,x4;约束为: x1+x2+3x4=3;则所给的参数为:array(0,1,1,0,3)

返回:array

Regress_TTest_White(x, a, u, alpha, constant, v_ols)

声明:function

用White调整对回归系数进行T检验。此调整用于当残差或者因变量(两者等价)存在异方差性但不存在自相关性时,利用OLS回归后对回归系数的协方差矩阵进行White调整计算,得到每个系数White调整后的标准误,再进行T检验。公式如下QWhite=1Ti=1Tei2XiXi' 其中e为残差序列,Xi为X第i行的转置 之后代入下式计算出回归系数的协方差矩阵,它的对角元即为每个系数的方差Covβ*=X'X-1X'σ2ΩXX'X-1=TX'X-1QWhiteX'X-1

参数 类型 说明
x array 二维数字数组, 自变量,不需要包含全1列
a array 一维数字数组,回归系数, 有常数项回归时,a 为 常数项系数 union 自变量系数,;无常数项回归时,a 为 自变量系数
u array 一维数字数组,残差序列,一维数字数组
alpha float 实数,显著性水平,应为0到1之间的值,默认0.05
constant bool object
v_ols array 二维数字数组,回归系数协方差矩阵,中间计算变量,无返回,但后续可以直接调用

返回:array

Regress_VIF(x)

声明:function

x的多重共线性分析,输出方差扩大因子VIF指标和条件数,一般VIF大于10,表明存在严重的多重共线性;5<VIF<10,表明存在多重共线性;如果VIF小于5的话,表明这种回归模型的多重共线性可以接受。用条件数判断多重共线性的准则 0<k<10时,设计矩阵X没有多重共线性; 10≤k<100时,认为X存在较强的多重共线性; 当k≥100时,则认为存在严重的多重共线性

参数 类型 说明
x array 数据,每一列是一个指标

返回:array

Regress_VIFR2(x, w, constant)

声明:function

vif分析增强

参数 类型 说明
x any 表达式,自变量
w any 表达式,权重
constant bool object

返回:array

Regress_White(y, x, crr, alpha)

声明:function

包含无交叉项和交叉项两种,用于检验回归方程的异方差性,原假设为不存在异方差(Hypothesis的值0表示拒绝,1表示接受)

参数 类型 说明
y array 被解释变量,为一维数组类型
x array 解释变量,为二维数组类型
crr any 交叉项,0为无交叉项,1为有交叉项
alpha float 1-alpha为置信水平,一般为5%,也有1%和10%,数值越小,判断越严格;

返回:array

Regress_WLS(y_values, x_values, weights, residuals)

声明:function

执行加权最小二乘回归并输出残差

参数 类型 说明
y_values array 因变量样本
x_values array 自变量样本
weights array 权重序列
residuals any 接收残差序列

返回:array

regression(y, x, alpha, constant, options)

声明:function

线性回归方程的最小二乘法参数估计及检验(可选择是否包含常数项),返回结果有回归系数、R平方、调整R平方、残差序列、残差检验、F检验、T检验、DW统计量和信息准则

参数 类型 说明
y array,tablearray
x array,tablearray
alpha real
constant bool
options array,tablearray

返回:array,tablearray

示例

y := array(0.001, 0.564, 0.193, 0.809, 0.585, 0.48, 0.35, 0.896, 0.823, 0.747);
x := array(
    (0.174, 0.859),
    (0.711, 0.514),
    (0.304, 0.015),
    (0.091, 0.364),
    (0.147, 0.166),
    (0.989, 0.446),
    (0.119, 0.005),
    (0.009, 0.378),
    (0.532, 0.571),
    (0.602, 0.607));
// u作为变参返回
return regression(y, x, 0.05, 1);

Regression_OLS_NW(y, x, constant, alpha, al)

声明:function

NW调整的OLS回归,此调整用于当残差或者因变量(两者等价)存在异方差性并且自相关性时,利用OLS回归后对回归系数的协方差矩阵进行NW调整计算,得到每个系数White调整后的标准误,再进行T检验。T检验部分相关公式详见Regress_TTest_NW,回归系数的OLS解如下β*=(X'X)-1X'y 其余部分定义与普通最小二乘OLS一致

参数 类型 说明
y array 一维数字数组, 因变量
x array 二维数字数组, 自变量,不需要包含全1列
constant bool object
alpha float 实数,显著性水平,应为0到1之间的值,默认0.05
al any 整数,自相关最大滞后阶数,可缺省,默认用Newey and West (1994)?提出的方法计算,至少为1

返回:array

Regression_OLS_White(y, x, constant, alpha)

声明:function

White调整的OLS回归,此调整用于当残差或者因变量(两者等价)存在异方差性但不存在自相关性时,利用OLS回归后对回归系数的协方差矩阵进行White调整计算,得到每个系数White调整后的标准误,再进行T检验。T检验部分相关公式详见Regress_TTest_White,回归系数的OLS解如下β*=(X'X)-1X'y 其余部分定义与普通最小二乘OLS一致

参数 类型 说明
y array 一维数字数组, 因变量
x array 二维数字数组, 自变量,不需要包含全1列
constant bool object
alpha float 实数,显著性水平,应为0到1之间的值,默认0.05

返回:array

Regression_WLS(y, x, alpha, constant, wtype, m1, m2, steps, wweight)

声明:function

加权最小二乘法回归, WType为0时,必须给出m1 权重系数下限,m2 权重系数上限,steps 步长,用于计算最优权重,WType为1时,必须给出wweight权重向量

参数 类型 说明
y array 因变量,一维数字数组
x array 自变量,二维数字数组
alpha float 显著性水平,实数
constant bool object
wtype bool object
m1 float 权重系数下限,实数
m2 float 权重系数上限,实数
steps float 步长,实数
wweight array 权重向量,一维数字数组,当WType设置为1时,需要此参数的输入;返回结果:

返回:array

Robustfit_M(y, x, alpha, constant, wfun, tune, options)

声明:function

基于M估计的稳健回归及其检验

参数 类型 说明
y array 一维数字数组,因变量
x array 二维数字数组,自变量
alpha float 实数,显著性水平
constant bool object
wfun string 字符串,权重函数
tune float 实数,调节常数
options array 可选。为数组类型,格式为array( 'maxiter':最大迭代次数, 'tol':标准误差, 'ifregtest':是否返回回归检验),默认值为array('maxiter':50, 'tol':1e-6, 'ifregtest':True)。其中'maxiter'、'tol'与迭代优化相关,分别表示最大迭代次数与相邻两次迭代的标准误差;'ifregtest'是布尔类型,控制输出结果是否返回回归检验,若为真,其回归检验指标使用加权最小二乘的回归检验,可参考Regression_WLS。

返回:array