# 数学函数 / 统计推断 ## `estimate_sp(mx, n, alpha, tail)` 声明:function 估计单个总体比率的置信区间 | 参数 | 类型 | 说明 | | ------- | ------- | --------------------------------------------------- | | `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 估计两个总体比率之差的置信区间 | 参数 | 类型 | 说明 | | ------- | ------ | --------------------------------------------------- | | `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统计量来分别检验假设,原理略 | 参数 | 类型 | 说明 | | ------- | ----- | ----------------------------------------------------------------------------------------------- | | `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 相互独立 检验统计量: 其中 | 参数 | 类型 | 说明 | | ------- | ----- | -------------------------------- | | `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
| 参数 | 类型 | 说明 | | ------- | ------ | --------------------------------------------------------------------------------------- | | `x` | array | 样本序列,为一维数字数组类型 | | `m0` | float | 检验值,为实数类型 | | `tail` | string | 假设检验的三种类型,both(双侧检验),left(左侧检验),right(右侧检验),为字符串类型 | | `alpha` | float | 显著性水平,在0-1之间,为实数类型 | 返回:array ## `normPlot(x, return_type)` 声明:function 基于正态概率的正态性检验, ReturnType为0时返回我们常说的QQ图的散点数据,为1返回衡量散点与直线拟合程度的可决系数 | 参数 | 类型 | 说明 | | ------------- | ------------- | ----------------------------------------------------------------- | | `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 ```