Files
playbook/docs/tsl/codegen/dotnet/runtime/math_stats.md
T

1919 lines
78 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 运行时 / 数学与统计
## `Anova_Bartlett(y, alpha)`
在1-alpha的置信水平下,Bartlett方法检验方差齐性;B-Stat为统计值,P-Value为p值,df为自由度,Hypothesis为是否接受原假设 模型表达: Bartlett检验思想来源于几何平均数小于或等于算术平均数 原假设:是水平个数 ,其中 修正的Bartlett检验:
| 参数 | 类型 | 说明 |
| ------- | ----- | -------------------------------------------- |
| `y` | array | 数据矩阵,为二维数组类型,每一行表示一个水平 |
| `alpha` | float | 显著性水平,实数或整数,在01之间 |
返回:array
## `Anova_Levene(y, alpha)`
在1-Alpha的置信水平下,Levene方法检验方差齐性,和Bartlett检验不同的是,Levene检验不要求总体具有正态性。返回一个数组,F-Stat为统计值,P-Value为p值,df1df2为自由度,Hypothesis为是否接受原假设 模型表达: 原假设:是水平个数 ,其中是观察数目,是水平数目
| 参数 | 类型 | 说明 |
| ------- | ----- | -------------------------------------------- |
| `y` | array | 数据矩阵,为二维数组类型,每一行表示一个水平 |
| `alpha` | float | 显著性水平,实数或整数,在01之间 |
返回:array
## `Anova_Single(y, alpha)`
在1-alpha置信水平下,在假设服从正态分布,且方差齐性,样本之间独立的基础上,判断各水平的均值是否显著相等 模型表达: , 其中:效应平方和:,误差平方和: 总离差
| 参数 | 类型 | 说明 |
| ------- | ----- | -------------------------------------------- |
| `y` | array | 数据矩阵,为二维数组类型,每一行表示一个水平 |
| `alpha` | float | 显著性水平,实数或整数,在01之间 |
返回:array
## `Anova_Twice(y, alpha)`
在1-alpha的置信水平下,进行双因子方差分析,假设每一种情况都服从一个正态分布,且方差相等,数据独立,判断各水平的均值是否显著相等 模型表达: 有A,B两个因素,因素A有r个水平,B有s个水平,对于A,B每一个组合(Ai,Bj)都进行t次试验,得到结果: 因素B 因素A B1 B2 … Bs A1 X111, X112,…,X11t X121, X122,…,X12t … X1s1, X1s2,…,X1st A2 X211, X212,…, X21t X221, X222,…, X22t … X2s1, X2s2,…, X2st … … … … Ar Xr11, Xr12,…, Xr1t Xr21, Xr22,…, Xr2t … Xrs1, Xrs2,…, Xrst 设:且相互独立 ,其中,是水平Ai的效应,是水平Bj的效应,称为水平Ai和Bj的交互效应。, 原假设:,, 现构造了3个F统计量来分别检验假设,原理略
| 参数 | 类型 | 说明 |
| ------- | ----- | ----------------------------------------------------------------------------------------------- |
| `y` | array | 数据矩阵,为二维数组类型,每rep行,每一列表示一个交叉项 |
| `alpha` | float | 显著性水平,实数或整数,在01之间;Rep:每一个交叉项,做rep次试验,rep=1时,没有交叉效应为0的假设 |
返回:array
## `arma(series, p, q)`
自回归移动平均模型,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
### 示例
```tsl
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);
```
## `Cluster_Kmeans(samples, class_count, options)`
执行 K-means 聚类。
| 参数 | 类型 | 说明 |
| ------------- | ----- | ------------------------------------------------------ |
| `samples` | array | 样本矩阵 |
| `class_count` | any | 聚类数量 |
| `options` | array | 参数表;常见键包括 `maxiter``tol``distance``out` |
返回:array
## `Cluster_ward(samples)`
执行 Ward 聚类。
| 参数 | 类型 | 说明 |
| --------- | ----- | -------- |
| `samples` | array | 样本矩阵 |
返回:array
## `correlationMatrix(a1, t)`
相关系数矩阵求解
| 参数 | 类型 | 说明 |
| ---- | ----- | ---- |
| `a1` | array | |
| `t` | float | |
返回:array
### 示例
```tsl
a := rand(4,3);
correlationMatrix(a,1);
```
## `Corr_partial(x, y, z, _type)`
偏相关系数,返回x和y在控制变量z下的偏相关系数,行为样本,列为指标
| 参数 | 类型 | 说明 |
| ------- | ----- | ---------------------------------------------------------------------------------------------------------------- |
| `x` | array | 变量一,二维实数数组 |
| `y` | array | 变量二,二维实数数组 |
| `z` | array | 控制变量,二维实数数组 |
| `_type` | any | 1:pearson偏相关;2:Spearman偏相关;tail:假设检验的三种类型,字符串,取值为both、left和right,缺省是只输出相关系数 |
返回:any
## `covariance(a)`
计算协方差矩阵
| 参数 | 类型 | 说明 |
| ---- | ----- | ---- |
| `a` | array | |
返回:any
### 示例
```tsl
a := rand(4,3);
covariance(a);
```
## `Eigen_Jacobi(matrix, eigen_values, eigen_vectors)`
用 Jacobi 方法计算矩阵特征值和特征向量。
| 参数 | 类型 | 说明 |
| --------------- | ----- | ---------------- |
| `matrix` | array | 待分解矩阵 |
| `eigen_values` | any | 接收特征值数组 |
| `eigen_vectors` | any | 接收特征向量矩阵 |
返回:void
## `eye(size)`
生成单位矩阵。
| 参数 | 类型 | 说明 |
| ------ | ---- | ------------------------------------------ |
| `size` | any | 行数和列数;`eye(3)` 生成 `3 x 3` 单位矩阵 |
返回:array
## `factor(x, var_value)`
对样本数据进行因子分析,分别采用主成分分析法估计因子载荷矩阵(因子载荷矩阵不唯一),方差最大法做载荷矩阵的正交旋转矩阵,回归方法计算因子得分
| 参数 | 类型 | 说明 |
| ----------- | ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `x` | array | 二维维实数数组,表示样本矩阵; |
| `var_value` | float | 实数,表示方差贡献率,控制因子个数;;返回结果:ssRet\["Correlation Matrix",0\]:样本数据的相关系数矩阵;Ret\["kmo",0\]:KMO检验值;0.9<KMO: 非常适合;0.8<KMO<0.9:适合;0.7<KMO<0.8:一般; 0.6<KMO<0.7:适合度较低;KMO<0.6:适合度很低;ret\["Total Variance Explained",0\]:特征值、方差贡献率、累计方差贡献率等信息;ret\["Component Matrix",0\]:因子载荷矩阵;ret\["Communalities",0\]:共同变量度,即载荷矩阵行的平方和;ret\["thogonal matrix",0\]:正交变换后的载荷矩阵;ret\["Rotation matrix",0\]:旋转矩阵;ret\["Factor score",0\]:因子得分 |
返回:array
### 示例
```tsl
stockn:=getBk("上证A股");
vo:=BackUpSystemParameters();
setSysParam(pn_date(),today());
sto:=array();
for n_i:=0 to length(stockn)-1 do
begin
setSysParam(pn_stock(),stockn[n_i]);
if isStockGoMarket(intToDate(20011231)) then
sto[length(sto)]:=stockn[n_i];
end
st:=array2Str(sto,";");
a1:= query("",st,true,"","代码",defaultStockId(),
"主营业务利润",report(46008,20101231),
"利润总额",report(46024,20101231),
"净利润",report(46033,20101231),
"加权每股收益",report(42003,20101231),
"每股净资产",report(42006,20101231),
"加权净资产收益率",report(42013,20101231),
"资产总计",report(44059,20101231),
"股本",report(44099,20101231));
RestoreSystemParameters(vo);
a:=zeros(mrows(a1),mcols(a1));
a[:,:]:=a1[:,:];
stock:=a[:,0];
data:=a[:,1:8];
//取得纯数据矩阵
br:=factor(data,0.85); //
br;
```
## `histc(a, b)`
端点定位频数,判断序列a 中各个元素在b中各个段位中的频数
| 参数 | 类型 | 说明 |
| ---- | ----- | -------- |
| `a` | array | 一维数组 |
| `b` | array | 一维数组 |
返回:array
### 示例
```tsl
a:=rand(1000)*5;
b:=array(0,1,2,3,4,5);
histc(a,b);
```
## `Hypoth_LSUTest(mx, s, n, u, tail, alpha)`
单个或两个总体大样本的均值检验,即大样本U检验,返回的结果是一个数组,第一个数为统计值,二为p值,三为原假设的值(0表示拒绝,1表示接受) 模型表达 单个总体大样本的均值原假设:tail取值both:;left:;right 两个总体大样本的均值假设:tail取值both:;left;right: 检验统计量: 或 其中:x为样本x的均值,y为样本y的均值,为正态总体x方差,为正态总本y方差,m,n分别为样本x和y的容量s
| 参数 | 类型 | 说明 |
| ------- | ------ | ---------------------------------------------------------- |
| `mx` | array | 样本均值数组,第一行为样本1,第二行为样本2,为一维数组类型 |
| `s` | any | 样本方差数组,第一行为样本1,第二行为样本2,为一维数组类型 |
| `n` | array | 样本容量,第一行为样本1,第二行为样本2,为一维数组类型 |
| `u` | float | 单个总体时,为假设检验均值,两个总体时,为均值差 |
| `tail` | string | 假设检验类型 |
| `alpha` | float | 显著性水平,实数或整数,在01之间 |
返回:array
## `Hypoth_PSignTest(x, pi, q0, tail, alpha)`
非参数检验-配对样本符号检验,配对样本的符号检验 要求样本矩阵中两个样本是配对出现的 可以按照实际需求选择双侧或单侧检验
| 参数 | 类型 | 说明 |
| ------- | ------ | --------------------------------------- |
| `x` | array | 一维数字数组,样本矩阵 |
| `pi` | float | 实数,分位点 |
| `q0` | float | 实数,检验值 |
| `tail` | string | 字符串,双侧检验 or 左侧检验 or 右侧检验 |
| `alpha` | float | 实数,显著性水平 |
返回:array
## `Hypoth_SignTest(x, pi, q0, tail, alpha)`
非参数检验-符号检验。对单样本进行符号检验 可以按照实际需求选择双侧或单侧检验 其中,检验变量服从二项分布
| 参数 | 类型 | 说明 |
| ------- | ------ | --------------------------------------------------------------------------------------- |
| `x` | array | 样本序列,为一维数字数组类型 |
| `pi` | float | 分位点,为实数类型 |
| `q0` | float | 检验值,即检验分位点的值,为实数类型 |
| `tail` | string | 假设检验的三种类型,both(双侧检验),left(左侧检验),right(右侧检验),为字符串类型 |
| `alpha` | float | 显著性水平,在0-1之间,为实数类型 |
返回:array
## `Hypoth_SNDTest(x, d2, tail, alpha)`
单个正态总体方差的卡方检验,返回的结果是一个数组,第一个数为统计值,二为p值,三为原假设的值(0表示拒绝,1表示接受) 模型表达: 原假设:tail取值both:;left:;right: 检验统计量: 其中:为假设检验的方差,n为样本容量,s为样本标准差
| 参数 | 类型 | 说明 |
| ------- | ------ | -------------------------------- |
| `x` | array | 样本序列,为一维数组类型 |
| `d2` | float | 假设检验的方差,为实数类型 |
| `tail` | string | 假设检验类型 |
| `alpha` | float | 显著性水平,实数或整数,在01之间 |
返回:array
## `Hypoth_SNUTest(x, u, d, tail, alpha)`
单个正态总体的均值检验,分为标准差未知和已知两个情况,返回结果是一个数组,第一个数为统计值,二为p值,三为原假设的值(0表示拒绝,1表示接受) 模型表达: 原假设:tail取值both:;left:;right: 检验统计量:分为两种情况 1)标准差已知时,即d有取值,为U检验: 2)标准差未知时,即d取nil,为T检验: 其中:x为样本均值,为检验均值,为正态总体标准差,n为样本容量,s为样本标准差
| 参数 | 类型 | 说明 |
| ------- | ------ | --------------------------------------------------- |
| `x` | array | 样本序列,为一维数组类型 |
| `u` | float | 假设检验均值,为实数类型 |
| `d` | float | 正态总体的标准差,为实数类型,若未知,则输入nil |
| `tail` | string | 假设检验的三种类型,字符串,取值为both、left和right |
| `alpha` | float | 显著性水平,实数或整数,在01之间 |
返回:array
## `Hypoth_TNDTest(x, tail, alpha)`
两个正态总体方差比的F检验,返回的结果是一个数组,第一个数为统计值,二为p值,三为原假设的值(0表示拒绝,1表示接受) 模型表达: 原假设:tail取值both:;left:;right: 检验统计量: 其中:Sx为x的样本标准差,Sy为y的样本标准差
| 参数 | 类型 | 说明 |
| ------- | ------ | ---------------------------------------------------------- |
| `x` | array | 样本序列矩阵,第一行为样本1,第二行为样本2,为二维数组类型 |
| `tail` | string | 假设检验类型 |
| `alpha` | float | 显著性水平,实数或整数,在01之间 |
返回:array
## `Hypoth_TNUTest(x, uu, d, tail, alpha, isequal)`
两个正态总体均值差的检验,分为标准差未知和已知两个情况,返回的结果是一个数组,第一个数为统计值,二为p值,三为是否接受原假设 模型表达: 原假设:tail取值both:;left:;right: 检验统计量: 标准差已知时,即d数组有取值,为u检验: 标准差未知时,即d取(nil,nil),为t检验:, 其中:为样本x的均值,为样本y的均值,,为正态总体x,y的方差,分别为样本x和y的容量,为联合样本标准差
| 参数 | 类型 | 说明 |
| --------- | ------ | ------------------------------------------------------------- |
| `x` | array | 样本序列矩阵,为二维数组类型,第一行为样本1,第二行为样本2 |
| `uu` | float | 假设检验均值差,为实数类型 |
| `d` | float | 正态总体的标准差数组,为一维数组类型,若未知,则输入(nil,nil) |
| `tail` | string | 假设检验的三种类型,字符串,取值为both、left和right |
| `alpha` | float | 显著性水平,实数或整数,在01之间 |
| `isequal` | bool | object |
返回:array
## `ig_Chebyshev(a, b, call_back, v)`
数值计算相关函数。
| 参数 | 类型 | 说明 |
| ----------- | ------ | ---- |
| `a` | any | |
| `b` | any | |
| `call_back` | string | |
| `v` | any | |
返回:any
## `ig_Gauss(a, b, call_back, v)`
数值计算相关函数。
| 参数 | 类型 | 说明 |
| ----------- | ------ | ---- |
| `a` | any | |
| `b` | any | |
| `call_back` | string | |
| `v` | any | |
返回:any
## `ip_Aitken_A(x, y, xv, yv)`
数值计算相关函数。
| 参数 | 类型 | 说明 |
| ---- | ----- | ---- |
| `x` | array | |
| `y` | array | |
| `xv` | any | |
| `yv` | any | |
返回:any
## `ip_Aitken_B(x0, h, y, xv, yv)`
数值计算相关函数。
| 参数 | 类型 | 说明 |
| ---- | ----- | ---- |
| `x0` | float | |
| `h` | float | |
| `y` | array | |
| `xv` | any | |
| `yv` | any | |
返回:any
## `ip_Hermite_A(x, y, dy, xv, yv)`
数值计算相关函数。
| 参数 | 类型 | 说明 |
| ---- | ----- | ---- |
| `x` | array | |
| `y` | any | |
| `dy` | any | |
| `xv` | any | |
| `yv` | any | |
返回:any
## `ip_Hermite_B(x0, h, y, dy, xv, yv)`
数值计算相关函数。
| 参数 | 类型 | 说明 |
| ---- | ----- | ---- |
| `x0` | any | |
| `h` | any | |
| `y` | array | |
| `dy` | array | |
| `xv` | float | |
| `yv` | any | |
返回:any
## `ip_Lagrangian_A(x, y, xv, yv)`
数值计算相关函数。
| 参数 | 类型 | 说明 |
| ---- | ----- | ---- |
| `x` | array | |
| `y` | any | |
| `xv` | any | |
| `yv` | any | |
返回:any
## `ip_Lagrangian_B(x0, h, y, xv, yv)`
数值计算相关函数。
| 参数 | 类型 | 说明 |
| ---- | ----- | ---- |
| `x0` | float | |
| `h` | float | |
| `y` | array | |
| `xv` | any | |
| `yv` | any | |
返回:any
## `ip_Parabola_A(x, y, xv, yv)`
数值计算相关函数。
| 参数 | 类型 | 说明 |
| ---- | ----- | ---- |
| `x` | array | |
| `y` | array | |
| `xv` | any | |
| `yv` | any | |
返回:any
## `ip_Parabola_B(x0, h, y, xv, yv)`
数值计算相关函数。
| 参数 | 类型 | 说明 |
| ---- | ----- | ---- |
| `x0` | float | |
| `h` | float | |
| `y` | array | |
| `xv` | any | |
| `yv` | any | |
返回:any
## `ip_Spline_A(x, y, dy0, dyn_1, xv, yv)`
数值计算相关函数。
| 参数 | 类型 | 说明 |
| ------- | ----- | ---- |
| `x` | array | |
| `y` | array | |
| `dy0` | any | |
| `dyn_1` | any | |
| `xv` | float | |
| `yv` | any | |
返回:any
## `ip_Spline_B(x, y, ddy0, ddyn_1, xv, yv)`
数值计算相关函数。
| 参数 | 类型 | 说明 |
| -------- | ----- | ---- |
| `x` | array | |
| `y` | array | |
| `ddy0` | any | |
| `ddyn_1` | any | |
| `xv` | float | |
| `yv` | any | |
返回:any
## `ip_Spline_C(x, y, xv, yv)`
数值计算相关函数。
| 参数 | 类型 | 说明 |
| ---- | ----- | ---- |
| `x` | array | |
| `y` | array | |
| `xv` | float | |
| `yv` | any | |
返回:any
## 一般统计量
## `LeastSquares_CurveFitting(f, y)`
最小二乘法进行回归
| 参数 | 类型 | 说明 |
| ---- | ----- | ---------------------------- |
| `f` | array | 二维数字数组类型,系数矩阵 |
| `y` | array | 一维数字数组类型,观察数据值 |
返回:array
## `mcols(value, mode)`
读取矩阵样数据或 FMArray 的列数或列索引。
| 参数 | 类型 | 说明 |
| ------- | ----- | --------------------------------------- |
| `value` | array | 输入数据 |
| `mode` | any | 省略时返回列数;传 `1` 时返回列索引数组 |
返回:array
## `mrows(value, mode)`
读取矩阵样数据或 FMArray 的行数或行索引。
| 参数 | 类型 | 说明 |
| ------- | ----- | --------------------------------------- |
| `value` | array | 输入数据 |
| `mode` | any | 省略时返回行数;传 `1` 时返回行索引数组 |
返回:array
## `msize(value, mode)`
读取矩阵样数据或 FMArray 的尺寸信息。
| 参数 | 类型 | 说明 |
| ------- | ----- | ----------------------------------------- |
| `value` | array | 输入数据 |
| `mode` | any | 省略时返回各维长度;传 `1` 时返回索引数组 |
返回:array
## `multipleRegression(x, y, call_back)`
多元回归
| 参数 | 类型 | 说明 |
| ----------- | ------ | ------------------------------ |
| `x` | array | 二维数字数组类型,观察数据点 |
| `y` | array | 一维数字数组类型,观察数据值 |
| `call_back` | string | 字符串类型,计算系数矩阵的回调 |
返回:array
### 示例
```tsl
x:=array((0.00,0.00),(0.00,1.00),(1.00,0.00),(1.00,1.00));
y:=array(1.00,2.00,2.00,3.00);
call_back:='MultipleRegression_CallBack';
multipleRegression(x,y,call_back);
//结果:
```
## `NonLP_Fminbnd(fun, a, b, methods)`
一维最小值搜索,求解模型如下: min fun(x)
| 参数 | 类型 | 说明 |
| --------- | ------ | ------------------------------------------------------------------------------ |
| `fun` | string | 目标函数(函数名字符串) |
| `a` | float | 下界,实数 |
| `b` | float | 上界,实数 |
| `methods` | any | 方法选择0 :黄金分割法+抛物线法(默认)1 : 盲人收索法2 :黄金分割法3 :斐波那契法 |
返回:array
## `NonLP_Rosenbrock(fun, x0)`
(无约束最小值求解建议统一使用NonLP_Fminsearch函数)Rosenbrock求无约束多维极值问题,返回最优点和最优值。
| 参数 | 类型 | 说明 |
| ----- | ------ | ------------------------------ |
| `fun` | string | 目标函数表达式,为字符串类型; |
| `x0` | array | 初值向量,为一维数组类型 |
返回:array
## `numberOfPeriods(rate, payment, present_value, future_value, payment_time)`
返回投资的期数,也就是按照指定的收益率和每期的付款,现值PresentValue要经过多少个周期才能到达FutureValue的数值。
| 参数 | 类型 | 说明 |
| --------------- | ----- | ------------------------------------------------ |
| `rate` | float | 实数,收益率 |
| `payment` | float | 实数。每期付款额 |
| `present_value` | float | 实数,现值 |
| `future_value` | int | 实数,要达到的终值 |
| `payment_time` | float | PaymentTime决定Payment的支付是在期初还是期末发生 |
返回:float
## `ozProg(f, a, b)`
(线性规划,包括整数规划,01规划建议统一使用prog_L函数),0-1规划,解决如下0-1整数规划模型问题 返回该0-1规划模型的最小值及其对应变量的取值,其中可以转化为和;
| 参数 | 类型 | 说明 |
| ---- | ----- | ------------------------------------------------------------------------------------------- |
| `f` | array | 一维实数数组,表示0-1规划模型的目标函数系数; |
| `a` | array | 二维实数数组,表示0-1规划模型的带“”约束方程系数矩阵,如果是带“”,则将该方程两边同乘以“-1”; |
| `b` | array | 一维实数数组,表示0-1规划模型带“”约束方程的约束值; |
返回:array
### 示例
```tsl
f:=array(-3,2,-5);
a:=array((1,2,-1),(1,4,1),(1,1,0),(4,0,1));
b:=array(2,4,3,6);
ozProg(f,a,b);
//结果:x1=1,x2=0,x3=1,f(x)=-8
```
## `Prog_Q(h, f, a, b, aeq, beq, lb, ub, x0, options)`
二次规划问题求解(采用作用集方法) Prog_Q(H,f,A,b) 求解不等式约束 Prog_Q(H,f,A,b,Aeq,beq) 求解不等式约束、等式约束 Prog_Q(H,f,A,b,Aeq,beq,LB,UB) 求解不等式约束、等式约束、上下界限约束 Prog_Q(H,f,A,b,Aeq,beq,LB,UB,x0,options) 模型表达: min= `x\* H\* x /2 + sum(f\*x) st. A:\*x<=b Aeq :\* x = Beq; lb<x<ub;
| 参数 | 类型 | 说明 |
| --------- | ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `h` | array | 二次型,正定二次型二维数字数组,不可缺省 |
| `f` | array | 线性目标,一维数字数组,不可缺省 |
| `a` | array | 线性约束,二维数字数组,不可缺省 |
| `b` | array | 线性约束,一维数字数组,不可缺省 |
| `aeq` | array | 线性约束,二维数字数组,缺省为空 |
| `beq` | array | 线性约束,一维数字数组,缺省为空 |
| `lb` | array | 下界约束,一维数字数组,缺省为空 |
| `ub` | array | 上界约束,一维数字数组,缺省为空 |
| `x0` | array | 初始值,一维数组 |
| `options` | array | 选项设置,数据表类型,缺省为array('maxiter': 400 , //最大迭代次数'tolcon': 1.0e-6, //约束容忍误差'tolfun' : 1.0e-6 , //目标最小误差'tolx' : 1.0e-6 //变量最小变化) |
返回:array
## `rand(rows, cols)`
生成随机矩阵样结果。
| 参数 | 类型 | 说明 |
| ------ | ---- | ---- |
| `rows` | any | 行数 |
| `cols` | any | 列数 |
返回:array
## 数学函数 / FMArray 函数
## `randgam(a, b, row, col)`
产生伽马分布的随机数
| 参数 | 类型 | 说明 |
| ----- | ----- | ---------------------- |
| `a` | float | 形状参数,大于0的实数 |
| `b` | float | 尺度参数,大于0的实数 |
| `row` | array | 行数或者行名字符串数组 |
| `col` | array | 列数或者列名字符串数组 |
返回:any
### 示例
```tsl
randgam(2,2,100,array("a","b"));
```
## `Regress_CMLS(y, x, u, constant)`
线性回归方程的最小二乘法参数估计(可选择是否包含常数项),返回回归方程的系数,如果有常数项则排在第一项
| 参数 | 类型 | 说明 |
| ---------- | ----- | -------------------------------------------------- |
| `y` | array | 被解释变量序列,为一维数组类型 |
| `x` | array | 解释变量矩阵,为二维数组类型,每一列为一个解释变量 |
| `u` | array | 残差序列,为一维数组类型,变参 |
| `constant` | bool | 是否包含常数项,为布尔类型,缺省为true |
返回:array
## `Regress_domin_formula(y, x)`
相对重要性分析-R2公式分解法 功能描述: 1、相对重要性分析 2、算法:根据含常数项的多元回归的r2的分解公式,来计算 不同解释变量的相对贡献度 3、公式法: 未考虑到不同解释变量之间的相互关系, 贡献度可能为负数
| 参数 | 类型 | 说明 |
| ---- | ----- | ---------------------- |
| `y` | array | Array of number,因变量 |
| `x` | array | Array of number,自变量 |
返回:array
## `Regress_DWTest(u)`
德宾-沃森检验:检验随机误差项是否存在一阶自相关。结果返回DW统计量 DW统计量:(一般认为值在2附近,则随机误差项不存在自相关)
| 参数 | 类型 | 说明 |
| ---- | ----- | -------------------------- |
| `u` | array | 方程残差,为一维数组类型; |
返回:any
## `Regression_OLS_NW(y, x, constant, alpha, al)`
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
## `Regress_MLS(y, x, u)`
线性回归方程的最小二乘法参数估计(包含常数项),返回回归方程的系数,常数项排在第一项
| 参数 | 类型 | 说明 |
| ---- | ----- | -------------------------------------------------- |
| `y` | array | 被解释变量序列,为一维数组类型 |
| `x` | array | 解释变量矩阵,为二维数组类型,每一列为一个解释变量 |
| `u` | array | 残差序列,为一维数组类型,变参 |
返回:array
## `Regress_Ridge(y_values, x_values, k_values, trace_mode)`
执行岭回归,或按 `k_values` 输出岭迹。
| 参数 | 类型 | 说明 |
| ------------ | ----- | -------------------------- |
| `y_values` | array | 因变量样本 |
| `x_values` | array | 自变量样本矩阵 |
| `k_values` | array | 岭参数序列;省略时自动选择 |
| `trace_mode` | bool | 是否按岭迹模式输出 |
返回:array
## `Regress_TTest_RWLS(x, a, u, k, alpha, constant, weight, restrictiveness)`
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_WLS(y_values, x_values, weights, residuals)`
执行加权最小二乘回归并输出残差。
| 参数 | 类型 | 说明 |
| ----------- | ----- | ------------ |
| `y_values` | array | 因变量样本 |
| `x_values` | array | 自变量样本 |
| `weights` | array | 权重序列 |
| `residuals` | any | 接收残差序列 |
返回:array
## `sf_Beta(arg1, arg2, v)`
统计分布相关函数。
| 参数 | 类型 | 说明 |
| ------ | ---- | ---- |
| `arg1` | any | |
| `arg2` | any | |
| `v` | any | |
返回:any
## `sf_betainv(y, arg2, arg3, x)`
统计分布相关函数。
| 参数 | 类型 | 说明 |
| ------ | ----- | ---- |
| `y` | array | |
| `arg2` | any | |
| `arg3` | any | |
| `x` | any | |
返回:any
## 常用数学函数
## `sf_betapdf(x, a, b, v)`
贝塔分布的密度函数,输入随机变量,返回随机变量对应的密度函数值
| 参数 | 类型 | 说明 |
| ---- | ----- | --------------------------------------------- |
| `x` | array | :随机变量,可以使用实数,也可以是一个实数数组 |
| `a` | float | beta分布参数1,实数,大于0 |
| `b` | float | beta分布参数2,实数,大于0 |
| `v` | array | 变参返回,该函数也支持直接返回,类型和x一样 |
返回:any
## `sf_CosX(arg1, v)`
数值计算相关函数。
| 参数 | 类型 | 说明 |
| ------ | ---- | ---- |
| `arg1` | any | |
| `v` | any | |
返回:any
## `sf_EllipseX_1(k, f, v)`
数值计算相关函数。
| 参数 | 类型 | 说明 |
| ---- | ---- | ---- |
| `k` | any | |
| `f` | any | |
| `v` | any | |
返回:any
## `sf_EllipseX_2(k, f, v)`
数值计算相关函数。
| 参数 | 类型 | 说明 |
| ---- | ---- | ---- |
| `k` | any | |
| `f` | any | |
| `v` | any | |
返回:any
## `sf_Error(arg1, v)`
统计分布相关函数。
| 参数 | 类型 | 说明 |
| ------ | ----- | ---- |
| `arg1` | float | |
| `v` | any | |
返回:any
## `sf_eX(arg1, v)`
数值计算相关函数。
| 参数 | 类型 | 说明 |
| ------ | ---- | ---- |
| `arg1` | any | |
| `v` | any | |
返回:any
## `sf_F(f, n1, n2, v)`
统计分布相关函数。
| 参数 | 类型 | 说明 |
| ---- | ---- | ---- |
| `f` | any | |
| `n1` | any | |
| `n2` | any | |
| `v` | any | |
返回:any
## `sf_finv(arg1, arg2, arg3, v)`
统计分布相关函数。
| 参数 | 类型 | 说明 |
| ------ | ----- | ---- |
| `arg1` | float | |
| `arg2` | any | |
| `arg3` | any | |
| `v` | any | |
返回:any
## `sf_Gamma(arg1, v)`
统计分布相关函数。
| 参数 | 类型 | 说明 |
| ------ | ---- | ---- |
| `arg1` | any | |
| `v` | any | |
返回:any
## `sf_gammainv(arg1, arg2, v)`
统计分布相关函数。
| 参数 | 类型 | 说明 |
| ------ | ----- | ---- |
| `arg1` | float | |
| `arg2` | any | |
| `v` | any | |
返回:any
## `sf_IncompleteBeta(a, b, x, v)`
统计分布相关函数。
| 参数 | 类型 | 说明 |
| ---- | ----- | ---- |
| `a` | any | |
| `b` | any | |
| `x` | float | |
| `v` | any | |
返回:any
## `sf_IncompleteGamma(a, x, v)`
统计分布相关函数。
| 参数 | 类型 | 说明 |
| ---- | ---- | ---- |
| `a` | any | |
| `x` | any | |
| `v` | any | |
返回:any
## `sf_IntegerBessel_1(n, x, v)`
统计分布相关函数。
| 参数 | 类型 | 说明 |
| ---- | ----- | ---- |
| `n` | any | |
| `x` | float | |
| `v` | any | |
返回:any
## `sf_IntegerBessel_2(n, x, v)`
统计分布相关函数。
| 参数 | 类型 | 说明 |
| ---- | ----- | ---- |
| `n` | any | |
| `x` | float | |
| `v` | any | |
返回:any
## `sf_Normal(x, a, d, v)`
统计分布相关函数。
| 参数 | 类型 | 说明 |
| ---- | ---- | ---- |
| `x` | any | |
| `a` | any | |
| `d` | any | |
| `v` | any | |
返回:any
## `sf_normalinv(arg1, arg2, arg3, v)`
统计分布相关函数。
| 参数 | 类型 | 说明 |
| ------ | ----- | ---- |
| `arg1` | float | |
| `arg2` | any | |
| `arg3` | any | |
| `v` | any | |
返回:any
## `sf_normalinv2(arg1, v)`
统计分布相关函数。
| 参数 | 类型 | 说明 |
| ------ | ----- | ---- |
| `arg1` | float | |
| `v` | any | |
返回:any
## `sf_RealBessel_1(n, x, v)`
统计分布相关函数。
| 参数 | 类型 | 说明 |
| ---- | ----- | ---- |
| `n` | any | |
| `x` | float | |
| `v` | any | |
返回:any
## `sf_RealBessel_2(n, x, v)`
统计分布相关函数。
| 参数 | 类型 | 说明 |
| ---- | ----- | ---- |
| `n` | any | |
| `x` | float | |
| `v` | any | |
返回:any
## `sf_SinX(arg1, v)`
数值微积分相关函数。
| 参数 | 类型 | 说明 |
| ------ | ---- | ---- |
| `arg1` | any | |
| `v` | any | |
返回:float
## `sf_t(t, n, v)`
统计分布相关函数。
| 参数 | 类型 | 说明 |
| ---- | ----- | ---- |
| `t` | float | |
| `n` | any | |
| `v` | any | |
返回:any
## `sf_tinv(arg1, arg2, v)`
统计分布相关函数。
| 参数 | 类型 | 说明 |
| ------ | ----- | ---- |
| `arg1` | float | |
| `arg2` | any | |
| `v` | any | |
返回:any
## `sf_X2(x, n, v)`
统计分布相关函数。
| 参数 | 类型 | 说明 |
| ---- | ----- | ---- |
| `x` | float | |
| `n` | any | |
| `v` | any | |
返回:any
## `sf_x2inv(arg1, arg2, v)`
统计分布相关函数。
| 参数 | 类型 | 说明 |
| ------ | ----- | ---- |
| `arg1` | float | |
| `arg2` | any | |
| `v` | any | |
返回:any
## `SingleUnLineralRegression_CallBack(x)`
单元非线性回归的回调函数
| 参数 | 类型 | 说明 |
| ---- | ----- | ---------------- |
| `x` | array | 一维数字数组类型 |
返回:array
## `Time_ACF(y)`
自相关系数,计算随机序列与所有滞后阶数的相关系数。
| 参数 | 类型 | 说明 |
| ---- | ----- | ----------------------------------------------------------------------------- |
| `y` | array | 数组,样本序列;;p:整数,返回样本自相关系数序列的长度,默认值为3,允许缺省; |
返回:array
## `Time_Analyse(y, model, p, q, l)`
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)`
自回归条件异方差模型,本模型的ARCH模型如下: sss 可把异方差方程进行整合,得到 用最小二乘法去估计方程的系数了,得到系数的相合估计。 或者用最大似然估计去估计参数,得到精度估计,最大似然估计的目标函数值为:
| 参数 | 类型 | 说明 |
| ---------- | ----- | ---------------------------- |
| `r_series` | array | 资产收益率,为一维数组类型; |
| `q` | any | 自回归阶数,为整数类型; |
| `l` | any | 预测步长,为整数类型 |
返回:array
## `Time_ARCHTest(u, q, alpha)`
时间序列异方差的ARCH检验,原假设都为没有异方差,即不存在ARCH效应,Hypothesis为1表示接受原假设,0表示拒绝原假设 检验统计量为: 对方程进行估计,得到F统计量和T×R2统计量并进行检验;
| 参数 | 类型 | 说明 |
| ------- | ----- | -------------------------------------------------------------- |
| `u` | array | 残差序列,为一维数组类型 |
| `q` | any | 滞后阶数,为整数类型 |
| `alpha` | float | 1-alpha为置信水平,一般为5%,也有1%和10%,数值越小,判断越严格 |
返回:array
## `Time_ARMA(y, p, q, l)`
建议使用ARMA模型替换,自回归移动平均模型,ARMA(p,q)模型,采用逆函数去估计自回归系数和移动平均系数,返回结果有自回归系数、移动平均系数、残差方差、预测值及预测波动。 估计过程如下: ,为自协方差 其中:yt为原序列零均值化的新序列,μ为原序列的均值,ρp是自相关系数,φq是自回归方程系数,θq为移动平均系数,εt是零均值、方差为σ2的平稳白噪声
| 参数 | 类型 | 说明 |
| ---- | ----- | -------------------------- |
| `y` | array | 样本序列,为一维数组类型; |
| `p` | any | 自回归阶数; |
| `q` | any | 移动平均阶数 |
| `l` | any | 预测步长,整数 |
返回:array
## `Time_ARp(y, p, l)`
建议使用AR模型替换,自回归模型,AR(p)模型,用Yule-Walker方程去估计p阶自回归模型的系数,返回结果有自回归系数、残差方差、预测值及预测波动。估计过程如下 AR(p)模型: 如有常数项,则 ,为自协方差 其中:为原序列零均值化的新序列,为原序列的均值,是自相关系数,是自回归方程系数,是零均值,方差为的平稳白噪声
| 参数 | 类型 | 说明 |
| ---- | ----- | -------------------------- |
| `y` | array | 样本序列,为一维数组类型; |
| `p` | any | 自回归阶数; |
| `l` | any | 预测步长; |
返回:array
## `Time_AutoCov(y, l)`
自协方差,求样本序列跟滞后L阶序列的协方差,即自协方差 自协方差计算公式如下: 其中:yt是样本序列,yL是滞后L阶的序列。
| 参数 | 类型 | 说明 |
| ---- | ----- | -------------------------- |
| `y` | array | 样本序列,为一维数组类型; |
| `l` | any | 滞后阶数,为整数类型; |
返回:any
## `Time_ChoseP(y, model, f)`
判断AR模型最佳的阶数,采用信息准则函数判断模型的最佳阶数 其中:T为样本容量,K为待估计参数
| 参数 | 类型 | 说明 |
| ------- | ------ | -------------------------------------- |
| `y` | array | 样本序列,为一维数组类型; |
| `model` | string | 模型类别为AR、MA、ARMA,为字符串类型; |
| `f` | string | 判断准则为SBIC和AIC,为字符串类型 |
返回:any
## `Time_DanielTest(y, alpha)`
在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)`
序列差分
| 参数 | 类型 | 说明 |
| ---- | ----- | ----------------------- |
| `y` | array | 需要做差分的数组数据 |
| `n` | any | 差分的阶数,0阶不做处理 |
返回:any
## `Time_GARCH(rseries, model)`
广义自回归条件异方差模型,包含四种模型: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_InvFun(ap, mq)`
中间函数,模型逆函数,ARMA模型的逆函数,Green函数的递推公式如下: 式中: ,,是自回归方程系数,为移动平均系数,
| 参数 | 类型 | 说明 |
| ---- | ----- | ------------------------------ |
| `ap` | array | 自相关系数,为一维数组类型; |
| `mq` | array | 移动平均系数,为一维数组类型; |
返回:array
## `Time_MAq(y, q, l)`
建议使用ARMA模型替换,移动平均模型,MA(q)模型,用条件最小二乘法去估计q阶移动平均模型的系数,返回结果有移动平均系数、残差方差、预测值及预测波动。 估计过程如下: MA(q)模型: 具有逆转形式: 用算子形式比较,可得: s 条件最小二乘法使得下列残差平方和最小: 可将上述转化为矩阵形式,先求得的取值,在利用上上式计算移动平均系数 如有常数,则常数项为原序列的均值。 ,为自协方差 其中:yt为原序列零均值化的新序列,μ为原序列的均值,θq为移动平均系数,εt是零均值,方差为σ2的平稳白噪声
| 参数 | 类型 | 说明 |
| ---- | ----- | -------------------------- |
| `y` | array | 样本序列,为一维数组类型; |
| `q` | any | 移动平均阶数; |
| `l` | any | 预测步长; |
返回:array
## `Times_Cointergration(y, x, alpha)`
建议使用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)`
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)`
两变量间的误差修正模型,准确的刻画了两序列间的短期波动特征 误差修正模型是时间序列间协整关系的主要表现形式,准确的刻画了序列间的长期均衡关系和短期波动特征。设一阶自回归分布滞后模型为: 其中,是均值为零,方差为的白噪声,进行适当的整理有: 其中若记 称为误差修正项。
| 参数 | 类型 | 说明 |
| ------- | ----- | -------------------------------------------- |
| `y` | array | 被解释变量,为一维数组类型 |
| `x` | array | 解释变量,为一维数组类型 |
| `resid` | array | 协整检验时的残差,没有输入,使用最小二乘得到 |
| `alpha` | float | 显著性水平 |
| `q` | any | 整数类型,被解释变量的滞后项 |
| `p` | any | 整数类型,解释变量的滞后项 |
返回:any
## `timeSeriesSplit()`
时间序列数据处理;将时间序列数据:时间、数据、(股票)处理成为(时间股票数据)的格式。注意,该函数主要用于客户端结果处理,不提供给用户程序编辑。
返回:array
## `Times_Granger(y, x, q, alpha)`
Granger因果检验,原假设:X不是Y的Granger原因,Hypothesis为1表示接受原假设,0表示拒绝原假设 原假设: 分别对上述两个回归方程做回归,提取残差平方和XESS跟YESS,则F统计量如下计算:
| 参数 | 类型 | 说明 |
| ------- | ----- | ------------------------------------- |
| `y` | array | 被解释变量,为一维数组类型 |
| `x` | array | 解释变量,为一维数组类型 |
| `q` | any | 滞后阶数,为整数类型 |
| `alpha` | float | 显著性水平,为实数类型,一般在0-1之间 |
返回:array
## `Times_johansen(x, p, k)`
进行Johansen协整检验,第一列的迹、最大特征值统计量的原假设是:没有协整关系;第二列的迹、最大特征值统计量的原假设是最多只有一个协整关系;第三列的迹、最大特征值统计量的原假设是最多只有两个协整关系……
| 参数 | 类型 | 说明 |
| ---- | ----- | ---------------------------------------------------------------------------------------------------------------------- |
| `x` | array | 输入多元时间序列,每一列为一指标,每行为一时间 (nobs\*m) |
| `p` | any | 是否含时间趋势及常数项p = -1,没有时间趋势以及常数项p =0,含常数项p =1,含常数项以及一次时间项p >1,含常数项以及高次时间项 |
| `k` | any | 滞后阶数 |
返回:array
## `zeros(size_or_rows, cols_or_fields)`
生成元素为 `0` 的一维或二维矩阵样结果。
| 参数 | 类型 | 说明 |
| ---------------- | ----- | -------------------- |
| `size_or_rows` | any | 一维长度或二维行数 |
| `cols_or_fields` | array | 二维列数,或列名数组 |
返回:array
## `correlMatrix(stocks, start_date)`
股票列表之间的相关系数。与当前时间有关,当前时间为区间截止日。
| 参数 | 类型 | 说明 |
| ------------ | --------- | ------------------------ |
| `stocks` | Array | 一维字符串数组,股票列表 |
| `start_date` | TDateTime | 日期型时间,开始计算日期 |
返回:TableArray
### 示例
```tsl
//组合个股相关矩阵
setSysParam(pn_date(),20201231T);
stocks:=array("SH600718","SZ000920");
return correlMatrix(stocks,intToDate(20120926));
//结果:
```
## `symOrthogonal(data, option)`
对矩阵进行正交
| 参数 | 类型 | 说明 |
| -------- | ---------- | ----------------------------------------------------- |
| `data` | Array | 二维数字数组, 二维数组 行下标为数字或字符串的二维数组 |
| `option` | UserDefine | 用户自定义, 正交方法的选择 |
返回:array
### 示例
```tsl
范例01
//求data的对称正交矩阵
data := rand(10,3);
return symOrthogonal(data,0);
//结果,随机数,每次结果不一样,仅供参考
```
## `covarianceAttenuation(a)`
协方差矩阵-衰减因子。
| 参数 | 类型 | 说明 |
| ---- | ----- | ------------ |
| `a` | array | 二维数字数组 |
返回:any
### 示例
```tsl
a:=array((1,2,3),(4,5,6));
return covarianceAttenuation(a);
返回:
```
## `giniCoeff(x, y, method)`
计算基尼系数,其中Method决定使用的方法。
| 参数 | 类型 | 说明 |
| -------- | ---- | ---- |
| `x` | | |
| `y` | | |
| `method` | | |
返回:real
### 示例
```tsl
x:=array(0.1,0.2,0.3,0.4,0.5,0.6);
y:=x^2;
return giniCoeff(x,y,1);
//返回:0.07
```
## `hurst(data, n_rs, options)`
计算hurst指数
| 参数 | 类型 | 说明 |
| --------- | ----- | ---------------------------------------------------------- |
| `data` | Array | 一维数字数组,用于求hurst的收益率数据 |
| `n_rs` | Array | 二维数字数组,作为变参输出回归数据n和R/S |
| `options` | Array | 二维数字数组,方法选项,默认方法选项 "minEle":10,"maxSur":0 |
返回:real
### 示例
```tsl
data:=spec(fundNawzfQk(20240308t,20240831t,cy_day(),0,0), "OF000001");
t := sselect ["净值收益率(%)"] from data end;
return hurst(t);// 0.47
```
## `weightedMedian(x, w)`
加权中位数
| 参数 | 类型 | 说明 |
| ---- | ----- | ------------ |
| `x` | Array | 一维数字数组 |
| `w` | Array | 一维权重向量 |
返回:real
### 示例
```tsl
x := array(1,2,3,4,5);
w := array(0.15,0.1,0.2,0.3,0.25);
echo median(x); //返回3
return weightedMedian(x, w); //返回4
```
## `weightedGeomean(x, w)`
加权几何平均数
| 参数 | 类型 | 说明 |
| ---- | ----- | ------------ |
| `x` | Array | 一维数字数组 |
| `w` | Array | 一维权重向量 |
返回:real
### 示例
```tsl
x := array(1,2,3,4,5);
w := array(0.15,0.1,0.2,0.3,0.25);
return weightedGeomean(x,w); //3.0261
```
## `weightedHarmean(x, w)`
加权调和平均数
| 参数 | 类型 | 说明 |
| ---- | ----- | ------------ |
| `x` | Array | 一维数字数组 |
| `w` | Array | 一维权重向量 |
返回:real
### 示例
```tsl
x := array(1,2,3,4,5);
w := array(0.15,0.1,0.2,0.3,0.25);
return weightedHarmean(x,w); //2.553
```
## `weightedMean(x, w)`
加权平均数
| 参数 | 类型 | 说明 |
| ---- | ----- | ------------ |
| `x` | Array | 一维数字数组 |
| `w` | Array | 一维权重向量 |
返回:real
### 示例
```tsl
x := array(1,2,3,4,5);
w := array(0.15,0.1,0.2,0.3,0.25);
return weightedMean(x,w); //3.4
```
## `weightedPopnVariance(x, w)`
加权总体方差
| 参数 | 类型 | 说明 |
| ---- | ----- | ------------ |
| `x` | Array | 一维数字数组 |
| `w` | Array | 一维权重向量 |
返回:real
### 示例
```tsl
x := array(1,2,3,4,5);
w := array(0.15,0.1,0.2,0.3,0.25);
return weightedPopnVariance(x,w); //1.84
```
## `weightedVariance(x, w)`
可靠性权重加权样本方差
| 参数 | 类型 | 说明 |
| ---- | ----- | ------------ |
| `x` | Array | 一维数字数组 |
| `w` | Array | 一维权重向量 |
返回:real
### 示例
```tsl
x := array(1,2,3,4,5);
w := array(0.15,0.1,0.2,0.3,0.25);
return weightedVariance(x,w); //2.374
```
## `weightedPopnCov(a, b, w)`
加权总体协方差
| 参数 | 类型 | 说明 |
| ---- | ----- | ------------ |
| `a` | Array | 一维数字数组 |
| `b` | Array | 一维数字数组 |
| `w` | Array | 一维权重向量 |
返回:real
### 示例
```tsl
x := array(1,2,3,4,5);
w := array(0.15,0.1,0.2,0.3,0.25);
y := array(6,4,3,1,9);
return weightedPopnCov(x,y,w);// 0.82
```
## `weightedCov(a, b, w)`
可靠性权重加权样本协方差
| 参数 | 类型 | 说明 |
| ---- | ----- | ------------ |
| `a` | Array | 一维数字数组 |
| `b` | Array | 一维数字数组 |
| `w` | Array | 一维权重向量 |
返回:real
### 示例
```tsl
x := array(1,2,3,4,5);
w := array(0.15,0.1,0.2,0.3,0.25);
y := array(6,4,3,1,9);
return weightedCov(x,y,w); // 1.058
```
## `weightedPopnCovariance(a, w)`
加权总体协方差矩阵
| 参数 | 类型 | 说明 |
| ---- | ----- | ------------------------------ |
| `a` | Array | 待计算的矩阵,每一列为一个因子 |
| `w` | Array | 一维权重向量 |
返回:Matix
### 示例
```tsl
begt := 20190101T;
endt := 20190415T;
stocks := array('SH000001','SH000300','SH600000');
//涨幅(%)矩阵
returns := pf_GetPortfolioRate(stocks,begt,endt,1)[:,1:];
//指数函数权重
n := length(returns);
w := exp(1->n);
w /= sum(w);
return weightedPopnCovariance(returns, w);
//结果
```
## `weightedCovariance(a, w)`
可靠性权重加权样本方差矩阵
| 参数 | 类型 | 说明 |
| ---- | ----- | ------------------------------ |
| `a` | Array | 待计算的矩阵,每一列为一个因子 |
| `w` | Array | 一维权重向量 |
返回:matrix
### 示例
```tsl
begt := 20190101T;
endt := 20190415T;
stocks := array('SH000001','SH000300','SH600000');
//涨幅(%)矩阵
returns := pf_GetPortfolioRate(stocks,begt,endt,1)[:,1:];
//指数函数权重
n := length(returns);
w := exp(1->n);
w /= sum(w);
return weightedCovariance(returns, w);
//结果
```
## `weightedCorrel(a, b, w)`
加权相关系数
| 参数 | 类型 | 说明 |
| ---- | ----- | ------------ |
| `a` | Array | 一维数字数组 |
| `b` | Array | 一维数字数组 |
| `w` | Array | 一维权重向量 |
返回:real
### 示例
```tsl
x := array(1,2,3,4,5);
w := array(0.15,0.1,0.2,0.3,0.25);
y := array(6,4,3,1,9);
return weightedCorrel(x,y,w); //0.1956
```
## `weightedCorrelM(a, w)`
加权相关系数矩阵
| 参数 | 类型 | 说明 |
| ---- | ----- | ------------------------------ |
| `a` | Array | 待计算的矩阵,每一列为一个因子 |
| `w` | Array | 一维权重向量 |
返回:matrix
### 示例
```tsl
begt := 20190101T;
endt := 20190415T;
stocks := array('SH000001','SH000300','SH600000');
//涨幅(%)矩阵
returns := pf_GetPortfolioRate(stocks,begt,endt,1)[:,1:];
//指数函数权重
n := length(returns);
w := exp(1->n);
w /= sum(w);
return weightedCorrelM(returns, w);
//结果
```
## `ewmMean(x, y, alphatype, adjust, iflast)`
指数加权移动平均,支持nan,为nan的值参与权重计算,但计算平均时对nan值不进行计算,即计算加权平均时把nan 值及其权重都置为0进行计算
| 参数 | 类型 | 说明 |
| ----------- | ------- | ------------------------------------------------------------------------------------------------------------------ |
| `x` | Array | 数组,待计算移动平均的一维数字数组 |
| `y` | real | 实数,衰减因子,与alphatype共同决定实际的衰减因子alpha,见平滑系数的确定 |
| `alphatype` | Integer | 用户自定义,默认为0 |
| `adjust` | bool | 布尔型,是否调整,True、实际权重计算,False、根据无穷序列假设下的递推式计算,默认为False,见指数加权的两种递推式。 |
| `iflast` | bool | 是否只返回最后一个数,默认为False |
返回:Array
### 示例
```tsl
sp_s(Pn_stock(),'SH000300');
sp_s(pn_date(),20190415T);
x := nDay3(50,stockZf3());
return x | ewmMean(x,10,1);
//结果
```
## `ewmStd(x, y, alphatype, adjust)`
指数加权移动标准差
| 参数 | 类型 | 说明 |
| ----------- | ------- | ---------------------------------------------------------------------------------------------------------- |
| `x` | Array | 待计算移动平均的一维数字数组 |
| `y` | real | 衰减因子,与alphatype共同决定实际的衰减因子alpha,见平滑系数的确定 |
| `alphatype` | Integer | 用户自定义,默认为0 |
| `adjust` | bool | 是否调整,True、实际权重计算,False、根据无穷序列假设下的递推式计算,默认为False,见指数加权的两种递推式。 |
返回:Array
### 示例
```tsl
sp_s(Pn_stock(),'SH000300');
sp_s(pn_date(),20190415T);
x := nDay3(50,stockZf3());
return x | ewmStd(x,10,1);
//结果
```
## `ewmVar(x, y, alphatype, adjust)`
指数加权移动方差,支持nan,为nan的值参与权重计算,但计算平均时对nan值不进行计算,即计算加权平均时把nan 值及其权重都置为0进行计算,(有偏暂未实现支持nan)
| 参数 | 类型 | 说明 |
| ----------- | ------- | ---------------------------------------------------------------------------------------------------------- |
| `x` | Array | 待计算移动平均的一维数字数组 |
| `y` | real | 衰减因子,与alphatype共同决定实际的衰减因子alpha,见平滑系数的确定 |
| `alphatype` | Integer | 用户自定义,默认为0 |
| `adjust` | bool | 是否调整,True、实际权重计算,False、根据无穷序列假设下的递推式计算,默认为False,见指数加权的两种递推式。 |
返回:Array
### 示例
```tsl
sp_s(Pn_stock(),'SH000300');
sp_s(pn_date(),20190415T);
x := nDay3(50,stockZf3());
return x | ewmVar(x,10,1);
//结果
```
## `ewmCorrel(a, b, y, alphatype, adjust, iflast)`
指数加权移动相关系数
| 参数 | 类型 | 说明 |
| ----------- | ------- | ---------------------------------------------------------------------------------------------------------- |
| `a` | Array | 样本a待计算的一维数字数组 |
| `b` | Array | 样本b待计算的一维数字数组 |
| `y` | real | 衰减因子,与alphatype共同决定实际的衰减因子alpha,见平滑系数的确定 |
| `alphatype` | Integer | 用户自定义,默认为0 |
| `adjust` | bool | 是否调整,True、实际权重计算,False、根据无穷序列假设下的递推式计算,默认为False,见指数加权的两种递推式。 |
| `iflast` | bool | 是否只返回最后一个数,默认为False |
返回:Array
### 示例
```tsl
sp_s(Pn_stock(),'SH000300');
sp_s(pn_date(),20190415T);
a:=nDay3(50,stockZf3());
b:=nDay3(50,spec(stockZf3(),'SH000001'));
return a|b|ewmCorrel(a,b,10,1);
//结果
```
## `ewmCov(a, b, y, alphatype, adjust)`
指数加权移动协方差
| 参数 | 类型 | 说明 |
| ----------- | ------- | ---------------------------------------------------------------------------------------------------------- |
| `a` | array | 样本a待计算的一维数字数组 |
| `b` | Array | 样本b待计算的一维数字数组 |
| `y` | real | 衰减因子,与alphatype共同决定实际的衰减因子alpha,见平滑系数的确定 |
| `alphatype` | Integer | 用户自定义,默认为0 |
| `adjust` | bool | 是否调整,True、实际权重计算,False、根据无穷序列假设下的递推式计算,默认为False,见指数加权的两种递推式。 |
返回:array
### 示例
```tsl
sp_s(Pn_stock(),'SH000300');
sp_s(pn_date(),20190415T);
a:=nDay3(50,stockZf3());
b:=nDay3(50,spec(stockZf3(),'SH000001'));
return a|b|ewmCov(a,b,10,1);
//结果
```
## `ewmSlope(y, x, a, alphatype, adjust)`
指数加权移动回归斜率,y与x协方差/x方差(指数加权移动)
| 参数 | 类型 | 说明 |
| ----------- | ------- | ---------------------------------------------------------------------------------------------------------- |
| `y` | array | 样本y待计算的一维数字数组 |
| `x` | array | 样本x待计算的一维数字数组 |
| `a` | real | 衰减因子,与alphatype共同决定实际的衰减因子alpha,见平滑系数的确定 |
| `alphatype` | Integer | 用户自定义,默认为0 |
| `adjust` | bool | 是否调整,True、实际权重计算,False、根据无穷序列假设下的递推式计算,默认为False,见指数加权的两种递推式。 |
返回:array
### 示例
```tsl
sp_s(Pn_stock(),'SH000300');
sp_s(pn_date(),20190415T);
a:=nDay3(50,stockZf3());
b:=nDay3(50,spec(stockZf3(),'SH000001'));
return a|b|ewmSlope(a,b,10,1);
//结果
```
## `ewmIntercept(y, x, a, alphatype, adjust)`
指数加权移动回归截据项,y平均-斜率\*x平均 (指数加权移动)
| 参数 | 类型 | 说明 |
| ----------- | ------- | ---------------------------------------------------------------------------------------------------------- |
| `y` | array | 样本y待计算的一维数字数组 |
| `x` | array | 样本x待计算的一维数字数组 |
| `a` | real | 衰减因子,与alphatype共同决定实际的衰减因子alpha,见平滑系数的确定 |
| `alphatype` | Integer | 用户自定义,默认为0 |
| `adjust` | bool | 是否调整,True、实际权重计算,False、根据无穷序列假设下的递推式计算,默认为False,见指数加权的两种递推式。 |
返回:array
### 示例
```tsl
sp_s(Pn_stock(),'SH000300');
sp_s(pn_date(),20190415T);
a:=nDay3(50,stockZf3());
b:=nDay3(50,spec(stockZf3(),'SH000001'));
return a|b|ewmIntercept(a,b,10,1);
```
## `ewmResidual(y, x, a, alphatype, adjust)`
指数加权移动回归残差,y– (截距+斜率\*x)(指数加权移动)
| 参数 | 类型 | 说明 |
| ----------- | ------- | ---------------------------------------------------------------------------------------------------------- |
| `y` | array | 样本y待计算的一维数字数组 |
| `x` | array | 样本x待计算的一维数字数组 |
| `a` | real | 衰减因子,与alphatype共同决定实际的衰减因子alpha,见平滑系数的确定 |
| `alphatype` | Integer | 用户自定义,默认为0 |
| `adjust` | bool | 是否调整,True、实际权重计算,False、根据无穷序列假设下的递推式计算,默认为False,见指数加权的两种递推式。 |
返回:array
### 示例
```tsl
sp_s(Pn_stock(),'SH000300');
sp_s(pn_date(),20190415T);
a:=nDay3(50,stockZf3());
b:=nDay3(50,spec(stockZf3(),'SH000001'));
return a|b|ewmResidual(a,b,10,1);
```
## `auc(x, y)`
计算auc,根据roc_curve计算出来的fpr和tpr序列值计算AUC值
| 参数 | 类型 | 说明 |
| ---- | ----- | ------- |
| `x` | Array | x坐标点 |
| `y` | Array | y坐标点 |
返回:real
### 示例
```tsl
y_true := array(1,1,2,2,1,2,1,2);
y_score := array(0.1,0.4,0.35,0.8,0.5,0.7,0.45,0.6);
ret := roc_curve(y_true,y_score,2);
fpr := ret[0];
tpr := ret[1];
return auc(fpr,tpr); //0.8125
```