# 数学函数 / 统计推断

## `estimate_sp(mx, n, alpha, tail)`

声明：function

估计单个总体比率的置信区间

<!-- tags: 统计推断 比率 概率 置信区间 proportion confidence interval -->

| 参数    | 类型    | 说明                                                |
| ------- | ------- | --------------------------------------------------- |
| `mx`    | real    | 样本比率                                            |
| `n`     | integer | 样本容量                                            |
| `alpha` | real    | 显著性水平，范围 0 到 1                             |
| `tail`  | string  | 可选。区间方向，可取 both、left 或 right，默认 both |

返回：array

### 示例

范例01：计算双侧置信区间

```tsl
return estimate_sp(0.3, 120, 0.05, "both");
// 输出：array("Lower":0.218009,"upper":0.381991)
```

## `estimate_tp(p, n, alpha, tail)`

声明：function

估计两个总体比率之差的置信区间

<!-- tags: 统计推断 比率差 概率 置信区间 proportion difference -->

| 参数    | 类型   | 说明                                                |
| ------- | ------ | --------------------------------------------------- |
| `p`     | array  | 两个样本的比率                                      |
| `n`     | array  | 两个样本的容量                                      |
| `alpha` | real   | 显著性水平，范围 0 到 1                             |
| `tail`  | string | 可选。区间方向，可取 both、left 或 right，默认 both |

返回：array

### 示例

范例01：计算两个总体比率差的双侧置信区间

```tsl
return estimate_tp(
    array(0.478, 0.328), array(1000, 750), 0.05, "both");
// 输出：array("Lower":0.104311,"upper":0.195689)
```

## `Anova_Bartlett(y, alpha)`

声明：function

在1-alpha的置信水平下，Bartlett方法检验方差齐性；B-Stat为统计值，P-Value为p值，df为自由度，Hypothesis为是否接受原假设 模型表达： Bartlett检验思想来源于几何平均数小于或等于算术平均数 原假设：是水平个数 ,其中 修正的Bartlett检验

| 参数    | 类型  | 说明                                         |
| ------- | ----- | -------------------------------------------- |
| `y`     | array | 数据矩阵，为二维数组类型，每一行表示一个水平 |
| `alpha` | float | 显著性水平，实数或整数，在01之间             |

返回：array

## `Anova_Levene(y, alpha)`

声明：function

在1-Alpha的置信水平下，Levene方法检验方差齐性，和Bartlett检验不同的是，Levene检验不要求总体具有正态性。返回一个数组，F-Stat为统计值，P-Value为p值，df1，df2为自由度，Hypothesis为是否接受原假设 模型表达： 原假设：是水平个数 ，其中是观察数目，是水平数目

| 参数    | 类型  | 说明                                         |
| ------- | ----- | -------------------------------------------- |
| `y`     | array | 数据矩阵，为二维数组类型，每一行表示一个水平 |
| `alpha` | float | 显著性水平，实数或整数，在01之间             |

返回：array

## `Anova_Single(y, alpha)`

声明：function

在1-alpha置信水平下，在假设服从正态分布，且方差齐性，样本之间独立的基础上，判断各水平的均值是否显著相等 模型表达： ， 其中：效应平方和：，误差平方和： 总离差

| 参数    | 类型  | 说明                                         |
| ------- | ----- | -------------------------------------------- |
| `y`     | array | 数据矩阵，为二维数组类型，每一行表示一个水平 |
| `alpha` | float | 显著性水平，实数或整数，在01之间             |

返回：array

## `Anova_Twice(y, alpha)`

声明：function

在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统计量来分别检验假设，原理略

<!-- tags: B1 B2 A1 X111 X112 X121 X122 A2 X211 X212 X221 X222 -->

| 参数    | 类型  | 说明                                                                                            |
| ------- | ----- | ----------------------------------------------------------------------------------------------- |
| `y`     | array | 数据矩阵，为二维数组类型，每rep行，每一列表示一个交叉项                                         |
| `alpha` | float | 显著性水平，实数或整数，在01之间；Rep:每一个交叉项，做rep次试验，rep=1时，没有交叉效应为0的假设 |

返回：array

## `Estimate_SND(x, alpha, tail)`

声明：function

在1-alpha置信水平下，求单个正态总体方差的置信区间（或下置信区间，上置信区间）

| 参数    | 类型   | 说明                                                    |
| ------- | ------ | ------------------------------------------------------- |
| `x`     | array  | 样本序列，一维数组                                      |
| `alpha` | float  | 显著性水平，实数，在0,1之间                             |
| `tail`  | string | 求取置信区间类型，字符串，取both,left,right，缺省取both |

返回：array

## `Estimate_SNU(x, d, alpha, tail)`

声明：function

在1-alpha置信水平下，分为标准差未知和已知两种情况求单个正态总体均值的置信区间（或下置信区间，上置信区间）

| 参数    | 类型   | 说明                                                    |
| ------- | ------ | ------------------------------------------------------- |
| `x`     | array  | 样本序列，一维数组                                      |
| `d`     | float  | 正态总体的标准差，若未知，则输入nil，实数               |
| `alpha` | float  | 显著性水平，实数，在0,1之间                             |
| `tail`  | string | 求取置信区间类型，字符串，取both,left,right，缺省取both |

返回：array

## `Estimate_TND(x, alpha, tail)`

声明：function

在1-alpha置信水平下，求两个正态总体方差之比的置信区间（或下置信区间，上置信区间）

| 参数    | 类型   | 说明                                                    |
| ------- | ------ | ------------------------------------------------------- |
| `x`     | array  | 样本序列,含两行的二维数字数组，每行为一个样本           |
| `alpha` | float  | 显著性水平,实数，在0,1之间                              |
| `tail`  | string | 求取置信区间类型，字符串，取both,left,right，缺省取both |

返回：array

## `Estimate_TNU(x, d, alpha, tail, equal)`

声明：function

在1-alpha置信水平下，分为标准差未知和已知两种情况求两个正态总体均值差的置信区间（或下置信区间，上置信区间）

| 参数    | 类型   | 说明                                                               |
| ------- | ------ | ------------------------------------------------------------------ |
| `x`     | array  | 样本序列,含两行的二维数字数组，每行为一个样本                      |
| `d`     | array  | 正态总体的标准差数组，若未知，则输入array(nil,nil)，为一维数组类型 |
| `alpha` | float  | 显著性水平,实数，在0,1之间                                         |
| `tail`  | string | 求取置信区间类型，字符串，取both,left,right，缺省取both            |
| `equal` | bool   | 当标准差未知时，方差是否相等，布尔型                               |

返回：array

## `Hypoth_IndepTest(x, alpha)`

声明：function

列联表检验法检验两个随机变量的独立性检验，返回的结果是一个数组，第一个数为统计值，二为p值，三为原假设的值（0表示拒绝，1表示接受） 模型表达： 原假设：H0:X 与Y 相互独立 检验统计量： 其中

<!-- tags: H0 -->

| 参数    | 类型  | 说明                             |
| ------- | ----- | -------------------------------- |
| `x`     | array | 样本矩阵，为二维数组类型         |
| `alpha` | float | 显著性水平，实数或整数，在01之间 |

返回：array

## `Hypoth_KruskalWallis(x, alpha)`

声明：function

两个或多个随机变量的独立性检验。本模型原假设为各随机变量相互独立

| 参数    | 类型  | 说明                                     |
| ------- | ----- | ---------------------------------------- |
| `x`     | array | 样本矩阵，为二维数组类型，每行为一个样本 |
| `alpha` | float | 显著性水平，实数或整数，在01之间         |

返回：array

## `Hypoth_Kstest(data, tail, alpha, cdf)`

声明：function

在alpha的显著性水平下进行ks检验，检验序列是否服从cdf这种分布（缺省为标准正态分布），Hypothesis为测试结果,若Hypothesis=1,则认为服从;Hypothesis=0,可以认为不服从该分布

| 参数    | 类型   | 说明                                                                                                                                                                                                                                                      |
| ------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `data`  | array  | 样本数据，一维数字数组                                                                                                                                                                                                                                    |
| `tail`  | string | 检验类型，字符串类型，必须包含在array("both","left","right")中                                                                                                                                                                                            |
| `alpha` | float  | 显著性水平，实数或整数，在01之间                                                                                                                                                                                                                          |
| `cdf`   | array  | 分布的累计概率分布，二维数字数组，第一列为随机变量，第二列为其对应的分布函数值，缺省为标准正态分布；返回结果:；ret\["statistical"\]:KS统计量；ret\["criticalValue"\]:KS检验的临界值；ret\["P-Value"\]:KS检验的P值；ret\["Hypothesis"\]:是否服从设定的分布 |

返回：array

## `Hypoth_lillietest(data, alpha, distr)`

声明：function

在alpha的显著性水平下进行lillietest检验，检验序列是否服从正态分布或对数分布（分布参数估计出来），Hypothesis为测试结果,若Hypothesis=1,则认为服从;Hypothesis=0,可以认为不服从该分布

| 参数    | 类型   | 说明                                                                                                                                                                             |
| ------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `data`  | array  | 样本数据，一维数字数组                                                                                                                                                           |
| `alpha` | float  | 显著性水平，实数或整数，在01之间                                                                                                                                                 |
| `distr` | string | 分布函数类型，字符串数据，有"norm"、"exp"；返回结果:；ret\[""kstat"\]:统计量；ret\["cv"\]:检验统计量的临界值；ret\["P-Value"\]:检验的P值；ret\["Hypothesis"\]:是否服从设定的分布 |

返回：array

## `Hypoth_LSUTest(mx, s, n, u, tail, alpha)`

声明：function

单个或两个总体大样本的均值检验，即大样本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_McNemarTest(x, alpha)`

声明：function

非参数检验-McNemar检验。 对配对样本进行McNemar检验 McNemar检验以研究对象自身为对照，检验其两组样本变化是否显著 要求待检验的两组样本的观察值是二分类数据 检验统计量服从卡方分布

| 参数    | 类型  | 说明                               |
| ------- | ----- | ---------------------------------- |
| `x`     | array | 样本统计列联表，为二维数字数组类型 |
| `alpha` | float | 显著性水平，在0-1之间，为实数类型  |

返回：array

## `Hypoth_PNUTest(samples, mean_diff, std_dev, tail, alpha)`

声明：function

执行配对样本均值差 U 检验

| 参数        | 类型   | 说明                                         |
| ----------- | ------ | -------------------------------------------- |
| `samples`   | array  | 两组配对样本数据                             |
| `mean_diff` | float  | 原假设均值差                                 |
| `std_dev`   | float  | 差值标准差；未知时传 `nil`                   |
| `tail`      | string | 检验方向；常用 `"both"`、`"left"`、`"right"` |
| `alpha`     | float  | 显著性水平                                   |

返回：array

## `Hypoth_PSignTest(x, pi, q0, tail, alpha)`

声明：function

非参数检验-配对样本符号检验,配对样本的符号检验 要求样本矩阵中两个样本是配对出现的 可以按照实际需求选择双侧或单侧检验

| 参数    | 类型   | 说明                                    |
| ------- | ------ | --------------------------------------- |
| `x`     | array  | 一维数字数组,样本矩阵                   |
| `pi`    | float  | 实数,分位点                             |
| `q0`    | float  | 实数,检验值                             |
| `tail`  | string | 字符串,双侧检验 or 左侧检验 or 右侧检验 |
| `alpha` | float  | 实数,显著性水平                         |

返回：array

### 示例

```tsl
samples := array(
    (5, 4, 7, 3, 5, 8, 5, 6),
    (6, 6, 7, 4, 3, 9, 7, 6)
);
return Hypoth_PSignTest(samples, 0.5, 0.0, "both", 0.05);
// 输出：返回包含统计量、p 值和检验结论的数组
```

## `Hypoth_PWilcoxonTest(x, m0, tail, alpha)`

声明：function

非参数检验-配对样本Wilcoxon符号秩检验,配对样本的Wilcoxon符号秩检验 要求样本矩阵中两个样本是配对出现的 可以按照实际需求选择双侧或单侧检验

| 参数    | 类型   | 说明                                    |
| ------- | ------ | --------------------------------------- |
| `x`     | array  | 一维数字数组,样本矩阵                   |
| `m0`    | float  | 实数,检验值                             |
| `tail`  | string | 字符串,双侧检验 or 左侧检验 or 右侧检验 |
| `alpha` | float  | 实数,显著性水平                         |

返回：array

### 示例

```tsl
samples := array(
    (5, 4, 7, 3, 5, 8, 5, 6),
    (6, 6, 7, 4, 3, 9, 7, 6)
);
return Hypoth_PWilcoxonTest(samples, 0.0, "both", 0.05);
// 输出：返回包含统计量、p 值和检验结论的数组
```

## `Hypoth_SignTest(x, pi, q0, tail, alpha)`

声明：function

非参数检验-符号检验。对单样本进行符号检验 可以按照实际需求选择双侧或单侧检验 其中，检验变量服从二项分布

| 参数    | 类型   | 说明                                                                                    |
| ------- | ------ | --------------------------------------------------------------------------------------- |
| `x`     | array  | 样本序列，为一维数字数组类型                                                            |
| `pi`    | float  | 分位点，为实数类型                                                                      |
| `q0`    | float  | 检验值，即检验分位点的值，为实数类型                                                    |
| `tail`  | string | 假设检验的三种类型，both（双侧检验），left（左侧检验），right（右侧检验），为字符串类型 |
| `alpha` | float  | 显著性水平，在0-1之间，为实数类型                                                       |

返回：array

## `Hypoth_SNDTest(x, d2, tail, alpha)`

声明：function

单个正态总体方差的卡方检验，返回的结果是一个数组，第一个数为统计值，二为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)`

声明：function

单个正态总体的均值检验，分为标准差未知和已知两个情况，返回结果是一个数组，第一个数为统计值，二为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_TailRes(sta, v, tail, alpha)`

声明：function

根据tail的取值，进行单侧和双侧检验，原理是根据检验统计量计算P值，若alpha>p，则拒绝原假设，若alpha<p，则接受原假设；最后返回假设检验的结果。原假设分别是

| 参数    | 类型   | 说明                                                                                                                                                  |
| ------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `sta`   | float  | 统计量的值，为实数类型                                                                                                                                |
| `v`     | float  | 整体分布的p分位数，1-v为检验的p值，为实数类型                                                                                                         |
| `tail`  | string | 取值为both、left和right                                                                                                                               |
| `alpha` | float  | 显著性水平，实数或整数，在0-1之间；返回结果:；ret\["Statistic"\]:假设检验统计量；ret\["P-Value "\]:假设检验的P值；ret\["Hypothesis "\]:是否接受原假设 |

返回：array

## `Hypoth_TNDTest(x, tail, alpha)`

声明：function

两个正态总体方差比的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)`

声明：function

两个正态总体均值差的检验，分为标准差未知和已知两个情况，返回的结果是一个数组，第一个数为统计值，二为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

## `Hypoth_WilcoxonTest(x, m0, tail, alpha)`

声明：function

非参数检验-Wilcoxon符号秩检验。单样本Wilcoxon符号秩检验 原理：把观测值和零假设的中心位置之差的绝对值的秩按照不同的符号相加作为其检验统计量。 此检验假定样本来自于连续对称总体。 计算步骤： 1、计算样本点到检验值的距离； 2、对上述距离的绝对值进行排序并计算秩，对相同的样本点则取平均秩； 3、分别计算大于检验值与小于检验值样本的秩和； 4、对得到的统计量计算p值

<!-- tags: 排序 sort -->

| 参数    | 类型   | 说明                                                                                    |
| ------- | ------ | --------------------------------------------------------------------------------------- |
| `x`     | array  | 样本序列，为一维数字数组类型                                                            |
| `m0`    | float  | 检验值，为实数类型                                                                      |
| `tail`  | string | 假设检验的三种类型，both（双侧检验），left（左侧检验），right（右侧检验），为字符串类型 |
| `alpha` | float  | 显著性水平，在0-1之间，为实数类型                                                       |

返回：array

## `normPlot(x, return_type)`

声明：function

基于正态概率的正态性检验, ReturnType为0时返回我们常说的QQ图的散点数据，为1返回衡量散点与直线拟合程度的可决系数

<!-- tags: QQ -->

| 参数          | 类型          | 说明                                                              |
| ------------- | ------------- | ----------------------------------------------------------------- |
| `x`           | array of real | 检验样本序列，为一维数组类型                                      |
| `return_type` | integer       | 返回类型选项，为0返回散点数据，为1返回直线拟合的可决系数。缺省为0 |

返回：array

### 示例

范例01：返回 QQ 图的散点数据

```tsl
x := rand(10);
return normPlot(x);
// 输出：
// array(
// ("采样位数": 0.171976955840364, "理想位数": -1.64484977722168),
// ("采样位数": 0.301570532377809, "理想位数": -1.03643536567688),
// ("采样位数": 0.470976530341431, "理想位数": -0.674489885568619),
// ("采样位数": 0.479131903499365, "理想位数": -0.38532167673111),
// ("采样位数": 0.678062069928274, "理想位数": -0.125661492347717),
// ("采样位数": 0.735156666953117, "理想位数": 0.125661492347717),
// ("采样位数": 0.739045920781791, "理想位数": 0.38532167673111),
// ("采样位数": 0.780685598030686, "理想位数": 0.674489885568619),
// ("采样位数": 0.817699506180361, "理想位数": 1.03643536567688),
// ("采样位数": 0.828364443266764, "理想位数": 1.64484977722168))
```

范例02：返回散点与直线拟合程度的可决系数

```tsl
x := rand(10);
return normPlot(x, 1);
// 输出：0.911334081735257
```
