# 数学函数 / 主成分分析 / 中间函数 ## `rotatedComponentMatrix(cm)` 声明:function 对载荷矩阵执行方差最大正交旋转 | 参数 | 类型 | 说明 | | ---- | ----- | -------- | | `cm` | array | 载荷矩阵 | 返回:array ### 示例 范例01:旋转单位载荷矩阵 ```tsl cm := array((1.0, 0.0), (0.0, 1.0)); return rotatedComponentMatrix(cm); // 输出:array((1.0,0.0),(0.0,1.0)) ``` ## `componentMatrix(eigen_value, eigen_vector, max_eigen_value)` 声明:function 载荷矩阵 | 参数 | 类型 | 说明 | | ----------------- | ----- | ------------------------------------ | | `eigen_value` | array | 一维数字数组类型,特征根 | | `eigen_vector` | array | 二维数字数组类型,特征向量 | | `max_eigen_value` | array | 一维数字数组类型,主因子对应的特征根 | 返回:array ### 示例 ```tsl // 设置样本矩阵 zt := array((0.7592, 1.7593, 21.9279, 48.5626, 55.1679), (0.0490, 0.4457, 2.2255, 82.2658, 192.4348), (-2.2313, -1.3096, -59.8883, 3.9922, -80.2419), (0.1364, 0.539, 4.3910, 55.1438, 46.0612), (0.7233, 1.9467, 15.6127, 111.3018, 58.3969)); z_t_s := Standarize_II(z_t); // 标准化 mt_Transposition(z_t_s, z); // 转置 r := correlationMatrix(z); // 相关系数矩阵 Eigen_Jacobi(r, eigen_value, eigen_vector); // 特征值&特征向量 return componentMatrix(eigen_value, eigen_vector, max_eigen_value); ``` ## `componentScoreMatrix(cm, r)` 声明:function 因子得分系数矩阵 | 参数 | 类型 | 说明 | | ---- | ----- | ------------------------------ | | `cm` | array | 二维数字数组类型,载荷矩阵 | | `r` | array | 二维数字数组类型,相关系数矩阵 | 返回:array ### 示例 ```tsl // 设置样本矩阵 zt := array((0.7592, 1.7593, 21.9279, 48.5626, 55.1679), (0.0490, 0.4457, 2.2255, 82.2658, 192.4348), (-2.2313, -1.3096, -59.8883, 3.9922, -80.2419), (0.1364, 0.539, 4.3910, 55.1438, 46.0612), (0.7233, 1.9467, 15.6127, 111.3018, 58.3969)); z_t_s := Standarize_II(z_t); // 标准化 mt_Transposition(z_t_s, z); // 转置 r := correlationMatrix(z); // 相关系数矩阵 Eigen_Jacobi(r, eigen_value, eigen_vector); // 特征值&特征向量 cm := componentMatrix(eigen_value, eigen_vector, max_eigen_value); // 载荷矩阵 return componentScoreMatrix(cm, r); ``` ## `eastrq(b, c, q)` 声明:function 返回 Eastrq 对应的数据 | 参数 | 类型 | 说明 | | ---- | ----- | ---------------- | | `b` | array | 二维数字数组类型 | | `c` | array | 二维数字数组类型 | | `q` | array | 二维数字数组类型 | 返回:int ### 示例 ```tsl b := array((1.0, 2.0, 3.0), (2.0, 3.0, 4.0), (3.0, 4.0, 5.0)); c := array((1.0, 0.0, 0.0), (0.0, 1.0, 0.0), (0.0, 0.0, 1.0)); q := array((1.0, 0.0, 0.0), (0.0, 1.0, 0.0), (0.0, 0.0, 1.0)); return eastrq(b, c, q); // 输出:0 ``` ## `factorScoreMatrix(cs, z)` 声明:function 主因子得分 | 参数 | 类型 | 说明 | | ---- | ----- | ------------------------------ | | `cs` | array | 二维数字数组类型,因子得分矩阵 | | `z` | array | 二维数字数组类型,原始数据矩阵 | 返回:array ### 示例 ```tsl // 设置样本矩阵 zt := array((0.7592, 1.7593, 21.9279, 48.5626, 55.1679), (0.0490, 0.4457, 2.2255, 82.2658, 192.4348), (-2.2313, -1.3096, -59.8883, 3.9922, -80.2419), (0.1364, 0.539, 4.3910, 55.1438, 46.0612), (0.7233, 1.9467, 15.6127, 111.3018, 58.3969)); z_t_s := Standarize_II(z_t); // 标准化 mt_Transposition(z_t_s, z); // 转置 r := correlationMatrix(z); // 相关系数矩阵 Eigen_Jacobi(r, eigen_value, eigen_vector); // 特征值&特征向量 cm := componentMatrix(eigen_value, eigen_vector, max_eigen_value); // 载荷矩阵 cs := componentScoreMatrix(cm, r); // 因子得分矩阵 return factorScoreMatrix(cs, zt); ``` ## `fScoreResult(factor_arr, max_eigen_value)` 声明:function 获取主因子得分 | 参数 | 类型 | 说明 | | ----------------- | ----- | ------------------------------------ | | `factor_arr` | array | 二维数字数组类型,因子得分矩阵 | | `max_eigen_value` | array | 二维数字数组类型,主因子对应的特征根 | 返回:array ### 示例 ```tsl // 设置样本矩阵 zt := array((0.7592, 1.7593, 21.9279, 48.5626, 55.1679), (0.0490, 0.4457, 2.2255, 82.2658, 192.4348), (-2.2313, -1.3096, -59.8883, 3.9922, -80.2419), (0.1364, 0.539, 4.3910, 55.1438, 46.0612), (0.7233, 1.9467, 15.6127, 111.3018, 58.3969)); z_t_s := Standarize_II(z_t); // 标准化 mt_Transposition(z_t_s, z); // 转置 r := correlationMatrix(z); // 相关系数矩阵 Eigen_Jacobi(r, eigen_value, eigen_vector); // 特征值&特征向量 cm := componentMatrix(eigen_value, eigen_vector, max_eigen_value); // 载荷矩阵 cs := componentScoreMatrix(cm, r); // 因子得分系数矩阵 f_arr := factorScoreMatrix(cs, z_t_s); // 样本公共因子得分 return fScoreResult(f_arr, max_eigen_value); ``` ## `getEigenValue(a, eigen_value)` 声明:function 通过赋值得到EigenValue | 参数 | 类型 | 说明 | | ------------- | ----- | ---------------- | | `a` | array | 二维数字数组类型 | | `eigen_value` | array | 一维数字数组类型 | 返回:any ### 示例 ```tsl matrix := array((2.0, 1.0), (1.0, 3.0)); eigen_value := array(); getEigenValue(matrix, eigen_value); return eigen_value; // 输出:返回包含 2 个元素的特征值数组 ``` ## `mbbub(p, z)` 声明:function 排序,对数组P按照从小到大的顺序排序,把数组排序的顺序对应的下标值返回到数组Z中 | 参数 | 类型 | 说明 | | ---- | ----- | ---------------- | | `p` | array | 一维数字数组类型 | | `z` | array | 一维数字数组类型 | 返回:array ### 示例 ```tsl p := array(2.72, 1.24, 1.31, 0.02, 0.88, 2.18); return mbbub(p, z); ```