Files
playbook/skills/tsl-api-reference/references/codegen/dotnet/math/multivariate_statistical_analysis.md
T

20 KiB
Raw Blame History

数学函数 / 多元统计分析

Cluster_Kmeans(samples, class_count, options)

声明:function

执行 K-means 聚类

参数 类型 说明
samples array 样本矩阵
class_count any 聚类数量
options array 参数表;常见键包括 maxitertoldistanceout

返回: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

示例

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:只返回相关系数矩阵

a := rand(3, 4);
return corr(a, 1);

范例02:同时返回相关系数矩阵和假设检验 P 值

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

示例

a := rand(7, 4);
return corrcoef(a); // 返回简单相关系数分析
// 输出:结果:

correlationMatrix(a1, t)

声明:function

相关系数矩阵求解

参数 类型 说明
a1 array
t float

返回:array

示例

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

示例

a := corr(rand(6, 6));
return corrMatrixAdjust(a, 1, 5);

cov2CorrMatrix(a)

声明:function

协方差矩阵转为相关系数矩阵

参数 类型 说明
a array 二维数字数组,协方差矩阵

返回:array

示例

a := covariance(rand(4, 3));
return cov2CorrMatrix(a);

covariance(a)

声明:function

计算协方差矩阵

参数 类型 说明
a array

返回:any

示例

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

示例

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:计算两个样本之间的欧氏距离

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:计算样本数据观测矩阵的距离矩阵

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 实数,表示方差贡献率,控制因子个数;;返回结果:ssRet["Correlation Matrix",0]:样本数据的相关系数矩阵;Ret["kmo",0]:KMO检验值;0.9<KMO: 非常适合;0.8<KMO<0.9:适合;0.7<KMO<0.8:一般; 0.6<KMO<0.7:适合度较低;KMO<0.6:适合度很低;ret["Total Variance Explained",0]:特征值、方差贡献率、累计方差贡献率等信息;ret["Component Matrix",0]:因子载荷矩阵;ret["Communalities",0]:共同变量度,即载荷矩阵行的平方和;ret["thogonal matrix",0]:正交变换后的载荷矩阵;ret["Rotation matrix",0]:旋转矩阵;ret["Factor score",0]:因子得分

返回:array

示例

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); //
return br;

histc(a, b)

声明:function

端点定位频数,判断序列a 中各个元素在b中各个段位中的频数

参数 类型 说明
a array 一维数组
b array 一维数组

返回:array

示例

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

示例

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