# 运行时 / 数学与统计

## `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值，df1，df2为自由度，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"\]:参数估计结果，，第一项为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

### 示例

```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 | 实数，表示方差贡献率,控制因子个数；；返回结果:ss；Ret\["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
```
