# 数学函数 / 多元统计分析 ## `Cluster_Kmeans(samples, class_count, options)` 声明:function 执行 K-means 聚类 | 参数 | 类型 | 说明 | | ------------- | ----- | ------------------------------------------------------ | | `samples` | array | 样本矩阵 | | `class_count` | any | 聚类数量 | | `options` | array | 参数表;常见键包括 `maxiter`、`tol`、`distance`、`out` | 返回:array ## `Cluster_System(a, dmethods, methods, options)` 声明:function sample是一个样本数据观测矩阵,每一行是一个样本数据,本函数依据各种不同的距离对样本进行谱系聚类 | 参数 | 类型 | 说明 | | ---------- | ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `a` | array | 样本数据观测矩阵,每一行是一个样本数据 | | `dmethods` | any | 整数或字符串类型,距离方式,参数的输入格式参考\[Distance\]name的输入,缺省欧式距离 | | `methods` | any | 1:组间以中心距离,默认组间中心距离;2:以组间最短距离;3:以组间最大距离 | | `options` | array | 默认为输出谱系树;Options\['best':1\]:输出最优分类;Options\['tree':1\]:输出谱系树,默认输出谱系关系;Options\['out':0\]:最佳分类排列方式。1每一行为一个类(默认)0各个样本对应的类 | 返回:array ## `Cluster_ward(samples)` 声明:function 执行 Ward 聚类 | 参数 | 类型 | 说明 | | --------- | ----- | -------- | | `samples` | array | 样本矩阵 | 返回:array ### 示例 ```tsl samples := array((1.0, 1.0), (1.2, 1.1), (4.0, 4.2), (4.1, 3.9)); return Cluster_ward(samples); // 输出:返回包含 3 个元素的聚类结果数组 ``` ## `corr(a, _type, tail)` 声明:function 计算相关系数矩阵及其检验P值 | 参数 | 类型 | 说明 | | ------- | ------------- | ------------------------------------------------------------------------- | | `a` | array of real | 样本数据观测矩阵,二维数字数组 | | `_type` | integer | 1:pearson相关;2:Kendall等级相关;3:Spearman秩相关 | | `tail` | string | 假设检验的三种类型,字符串,取值为both、left和right,缺省是只输出相关系数 | 返回:array ### 示例 范例01:只返回相关系数矩阵 ```tsl a := rand(3, 4); return corr(a, 1); ``` 范例02:同时返回相关系数矩阵和假设检验 P 值 ```tsl a := rand(3, 4); return corr(a, 1, 'both'); // 输出:返回二维数组;第 0 项为相关系数矩阵,第 1 项为假设检验 P 值 ``` ## `corr_canonical(x, y, alpha, standarize_choice)` 声明:function 典型相关分析,默认条件从中心化数据出发衡量两组随机变量之间的相关性 | 参数 | 类型 | 说明 | | ------------------- | ----- | -------------------------------------------------------------- | | `x` | array | X属性样本数据,二维数字数组,详见实例分析 | | `y` | array | Y属性样本数据,二维数字数组,详见实例分析 | | `alpha` | float | 置信度,实数型,0~1之间,缺省值0(不执行典型相关系数显著性检验) | | `standarize_choice` | any | 原始数据标准化选择,整数型,0~7,缺省值为0(保持原始数据) | 返回:array ## `corr_Kendall(x_values, y_values)` 声明:function 计算 Kendall 秩相关系数 | 参数 | 类型 | 说明 | | ---------- | ----- | ---------- | | `x_values` | array | 第一组数据 | | `y_values` | array | 第二组数据 | 返回:float ## `Corr_partial(x, y, z, _type)` 声明:function 偏相关系数,返回x和y在控制变量z下的偏相关系数,行为样本,列为指标 | 参数 | 类型 | 说明 | | ------- | ----- | ---------------------------------------------------------------------------------------------------------------- | | `x` | array | 变量一,二维实数数组 | | `y` | array | 变量二,二维实数数组 | | `z` | array | 控制变量,二维实数数组 | | `_type` | any | 1:pearson偏相关;2:Spearman偏相关;tail:假设检验的三种类型,字符串,取值为both、left和right,缺省是只输出相关系数 | 返回:any ## `corr_Spearman(x, y)` 声明:function Spearman相关系数,简称斯皮尔曼相关系数,经常用希腊字母ρ表示。 它是衡量两个变量的依赖性的非参数指标。它利用单调方程评价两个统计变量的相关性。 如果数据中没有重复值,并且当两个变量完全单调相关时,斯皮尔曼相关系数则为+1或1 | 参数 | 类型 | 说明 | | ---- | ----- | ------------------- | | `x` | array | 一维数组,随机变量x | | `y` | array | 一维数组,随机变量y | 返回:float ## `corrcoef(a)` 声明:function 计算简单相关系数矩阵及其检验P值,以及简单相关系数置信区间的上下界(显著性水平为0.05) | 参数 | 类型 | 说明 | | ---- | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `a` | array,tablearray | 样本数据观测矩阵,二维数字数组返回结果:Ret["r"]:样本数据观测矩阵的简单相关系数矩阵Ret["p"]:检验相关系数是否显著的P值,二维数组Ret["rlo"]:简单相关系数置信区间的下界,二维数组Ret["rup"]:简单相关系数置信区间的上界,二维数组 | 返回:any ### 示例 ```tsl a := rand(7, 4); return corrcoef(a); // 返回简单相关系数分析 // 输出:结果: ``` ## `correlationMatrix(a1, t)` 声明:function 相关系数矩阵求解 | 参数 | 类型 | 说明 | | ---- | ----- | ---- | | `a1` | array | | | `t` | float | | 返回:array ### 示例 ```tsl a := rand(4, 3); correlationMatrix(a, 1); ``` ## `corrMatrixAdjust(a, adjust_type, n)` 声明:function 相关系数矩阵调整:将相关系数大或小的样本排在一起(重构),输出结构调整,不改变相关系数本身 | 参数 | 类型 | 说明 | | ------------- | ---------- | ------------------------------- | | `a` | array | 二维数字数组,协方差矩阵 | | `adjust_type` | userdefine | 用户自定义,调整方式,默认为0 | | `n` | integer | 整数,分为N类,AdjustType=1专用 | 返回:array ### 示例 ```tsl a := corr(rand(6, 6)); return corrMatrixAdjust(a, 1, 5); ``` ## `cov2CorrMatrix(a)` 声明:function 协方差矩阵转为相关系数矩阵 | 参数 | 类型 | 说明 | | ---- | ----- | ------------------------ | | `a` | array | 二维数字数组,协方差矩阵 | 返回:array ### 示例 ```tsl a := covariance(rand(4, 3)); return cov2CorrMatrix(a); ``` ## `covariance(a)` 声明:function 计算协方差矩阵 | 参数 | 类型 | 说明 | | ---- | ----- | ---- | | `a` | array | | 返回:any ### 示例 ```tsl a := rand(4, 3); covariance(a); ``` ## `discrim(a, x, method, options)` 声明:function 按照给定分类训练样本,根据训练结果对待定样本类别判定,也可作为原样本的回代检验 | 参数 | 类型 | 说明 | | --------- | ------------- | ------------------------------------------------- | | `a` | array of real | 样本数据观测矩阵,每行为一个样本,第0列为所在分类 | | `x` | array of real | 样本数据观测矩阵,为待分类样本 | | `method` | integer | 为判别方法,默认为 0 bayesian 判别,1为距离判别 | | `options` | array | 为方法选项 | 返回:array ### 示例 ```tsl a := array( (3.00, 8.35, 23.53, 7.51, 8.62, 17.42, 10.00, 1.04, 11.21), (3.00, 9.25, 23.75, 6.61, 9.19, 17.77, 10.48, 1.72, 10.51), (3.00, 8.19, 30.5, 4.72, 9.78, 16.28, 7.6, 2.52, 10.32), (3.00, 7.73, 29.2, 5.42, 9.43, 19.29, 8.49, 2.52, 10.00), (3.00, 9.42, 27.93, 8.2, 8.14, 16.17, 9.42, 1.55, 9.76), (3.00, 9.16, 27.98, 9.01, 9.32, 15.99, 9.1, 1.82, 11.35), (3.00, 10.06, 28.64, 10.52, 10.05, 16.18, 8.39, 1.96, 10.81), (1.00, 8.67, 36.05, 7.31, 7.75, 16.67, 11.68, 2.38, 12.88), (1.00, 9.98, 37.69, 7.01, 8.94, 16.15, 11.08, 0.83, 11.67), (1.00, 6.77, 38.69, 6.01, 8.82, 14.79, 11.44, 1.74, 13.23), (1.00, 8.14, 37.75, 9.61, 8.49, 13.15, 9.76, 1.28, 11.28), (1.00, 7.67, 35.71, 8.04, 8.31, 15.13, 7.67, 1.41, 13.25), (1.00, 7.9, 39.77, 8.49, 12.94, 19.29, 11.05, 2.04, 13.29), (1.00, 7.18, 40.91, 7.32, 8.94, 17.6, 12.75, 1.14, 14.8), (1.00, 8.82, 33.7, 7.59, 10.98, 18.82, 14.73, 1.78, 10.1), (1.00, 6.25, 35.02, 4.72, 6.28, 10.03, 7.15, 1.93, 10.39), (2.00, 10.6, 52.41, 7.7, 9.98, 12.53, 11.7, 2.31, 14.69), (3.00, 7.27, 52.65, 3.84, 9.16, 13.03, 15.26, 1.98, 14.57), (3.00, 13.45, 55.85, 5.5, 7.45, 9.55, 9.52, 2.21, 16.3), (3.00, 10.85, 44.68, 7.32, 14.51, 17.13, 12.08, 1.26, 11.57), (3.00, 7.21, 45.79, 7.66, 10.36, 16.56, 12.86, 2.25, 11.69), (3.00, 7.68, 50.37, 11.35, 13.3, 19.25, 14.59, 2.75, 14.87), (2.00, 7.78, 48.44, 8.00, 20.51, 22.12, 15.73, 1.15, 16.61)); x := array( (9.09, 28.12, 7.4, 9.62, 17.26, 11.12, 2.49, 12.65), (9.41, 28.2, 5.77, 10.8, 16.36, 11.56, 1.53, 12.17), (8.7, 28.12, 7.21, 10.53, 19.45, 13.3, 1.66, 11.96), (6.93, 29.85, 4.54, 9.49, 16.62, 10.65, 1.88, 13.61)); options := array('cov': 1, 'backtest': 1, 'crosstest': 1); return discrim(a, x, 0, options); // 计算结果: ``` ## `distance(x, y, name)` 声明:function 计算样本和样本间的距离或样本数据观测矩阵的距离矩阵,其中距离包括欧氏距离,欧氏距离平方,方差加权距离,Chebychev距离,Block距离,夹角余弦,广义距离 | 参数 | 类型 | 说明 | | ------ | ------- | ---------------------------------------------- | | `x` | array | 样本数据观测矩阵或样本数据,一维或二维数字数组 | | `y` | array | 样本数据,一维数字数组 | | `name` | integer | 距离方式,为一整数或字符串 | 返回:array ### 示例 范例01:计算两个样本之间的欧氏距离 ```tsl x := Array(22, 35, 24, 32, 43, 53); y := Array(1, 2, 3, 4, 5, 6); name := 'euclidean'; return distance(x, y, name); // 输出:80.04998438475 ``` 范例02:计算样本数据观测矩阵的距离矩阵 ```tsl x := array( (700.9, 39.77, 8.49, 12.94, 19.27, 11.05, 2.04, 13.29), (7.68, 50.37, 11.35, 13.3, 19.25, 14.59, 2.75, 14.87), (9.42, 27.93, 8.2, 8.14, 16.17, 9.42, 1.55, 9.76), (9.16, 27000.98, 9.01, 9.32, 15.99, 9.1, 1.82, 11.35), (10.06, 28.64, 10.52, 10.05, 16.18, 8.39, 1.96, 10.81)); name := "euclidean"; return distance(x, name); // 输出: // array( // (0, 693.32, 691.62, 26970.08, 690.96), // (693.32, 0, 24.64, 26950.61, 23.54), // (691.62, 24.64, 0, 26973.05, 3.5), // (26970.08, 26950.61, 26973.05, 0, 26972.34), // (690.96, 23.54, 3.5, 26972.34, 0)) ``` ## `factor(x, var_value)` 声明:function 对样本数据进行因子分析,分别采用主成分分析法估计因子载荷矩阵(因子载荷矩阵不唯一),方差最大法做载荷矩阵的正交旋转矩阵,回归方法计算因子得分 | 参数 | 类型 | 说明 | | ----------- | ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `x` | array | 二维维实数数组,表示样本矩阵; | | `var_value` | float | 实数,表示方差贡献率,控制因子个数;;返回结果:ss;Ret\["Correlation Matrix",0\]:样本数据的相关系数矩阵;Ret\["kmo",0\]:KMO检验值;0.9 | 参数 | 类型 | 说明 | | ---- | ----- | -------- | | `a` | array | 一维数组 | | `b` | array | 一维数组 | 返回:array ### 示例 ```tsl a := rand(1000)*5; b := array(0, 1, 2, 3, 4, 5); histc(a, b); ``` ## `princomp(x, ep, is_stand, resid)` 声明:function 主成分分析,isStand为0时从中心化协方差出发进行主成分分析,为1时从相关系数出发,进行主成分分析 | 参数 | 类型 | 说明 | | ---------- | ------------- | ------------------------------------------- | | `x` | array of real | 样本数据,二维数字数组; | | `ep` | real | 累计方差贡献度阈值,实数,缺省时默认为0.85; | | `is_stand` | bool | 是否标准化,布尔类型,缺省时为真; | | `resid` | array | 残差,变参输出,二维数字数组; | 返回:array ### 示例 ```tsl data := array( (947.00, 23.4, 14.8, 45.3, 0.46, 85.2, 373.00, 9.54, 0.37, 3.88), (935.00, 23.2, 16.2, 41.7, 0.4, 83.3, 305.00, 7.9, 0.38, 4.81), (918.2, 20.9, 14.8, 43.8, 0.38, 82.6, 320.00, 9.51, 0.43, 4.52), (910.7, 23.4, 16.1, 44.00, 0.46, 85.2, 338.00, 8.6, 0.33, 3.84), (905.00, 22.9, 17.00, 39.8, 0.45, 80.4, 348.00, 9.53, 0.42, 4.4), (890.6, 22.3, 15.7, 44.00, 0.41, 85.4, 286.00, 8.67, 0.39, 4.5), (853.4, 20.9, 15.9, 41.6, 0.35, 85.4, 273.00, 9.79, 0.42, 4.29), (837.3, 20.2, 14.4, 37.3, 0.33, 82.5, 326.00, 7.62, 0.36, 4.73), (833.3, 22.2, 15.2, 38.3, 0.37, 82.2, 310.00, 7.84, 0.4, 5.1), (760.9, 20.4, 15.5, 40.7, 0.32, 84.2, 268.00, 7.75, 0.35, 4.52), (760.3, 20.8, 15.1, 44.8, 0.35, 79.5, 273.00, 8.91, 0.45, 5.05), (742.5, 23.4, 14.7, 43.1, 0.35, 79.5, 310.00, 9.13, 0.4, 4.36)); return princomp(data, 0.85, 1, resid); ``` ## `Regress_domin_formula(y, x)` 声明:function 相对重要性分析-R2公式分解法 功能描述: 1、相对重要性分析 2、算法:根据含常数项的多元回归的r2的分解公式,来计算 不同解释变量的相对贡献度 3、公式法: 未考虑到不同解释变量之间的相互关系, 贡献度可能为负数 | 参数 | 类型 | 说明 | | ---- | ----- | ---------------------- | | `y` | array | Array of number,因变量 | | `x` | array | Array of number,自变量 | 返回:array ## `Regress_domin_marginal(y, x, variable, option)` 声明:function 相对重要性分析-边际R2法 功能描述: 获取指定变量或所有变量的相对重要性分析, 与公式法相比,考虑了变量的相互关系,且贡献为正, 但是贡献度的和近似等于R2 | 参数 | 类型 | 说明 | | ---------- | ----- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | | `y` | array | 因变量,被解释变量,是一维数字数组 | | `x` | array | 自变量,解释变量,是二维数字数组 | | `variable` | any | 指定变量,通过给X的列名,来指定单个变量,给nil时,表示所有变量【默认】 | | `option` | any | 相对重要性的算法选择;1:利用包含指定变量回归中贡献度的均值计算【默认】,即平均R2边际效用法;0:利用完整回归中剔除其他变量的贡献度计算,即快速R2边际效用法 | 返回:array