#### 数学函数 ##### 内容 - 数值计算 - 常用数学函数 - 位运算函数 - 三角函数 - 角度量转换 - 双曲线函数 - 指数对数函数 - 精度设置及取整运算 - 比较判断函数 - 一般统计量 - 次序统计量 - 统计函数 - 统计分布 - 统计推断 - 多元统计分析 - 回归 - 灰色系统 - 主成分分析 - 时间序列分析 - 优化 - 小波分析 - 财务函数 - 增长率与比率 - 概率分布 - 信号处理 ##### 数值计算 ###### 内容 - 数值微积分 - 线性方程组的求解 - 插值 - 矩阵运算及分解 - 数组扩展 - 其他 ###### 数值微积分 ####### 内容 - ig_Romberg - integral - ig_Trapezoid_1 - ig_Trapezoid_2 - ig_Simpson_1 - ig_Gauss - ig_Chebyshev - ig_Simpson_2 - sf_SinX - sf_CosX - sf_eX - sf_EllipseX_1 - sf_EllipseX_2 - Conv - Hessian ####### ig_Romberg 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl a := 1; b := 3; callback := "fun1"; ig_Romberg(a, b, CallBack, v); return v; function fun1(x) begin return 2 * x + 1; end; // 结果:10 ``` 参考integral ig_Trapezoid_1 ig_Simpson_1 ig_Gauss ig_Chebyshev ####### integral 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl a := 1; b := 3; callback := "fun1"; return integral(callback, a, b, ’Romberg’); ``` 其中fun1函数: ```tsl function fun1(x) begin return 2 * x + 1; end; // 结果:10 ``` 参考ig_Trapezoid_1 ig_Trapezoid_2 ig_Simpson_1 ig_Romberg ig_Gauss ig_Chebyshev ig_Simpson_2 ####### ig_Trapezoid_1 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl a := 1; b := 3; callback := "fun1"; ig_Trapezoid_1(a, b, CallBack, v); return v; function fun1(x) begin return 2 * x + 1; end; // 结果:10 ``` 参考integral ig_Simpson_1 ig_Romberg ig_Gauss ig_Chebyshev ####### ig_Trapezoid_2 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl a := 1; b := 3; callback := "fun1"; ig_Trapezoid_2(a, b, CallBack, v); return v; function fun1(x) begin return 2 * x + 1; end; // 结果:10 ``` 参考integral ig_Trapezoid_1 ig_Simpson_1 ig_Romberg ig_Gauss ig_Chebyshev ####### ig_Simpson_1 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl a := 1; b := 3; callback := "fun1"; ig_Simpson_1(a, b, CallBack, v); return v; function fun1(x) begin return 2 * x + 1; end; // 结果:10 ``` 参考integral ig_Trapezoid_1 ig_Romberg ig_Gauss ig_Chebyshev ####### ig_Gauss 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl a := 1; b := 3; callback := "fun1"; ig_Gauss(a, b, CallBack, v); return v; function fun1(x) begin return 2 * x + 1; end; // 结果:10 ``` 参考integral ig_Trapezoid_1 ig_Simpson_1 ig_Romberg ig_Chebyshev ####### ig_Chebyshev 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl a := 1; b := 3; callback := "fun1"; ig_Chebyshev(a, b, CallBack, v); return v; function fun1(x) begin return 2 * x + 1; end; // 结果:10 ``` 参考integral ig_Trapezoid_1 ig_Simpson_1 ig_Romberg ig_Gauss ####### ig_Simpson_2 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl a := 1; b := 2; callback1 := "y1"; callback2 := "y2"; callback3 := "f"; ig_Simpson_2(a, b, CallBack1, CallBack2, CallBack3, v); return v; function y1(x) begin return -x; end; function y2(x) begin return x; end; function f(x, y) begin return x + 2 * y; end; // 结果:4.66667 ``` 参考integral ig_Simpson_1 ####### sf_SinX 范例 ```tsl sf_sinx(2, v); return v; // 结果: 1.60541 ``` 参考sf_CosX sf_eX ####### sf_CosX 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl sf_CosX(2, v); return v; // 结果: 0.42298 ``` 参考sf_SinX sf_eX ####### sf_eX 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl sf_eX(2, v); return v; // 结果:-0.0489 ``` 参考sf_SinX sf_CosX ####### sf_EllipseX_1 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl k := 6; f := 8; sf_EllipseX_1(k, f, v); return v; // 结果:8.05747 ``` 参考sf_EllipseX_2 ####### sf_EllipseX_2 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl k := 6; f := 8; sf_EllipseX_2(k, f, v); return v; // 结果:7.94314 ``` 参考sf_EllipseX_1 ####### Conv 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl a := array(0.4044, 0.32362, 0.38548, 0.17435, 0.08502, 0.41899, 0.02551, 0.46226); b := array(0.82284, 0.7466, 0.17411, 0.85894, 0.7105, 0.51353, 0.30399, 0.01498, 0.0914, 0.36445, 0.14731, 0.1659, 0.98853, 0.44569, 0.11908); return conv(a, b); ``` ####### Hessian 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return hessian("Hessian.demo", array(3, 4)); ``` ###### 线性方程组的求解 ####### 内容 - se_Gauss - se_Gauss_Jordan - se_Ldl - se_Cholesky - se_Gauss_Seidel ####### se_Gauss 范例 ```tsl A := array((1, 0, 0), (0, 2, 0), (0, 0, 3)); B := array(1, 4, 9); se_gauss(A, B, X); return X; // 结果:array(1,2,3); ``` 参考se_Gauss_Jordan se_Ldl se_Cholesky se_Gauss_Seidel ####### se_Gauss_Jordan 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl A := array((1, 0, 0), (0, 2, 0), (0, 0, 3)); B := array((1, 3), (4, 6), (9, 9)); se_Gauss_Jordan(A, B, X); return X; ``` X=参考se_Gauss se_Ldl se_Cholesky se_Gauss_Seidel ####### se_Ldl 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl A := array((1, 0, 0), (0, 2, 0), (0, 0, 3)); B := array((1, 3), (4, 6), (9, 9)); se_Ldl(A, B, X); return X; ``` X=参考se_Gauss se_Gauss_Jordan se_Cholesky se_Gauss_Seidel ####### se_Cholesky 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl A := array((1, 0, 0), (0, 2, 0), (0, 0, 3)); B := array((1, 3), (4, 6), (9, 9)); se_Cholesky(A, B, X); return X; ``` X=参考se_Gauss se_Gauss_Jordan se_Ldl se_Gauss_Seidel ####### se_Gauss_Seidel 范例 ```tsl A := array((1, 0, 0), (0, 2, 0), (0, 0, 3)); B := array((1, 3), (4, 6), (9, 9)); se_Gauss_Jordan(A, B, X); return X; ``` X=参考se_Gauss se_Gauss_Jordan se_Ldl se_Cholesky ###### 插值 ####### 内容 - interp - interp_unit - ip_Lagrangian_A - ip_Lagrangian_B - ip_Parabola_A - ip_Parabola_B - ip_Hermite_A - ip_Hermite_B - ip_Aitken_A - ip_Aitken_B - ip_Spline_A - ip_Spline_B - ip_Spline_C - ip_SLQ - ip_SLG ####### interp 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 算法 已知数据集有[(x0,y0), (x1,y1)…(xn,yn)] 1、"nearest" 最邻近插值: 在数据集寻找两点(xi,yi), (xi+1,yi+1),满足xi≤x≤xi+1。 插值方程fx=yi+1 (x-xi>x-xi+1)yi (x-xi≤x-xi+1) 2、"linear" 分段线性插值: 插值函数为一次多项式fx=ax+b, (x0,y0), (x1,y1)是数据集上相异的两点,且x0x1) a1x = 1+2x-x0x1-x02 同样由β0(x0) = β0(x1)= β0'(x1) = 0,可令 β0(x) = c(x-x0)( x-x1)2 再由β0'(x0) = 1,得c = 1(x0-x1)2 β0(x) = (x-x0) ( x-x1x0-x1)2 ,β1(x) = (x-x1) ( x-x0x1-x0)2 a0(x) = [1+2x-x0x1-x0] ( x-x1x0-x1)2 ,β0(x) = (x-x0) ( x-x1x0-x1)2 a1(x) = [1+2x-x1x0-x1] ( x-x0x1-x0)2 ,β1(x) = (x-x1) ( x-x0x1-x0)2 即 a0(x) = [1+2l1(x)]l02(x) β0(x) = [x-x0]l02(x) a1(x) = [1+2l0(x)]l12(x) β1(x) = [x-x1]l12(x) l02(x) ,l12(x) 为以(x0,y0),(x1,y1) 插值点得Lagrange一次基函数。 可得满足条件得三次埃尔米特插值多项式为 H3x = y0a0(x) + y1a1(x) + m0β0x+m1β1x = y0[1+2x-x0x1-x0] ( x-x1x0-x1)2 + y1[1+2x-x1x0-x1] ( x-x0x1-x0)2 + m0(x-x0) ( x-x1x0-x1)2 + m1(x-x1) ( x-x0x1-x0)2范例 ```tsl X := array(0, 0.01) - > 1; Y := X ^ 2 - X; Xi := array(0.005, 0.01) - > 1; Yi := interp(X, Y, Xi, 'spline'); return Yi; // 结果:6 ``` 1、"nearest" ```tsl x_ := array(5, 1, 19, 8); y_ := array(2, 3, 1, 7); xi := array(4, 12); return interp(x_, y_, xi, "nearest"); // 返回: array(2,7) ``` 2、" linear" 分段线性插值 ```tsl x_ := array(5, 1, 19, 8); y_ := array(2, 3, 1, 7); xi := array(4, 12); return interp(x_, y_, xi, "linear"); // 返回: array(2.25,4.8182) ``` 3、"spline" 三次样条插值 ```tsl x_ := array(5, 1, 19, 8); y_ := array(2, 3, 1, 7); xi := array(4, 12); return interp(x_, y_, xi, "spline"); // 返回: array(1.1407,13.9444) ``` 4、"pchip" 分段三次hermite插值 ```tsl x_ := array(5, 1, 19, 8); y_ := array(2, 3, 1, 7); xi := array(4, 12); return interp(x_, y_, xi, "pchip"); // 返回: array(2.0156,6.7115) ``` ####### interp_unit 说明:插值相关函数的单元 其中包括的接口如下: ######## 内容 - HISTC2 - chckxy - nearest - linear - pchip - pwch - ppval - spline ######## HISTC2 算法 对于a中每个元素a[j]在b中查找b[i]<=a[j]<=b[j+1],取a[j]的位置为i+1,返回a中满足条件的元素在b中的所属位置。i,j从0开始。范例 ```tsl uses interp_unit; // 置顶 a := 1 - > 10; b := 3 - > 7; return HISTC2(a, b); // 返回:array(0,0,1,1,2,3,4,0,0,0) ``` ######## chckxy 范例 ```tsl uses interp_unit; // 置顶 x := array(5, 1, 19, 8); y := array(2, 3, 1, 7); chckxy(x, y); return x | y; ``` ######## nearest 算法 已知数据集有[(x0,y0), (x1,y1)…(xn,yn)] 在数据集寻找两点(xi,yi), (xi+1,yi+1),满足xi≤x≤xi+1。 插值方程fx=yi+1 (x-xi>x-xi+1)yi (x-xi≤x-xi+1)范例 ```tsl uses interp_unit; // 置顶 x := array(5, 1, 19, 8); y := array(2, 3, 1, 7); xi := array(4, 12); return nearest(x, y, xi); // 返回:array(3,1) ``` ######## linear 算法 插值函数为一次多项式fx=ax+b, (x0,y0), (x1,y1)是数据集上相异的两点,且x0x1) a1x = 1+2x-x0x1-x02 同样由β0(x0) = β0(x1)= β0'(x1) = 0,可令 β0(x) = c(x-x0)( x-x1)2 再由β0'(x0) = 1,得c = 1(x0-x1)2 β0(x) = (x-x0) ( x-x1x0-x1)2 ,β1(x) = (x-x1) ( x-x0x1-x0)2 a0(x) = [1+2x-x0x1-x0] ( x-x1x0-x1)2 ,β0(x) = (x-x0) ( x-x1x0-x1)2 a1(x) = [1+2x-x1x0-x1] ( x-x0x1-x0)2 ,β1(x) = (x-x1) ( x-x0x1-x0)2 即 a0(x) = [1+2l1(x)]l02(x) β0(x) = [x-x0]l02(x) a1(x) = [1+2l0(x)]l12(x) β1(x) = [x-x1]l12(x) l02(x) ,l12(x) 为以(x0,y0),(x1,y1) 插值点得Lagrange一次基函数。 可得满足条件得三次埃尔米特插值多项式为 H3x = y0a0(x) + y1a1(x) + m0β0x+m1β1x = y0[1+2x-x0x1-x0] ( x-x1x0-x1)2 + y1[1+2x-x1x0-x1] ( x-x0x1-x0)2 + m0(x-x0) ( x-x1x0-x1)2 + m1(x-x1) ( x-x0x1-x0)2范例 ```tsl uses interp_unit; // 置顶 x := array(5, 1, 19, 8); y := array(2, 3, 1, 7); xx := array(4, 12); return pchip(x, y, xx); // 返回:array(3.3403,6.9345) ``` ######## pwch ######## ppval ######## spline 范例 ```tsl x := array(5, 1, 19, 8); y := array(2, 3, 1, 7); xx := array(4, 12); return spline(x, y, xx); // 返回:array(1.1407,13.9444) ``` ####### ip_Lagrangian_A 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl X := array(1, 1.2, 1.5, 2.3, 2.9, 4, 4.5, 8); Y := X ^ 2 - X; xv := 3; ip_Lagrangian_A(X, Y, xv, yv); return yv; // 结果:6 ``` 参考ip_Lagrangian_B ip_Parabola_A ip_Hermite_A ip_Aitken_A ####### ip_Lagrangian_B 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl X0 := 1.3; h := 0.5; Y := array(1, 3, 4, 6, 9, 11, 13); xv := 3; ip_Lagrangian_B(X0, h, Y, xv, yv); return yv; // 结果:7.17766 ``` 参考ip_Lagrangian_A ip_Parabola_B ip_Hermite_B ip_Aitken_B ####### ip_Parabola_A 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl X := array(1, 1.2, 1.5, 2.3, 2.9, 4, 4.5, 8); Y := array(1, 3, 4, 7, 9, 13, 15, 20); xv := 3; ip_Parabola_A(X, Y, xv, yv); return yv; // 结果:9.34581 ``` 参考ip_Lagrangian_A ip_Parabola_B ip_Hermite_A ip_Aitken_A ####### ip_Parabola_B 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl X0 := 1.3; h := 0.5; Y := array(1, 3, 4, 6, 9, 11, 13); xv := 3; ip_Parabola_B(X0, h, Y, xv, yv); return yv; // 结果:7.08 ``` 参考ip_Lagrangian_B ip_Parabola_A ip_Hermite_B ip_Aitken_B ####### ip_Hermite_A 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl X := array(1, 1.2, 1.5, 2.3, 2.9, 4, 4.5, 8); Y := X ^ 2 - X; Dy := 2 * X - 1; xv := 3; ip_Hermite_A(X, Y, Dy, xv, yv); return yv; // 结果:6 ``` 参考ip_Lagrangian_A ip_Parabola_A ip_Hermite_B ip_Aitken_A ####### ip_Hermite_B 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl X0 := 1; h := 1; Y := array(0, 2, 6, 12, 20, 30); Dy := array(1, 3, 5, 7, 9, 11); xv := 4.5; ip_Hermite_B(X0, h, Y, Dy, xv, yv); return yv; // 结果:15.75 ``` 参考ip_Lagrangian_B ip_Parabola_B ip_Hermite_A ip_Aitken_B ####### ip_Aitken_A 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl X := array(1, 1.2, 1.5, 2.3, 2.9, 4, 4.5, 8); Y := array(1, 3, 4, 7, 9, 13, 15, 20); xv := 3; ip_Aitken_A(X, Y, xv, yv); return yv; // 结果:9.32917 ``` 参考ip_Lagrangian_A ip_Parabola_A ip_Hermite_A ip_Aitken_B ####### ip_Aitken_B 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl X0 := 1.3; h := 0.5; Y := array(1, 3, 4, 6, 9, 11, 13); xv := 3; ip_Aitken_B(X0, h, Y, xv, yv); return yv; // 结果:7.08 ``` 参考ip_Lagrangian_B ip_Parabola_B ip_Hermite_B ip_Aitken_A ####### ip_Spline_A 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl X := array(1, 2, 3, 4, 5, 6); Y := array(0, 2, 6, 12, 20, 30); dy0 := 1; dyn_1 := 11; xv := 4.5; ip_Spline_A(X, Y, dy0, dyn_1, xv, yv); return yv; // 结果:15.75 ``` 参考ip_Spline_B ip_Spline_C ####### ip_Spline_B 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl X := array(1, 2, 3, 4, 5, 6); Y := array(0, 2, 6, 12, 20, 30); ddy0 := 2; ddyn_1 := 2; xv := 4.5; ip_Spline_B(X, Y, ddy0, ddyn_1, xv, yv); return yv; // 结果:15.2828 ``` 参考ip_Spline_A ip_Spline_C ####### ip_Spline_C 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl X := array(1, 2, 3, 4, 5, 6); Y := array(2, 6, 3, 0, 3, 2); xv := 3.5; ip_Spline_C(X, Y, xv, yv); return yv; // 结果:0.71591 ``` 参考ip_Spline_A ip_Spline_B ####### ip_SLQ 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl X := array(1, 2, 3, 4); Y := array(1, 2, 3); z := array((4, 6, 8), (6, 9, 10), (11, 20, 25), (14, 24, 30)); xv := 3.5; yv := 4.5; ip_SLQ(X, Y, z, xv, yv, zv); return zv; // 结果:29.59375 ``` 参考ip_SLG ####### ip_SLG 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl X := array(1, 2, 3, 4); Y := array(1, 2, 3); z := array((4, 6, 8), (6, 9, 10), (11, 20, 25), (14, 24, 30)); xv := 3.5; yv := 4.5; ip_SLG(X, Y, z, xv, yv, zv); return zv; // 结果:31.54688 ``` 参考ip_SLQ ###### 矩阵运算及分解 ####### 内容 - mt_Transposition - mt_Multiplication - mt_Addition - mt_iv_Gauss_Jordan - mt_iv_Ldl - mt_Subtraction - Mt_decompose_lu - mt_decompose_qr - mt*va* Cholesky - mt_decompose_chol - chol - mt_va_Gauss_Jordan - mt_decompose_svd - mt_decompose_ldl - mt_decompose_eig - Standarize_II - ReIndex2 - Det - isSymmetry - Orth - roots - Eigen - pinv - norm2 - Cond - diag - isDefinite ####### mt_Transposition 用途:数值计算相关函数。 参数: 返回:整数。 范例 ```tsl A := array((1, 3, 6), (0, 4, 2)); mt_Transposition(A, C); return C; // 结果: array((1, 0), (3, 4), (6, 2)) ``` 参考mt_Multiplication mt_Addition mt_Subtraction ####### mt_Multiplication 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl A := array((1, 3, 6), (0, 4, 2)); B := array((1, 2), (4, 0), (3, 2)); mt_Multiplication(A, B, C); return C; // 结果: array((31, 14), (22, 4)) ``` 参考mt_Addition mt_Subtraction mt_Transposition ####### mt_Addition 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl A := array((1, 3, 6), (0, 4, 2)); B := array((1, 2, 4), (0, 3, 2)); mt_Addition(A, B, C); return C; // 结果: array((2, 5, 10), (0, 7, 4)) ``` 参考mt_Multiplication mt_Subtraction mt_Transposition ####### mt_iv_Gauss_Jordan 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl A := array((3, 2), (4, 6)); mt_iv_Gauss_Jordan(A, X); return X; // 结果: array((0.6, -0.2), (-0.4, 0.3)) ``` 参考mt_iv_Ldl ####### mt_iv_Ldl 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl A := array((1, 4), (4, 6)); mt_iv_Ldl(A, X); return X; // 结果: array((-0.6, 0.4), (0.4, -0.1)) ``` 参考mt_iv_Gauss_Jordan ####### mt_Subtraction 用途:进行字符串提取或替换处理。 参数: 返回:处理后的结果值。 范例 ```tsl A := array((1, 3, 6), (0, 4, 2)); B := array((1, 2, 4), (0, 3, 2)); mt_Subtraction(A, B, C); return C; // 结果: array((0, 1, 2), (0, 1, 0)) ``` 参考mt_Multiplication mt_Addition mt_Transposition ####### Mt_decompose_lu 用途:数值计算相关函数。 参数: 返回:整数。 范例 ```tsl H := corr(rand(100, 4)); Mt_decompose_lu(H, L, U); return array(L, U); ``` 参考Mt_decompose_lu chol mt_decompose_qr mt_decompose_eig mt_decompose_svd mt_decompose_ldl mt_decompose_chol ####### mt_decompose_qr 用途:数值计算相关函数。 参数: 返回:整数。 范例 范例01: ```tsl H := corr(rand(100, 4)); mt_decompose_qr(H, Q, R); // QR分解 return array(Q, R); ``` 范例02: ```tsl H := corr(rand(100, 4)); return mt_decompose_qr(H); // 返回上三角矩阵 ``` 范例03: ```tsl H := corr(rand(100, 4)); mt_decompose_qr(H, Q, R, E, 0); return array(Q, R, E); ``` 参考Mt_decompose_lu chol mt_decompose_eig mt_decompose_svd mt_decompose_ldl mt_decompose_chol ####### mt*va* Cholesky 范例 ```tsl A := array((1, 2), (2, 6)); mt_va_Cholesky(A, v); return v; // 结果:1.414 ``` 参考mt_va_Gauss_Jordan ####### mt_decompose_chol 参考Mt_decompose_lu chol mt_decompose_qr mt_decompose_eig mt_decompose_ldl ####### chol 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl H := corr(rand(100, 4)); chol(H, L, p); // 乔列斯基分解 if p = -1 then return L; // p=-1表示分解成功 ``` 参考Mt_decompose_lu mt_decompose_qr mt_decompose_eig mt_decompose_svd mt_decompose_ldl mt_decompose_chol ####### mt_va_Gauss_Jordan 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl A := array((1, 4), (4, 6)); mt_va_Gauss_Jordan(A, v); return v; // 结果:-10 ``` 参考mt*va* Cholesky ####### mt_decompose_svd 算法 假设矩阵A为一个m×n的矩阵,定义矩阵A的SVD分解为: A=USDT 其中U为m×m矩阵,S为m×n矩阵,D为个n×n矩阵,其中U、D都为酉矩阵。 求解U、S、D三个矩阵的步骤如下: 1)根据下式求解方阵ATA的特征值与特征向量: ATAdi=λidi n个特征向量di组成右奇异矩阵D。 同理,利用AATui=λiui计算可得左奇异矩阵U。 2)求奇异值矩阵S(除了对角线为奇异值σi,其余位置为0)可根据以下公式求得: AD=USAdi=uiσi (也可通过σi=λi计算),即可计算出奇异值矩阵S。范例 ```tsl // 计算矩阵A的SVD分解 A := array((0, 1), (1, 1), (1, 0)); Mt_Decompose_SVD(A, U, S, D); // 反推初始矩阵A,使用U:*(eye(3,2)*S):*`D; return array((U), (S), (D)); ``` U,S,D矩阵分别为: ####### mt_decompose_ldl 参考Mt_decompose_lu chol mt_decompose_qr mt_decompose_eig mt_decompose_chol ####### mt_decompose_eig 用途:数值计算相关函数。 参数: 返回:整数。 范例 ```tsl H := corr(rand(100, 4)); mt_decompose_eig(H, wr, wi, vr); return array(wr, wi, vr); ``` 参考Mt_decompose_lu chol mt_decompose_qr mt_decompose_svd mt_decompose_ldl mt_decompose_chol ####### Standarize_II 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 每列之和为0 A := rand(5, 5); A := Standarize_II(a, 7); return A; ``` ####### ReIndex2 范例 范例数据表:a:=array('C':('A':1,'B':'too'),'D':('A':2,'B':'two')); 其显示如下: 范例一:将表列标改为数字 ```tsl a := array('C':('A':1, 'B':'too'), 'D':('A':2, 'B':'two')); return reindex2(a, 0); ``` 范例二:将行列标作为首列首行 ```tsl a := array('C':('A':1, 'B':'too'), 'D':('A':2, 'B':'two')); return reindex2(a, 5); ``` ####### Det 范例 ```tsl A := array((1, 2), (3, 4)); return det(A); // -2 ``` ####### isSymmetry 用途:判断条件是否成立。 参数: 返回:布尔值。 范例 ```tsl A := array((2, 1), (1, 3)); return isSymmetry(A, 0.1); // 1 ``` ####### Orth 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 计算矩阵A的标准正交基 A := array((0, 1), (1, 1), (1, 0)); return Orth(A); ``` ####### roots 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求根:3x^3+x^2+x^1+0^0=0 return roots(array(0, 1, 1, 3)); ``` ####### Eigen 范例 ```tsl A := array((1, 2), (3, 4)); eigen(A, eigen); return eigen; // array(-0.37,5.37) ``` ####### pinv 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array((9, 1), (-1, 0), (0, 2), (1, 1)); return pinv(x); ``` ####### norm2 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl A := array((2, 1), (1, 3)); return norm2(A, 'inf'); // 4 ``` ####### Cond 范例 ```tsl x := array((9, 1), (-1, 0), (0, 2), (1, 1)); return cond(x); // 4.22 ``` ####### diag 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl A := array((2, 1), (1, 3)); return diag(A); // array(2,3); ``` ####### isDefinite 用途:判断条件是否成立。 参数: 返回:布尔值。 范例 ```tsl x := array((3, 1), (1, 4)); return isDefinite(x); // 1 ``` ###### 数组扩展 ####### 内容 - Any - ALL ####### Any 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 范例一: ```tsl // 判断非数组的真假 return any('a', 0); ``` 范例二: ```tsl // 判断特殊数据类型的真假 return any(array(1, '', ' ', nan, nil, inf, -inf, array()), 1); ``` 结果 范例三: ```tsl // 判断二维数组的行 f := array('e':('A':1, 'B':0), 'f':('A':2, 'B':''), 'd':('A':3, 'B':nil)); return any(f, 1); ``` 结果:’e’,’f’,’d’为行标,表示该行结果。其中,’d’行中,对集合(3,nil)判断为真,则该行值判断结果为1,’B’列中。 范例四: ```tsl // 判断多维数组的行 t := array('e':('A':0, 'B':0), 'f':('A':2, 'B':array(1, 0))); return any(t, 1); ``` 结果:’f’行中对集合(0,array(1,0))->(0,1)->1,则该列结果为1 范例五: ```tsl // 判断多维数组的列 t := array('e':('A':1, 'B':1), 'f':('A':2, 'B':array(1, 0))); return any(t, 2); ``` 结果 ####### ALL 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 范例一: ```tsl // 判断数组中所有元素是否都为真 return all(array(1, 2, -1, 1, 9)); ``` 范例二: ```tsl // 判断特殊数据类型的真假 return all(array(1, '', ' ', nan, nil, inf, -inf, array()), 1); ``` 结果 范例三: ```tsl // 判断二维数组的行 f := array('e':('A':1, 'B':0), 'f':('A':2, 'B':3), 'd':('A':3, 'B':nil)); return all(f, 1); ``` 结果:’e’,’f’,’d’为行标,表示该行判断结果。其中,’d’行中,对集合(3,nil)判断为假,因为其中nil判断为假。 范例四: ```tsl // 判断多维数组的行 t := array('e':('A':1, 'B':1), 'f':('A':2, 'B':array(1, 0))); return all(t, 1); ``` 结果:’f’行中对集合(2,array(1,0))->(1,0)->0,则该行结果为0 范例五: ```tsl // 判断多维数组的列 t := array('e':('A':1, 'B':1), 'f':('A':2, 'B':array(1, 0))); return all(t, 2); ``` 结果:’B’列中对集合(1,array(1,0))->(1,0)->0,则该行结果为0 ###### 其他 ####### 内容 - perms - nchoosek - MaxDrawDown - MinRecoveryTime - Betainc - PercentileOfScore - GenerateCombinations - Percentage ####### perms 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 范例01:求10的阶乘 ```tsl return perms(10); ``` 返回结果:3628800 范例02:排列组合 ```tsl return perms(array("a", "b", "c")); ``` 返回结果: array( ("c","b","a"), ("c","a","b"), ("b","c","a"), ("b","a","c"), ("a","b","c"), ("a","c","b")) 范例03:返回数组Array(('A','B'),('C', 'D'))中任意两个数据的排列组合 ```tsl v := array(('A', 'B'), ('C', 'D')); return perms(v, 2); ``` 范例04:对排列组合的每列求和 ```tsl function test_1cth(); begin func := createobject("funcexe"); a := array("A", "B", "C"); return perms(a, 3, func); end; type funcexe = class() data; function create(); begin data := ""; end; function exe(dat); begin data += dat; end; end; ``` ####### nchoosek 用途:数值计算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return nchoosek(array('a', 'b', 'c', 'd'), 2); ``` 结果: array( ("d","c"), ("d","b"), ("d","a"), ("c","b"), ("c","a"), ("b","a")) ####### MaxDrawDown 用途:进行数值统计计算。 参数: 返回:处理后的结果值。 算法 数据差序列 Fi,j=xj-xi ,其中(i 11; return LogN(Base, X); ``` 这里最直观的的理解是把二维数组看成一维数据(其每一个元素是一维数组),所以,这个问题也就简化为两个等大小的一维数组在做计算了。超过两个以上主要参数的操作是类似的 支持这项操作的函数包括: 单参数输入: 常用数学函数:Odd,Abs,Sqr,Sqrt 三角函数:Sin,Cos,Tan,Cot,CoTan,Sec,Csc,Secant,Cosecant,ArcSin,ArcCos,ArcTan,ArcCot,ArcSec,ArcCsc,SinCos 角度转换函数,双曲线函数 指数对数函数:Ln,LnXP1,Log10,Log2,Exp 精度设置及取整函数:Int,Ceil,Ceil32,Ceil64,Floor,Floor32,Floor64,Trunc,Trunc32,Trunc64,Frac,Round,Round32,Round64,SimpleRound,SimpleRound32,SimpleRound64 比较判断函数:IsNan,IsInfinite,Sign 多个参数输入: DivMod,Frexp,Ldexp,Poly,ArcTan2,Hypot,LogN,IntPower,Power,RoundTo,SimpleRoundTo,IsZero,Min,Max,CompareValue,SameValue,RandomRange,InRange,EnsureRange,RandG,财务函数等 ##### 位运算函数 ###### 内容 - \_And - \_Or - \_Not - \_Xor - \_Shl - \_Shr - \_Rol - \_Ror ###### \_And 范例 ```tsl return _And(6, 3); // 返回十进制(6=110) and 3=(11) 最后得到二进制10 // 结果:2 ``` 参考\_Or \_Not \_Xor \_Shl \_Shr \_Rol \_Ror ###### \_Or 范例 ```tsl return _Or (6, 3); // 结果:7 // 返回十进制(6=110) or 3=(11) 最后得到二进制111,十进制是7 ``` 参考\_And \_Not \_Xor \_Shl \_Shr \_Rol \_Ror ###### \_Not 范例 ```tsl return _Not (4); // 结果:-5 // 返回十进制_not (4=00000100) 取非运算最后得到二进制11111011,十进制//是-5,注意:在计算机中,负数以其正值的补码形式表示。补码是烦吗+1, // 5=00000101,得到反码11111010,得到补码11111011=-5 ``` 参考\_And \_Or \_Xor \_Shl \_Shr \_Rol \_Ror ###### \_Xor 范例 ```tsl return _Xor (6, 3); // 结果:5 // 返回十进制 (6=110) Xor (3=011) 最后得到二进制101,十进制是5 ``` 参考\_And \_Or \_Not \_Shl \_Shr \_Rol \_Ror ###### \_Shl 范例 ```tsl return _Shl (6, 3); // 结果:48 // 返回十进制 (6=110) _Shl 3 最后得到二进制110000,十进制是48 ``` 参考\_And \_Or \_Not \_Xor \_Shr \_Rol \_Ror ###### \_Shr 范例 ```tsl return _Shr (36, 3); // 结果:4 // 返回十进制 (36=100100) _Shr 3最后得到二进制00000100,十进制是4 ``` 参考\_And \_Or \_Not \_Xor \_Shl \_Rol \_Ror ###### \_Rol 范例 ```tsl return _Rol (36, 3); // 结果:288 // 返回十进制 (36=100100) 左移3位,最后得到二进制100100000,十进制是//288 ``` 参考\_And \_Or \_Not \_Xor \_Shl \_Shr \_Ror ###### \_Ror 范例 ```tsl return _Ror (36, 2); // 结果:9 // 返回十进制 (36=100100) 右移2位,最后得到二进制00001001,十进制是9 ``` 参考\_And \_Or \_Not \_Xor \_Shl \_Shr \_Rol ##### 三角函数 ###### 内容 - Sin - Cos - SinCos - Tan - Cot - CoTan - Sec - Csc - Secant - Cosecant - ArcSin - ArcCos - ArcTan - ArcTan2 - ArcCot - ArcSec - ArcCsc - Hypot ###### Sin 用途:三角函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求sin(π/6) return Sin(pi() / 6); // 结果:0.5 ``` 参考简单函数对数组支持 Cos SinCos ArcSin Sinh ###### Cos 用途:三角函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求cos(π/3) return Cos(pi() / 3); // 结果:0.5 ``` 参考简单函数对数组支持 Sin SinCos Cosecant ArcCos Cosh ###### SinCos 用途:三角函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl SinCos(pi() / 2, sin, cos); return array(sin, cos); ``` 参考简单函数对数组支持 Cos SinCos ArcSin Sinh ###### Tan 用途:三角函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求tan(π/4) return Tan(pi() / 4); // 结果:1 ``` 参考简单函数对数组支持 Cot CoTan ArcTan ArcTan2 Tanh ###### Cot 用途:三角函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求Cot (π/4) return Cot(pi() / 4); // 结果:1 ``` 参考简单函数对数组支持 CoTan ArcCot ArcCotH Tan ###### CoTan 用途:三角函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求Cotan(π/4) return CoTan(pi() / 4); // 结果:1 ``` 参考简单函数对数组支持 CoTan ArcCot ArcCotH Tan ###### Sec 用途:三角函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求Sec(π/3) return Sec(pi() / 3); // 结果:2 ``` 参考简单函数对数组支持 Csc Secant ArcSec SecH ###### Csc 用途:三角函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求Csc(π/6) return Csc(pi() / 6); // 结果:2 ``` 参考简单函数对数组支持 Sec Secant ArcCsc CscH ###### Secant 用途:三角函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求Secant (π/6) return Secant(pi() / 3); // 结果:2 ``` 参考简单函数对数组支持 Sec Csc ArcSec SecH ###### Cosecant 用途:三角函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求Cosecant (π/6) return Cosecant(pi() / 6); // 结果:2 ``` 参考简单函数对数组支持 Sin SinCos Cosecant ArcCos Cosh ###### ArcSin 用途:三角函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return ArcSin(1); // 结果:1.57 //约等于π/2 ``` 参考简单函数对数组支持 Sin ArcSinh ###### ArcCos 用途:三角函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return ArcCos(0); // 结果:1.57 //约等于π/2 ``` 参考简单函数对数组支持 Cos Cosecant ArcCosh ###### ArcTan 用途:三角函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求ArcTan(1) return ArcTan(1); // 结果:0.785398163397448 //该值=pi()/4 ``` 参考简单函数对数组支持 ArcTan2 ArcTan ArcTanh ###### ArcTan2 用途:三角函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return ArcTan2(1, 2); // 结果:0.46 ``` 参考简单函数对数组支持 Tan ArcTan ArcTanh ###### ArcCot 用途:三角函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return ArcCot(1); // 结果:0.7854 ``` 参考简单函数对数组支持 Cot CoTan ArcCotH ###### ArcSec 用途:三角函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求ArcSec(2) return ArcSec(2); // 结果:1.05 ``` 参考简单函数对数组支持 Secant Sec ArcSecH ###### ArcCsc 用途:三角函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求ArcCsc(2) return ArcCsc(2); // 结果:0.52 ``` 参考简单函数对数组支持 Csc ArcCscH ###### Hypot 用途:三角函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求Hypot (3,4) return Hypot(3, 4); // 返回sqrt(3^2+4^2) // 结果:5 ``` 参考简单函数对数组支持 ArcTan2 ##### 角度量转换 ###### 内容 - RadToDeg - RadToGrad - RadToCycle - DegToRad - DegToGrad - DegToCycle - GradToRad - GradToDeg - GradToCycle - CycleToRad - CycleToDeg - CycleToGrad ###### RadToDeg 用途:角度量转换相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求RadToDeg (π/3) return RadToDeg(pi() / 3); // 结果:60 ``` 参考简单函数对数组支持 RadToGrad RadToCycle DegToRad DegToGrad DegToCycle GradToRad GradToDeg CycleToRad CycleToDeg ###### RadToGrad 用途:角度量转换相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求RadToGrad (π/4) return RadToGrad(pi() / 4); // 结果:50 ``` 参考简单函数对数组支持 RadToDeg RadToCycle DegToRad DegToGrad GradToRad GradToDeg GradToCycle CycleToRad CycleToGrad ###### RadToCycle 用途:角度量转换相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求RadToCycle (π/4) return RadToCycle(pi() / 4); // 结果:0.125 ``` 参考简单函数对数组支持 RadToDeg RadToGrad DegToRad DegToCycle GradToRad GradToCycle CycleToRad CycleToDeg CycleToGrad ###### DegToRad 用途:角度量转换相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求DegToRad (60) return DegToRad(60); // 结果:1.0472 //返回π/3 ``` 参考简单函数对数组支持 RadToDeg RadToGrad RadToCycle DegToGrad DegToCycle GradToRad GradToDeg CycleToRad CycleToDeg ###### DegToGrad 用途:角度量转换相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求DegToGrad (90) return DegToGrad(90); // 结果:100 ``` s参考简单函数对数组支持 RadToDeg RadToGrad DegToRad DegToCycle GradToRad GradToDeg GradToCycle CycleToDeg CycleToGrad ###### DegToCycle 用途:角度量转换相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求DegToCycle(45) return DegToCycle(45); // 结果:0.125 ``` 参考简单函数对数组支持 RadToDeg RadToCycle DegToRad DegToGrad GradToDeg GradToCycle CycleToRad CycleToDeg CycleToGrad ###### GradToRad 用途:角度量转换相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求GradToRad(50) return GradToRad(50); // 结果:0.79//结果相当于π/4 ``` 参考简单函数对数组支持 RadToDeg RadToGrad RadToCycle DegToRad DegToGrad GradToDeg GradToCycle CycleToRad CycleToGrad ###### GradToDeg 用途:角度量转换相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求GradToDeg(50) return GradToDeg(50); // 结果:45 ``` 参考简单函数对数组支持 RadToDeg RadToGrad DegToRad DegToGrad DegToCycle GradToRad GradToCycle CycleToDeg CycleToGrad ###### GradToCycle 用途:角度量转换相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求GradToCycle(100) return GradToCycle(100); // 结果:0.25 ``` 参考简单函数对数组支持 RadToGrad RadToCycle DegToGrad DegToCycle GradToRad GradToDeg CycleToRad CycleToDeg CycleToGrad ###### CycleToRad 用途:角度量转换相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求CycleToRad(1/4) return CycleToRad(1 / 4); // 结果:1.57 //相当于π/2 ``` 参考简单函数对数组支持 RadToDeg RadToGrad RadToCycle DegToRad DegToCycle GradToRad GradToCycle CycleToDeg CycleToGrad ###### CycleToDeg 用途:角度量转换相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求CycleToDeg(1/4) return CycleToDeg(1 / 4); // 结果:90 ``` 参考简单函数对数组支持 RadToDeg RadToCycle DegToRad DegToGrad DegToCycle GradToDeg GradToCycle CycleToRad CycleToGrad ###### CycleToGrad 用途:角度量转换相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求CycleToGrad(1/4) return CycleToGrad(1 / 4); // 结果:100 ``` 参考简单函数对数组支持 RadToGrad RadToCycle DegToGrad DegToCycle GradToRad GradToDeg GradToCycle CycleToRad CycleToDeg ##### 双曲线函数 ###### 内容 - Sinh - Cosh - Tanh - CotH - SecH - CscH - ArcCosh - ArcSinh - ArcTanh - ArcCotH - ArcSecH - ArcCscH ###### Sinh 用途:双曲线函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求Sinh (2) return Sinh(2); // 结果:3.63 ``` 参考简单函数对数组支持 Cosh ArcSinh Sin ###### Cosh 用途:双曲线函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求Cosh(2) return Cosh(2); // 结果:3.76 ``` 参考简单函数对数组支持 Cos Cosecant Sinh ArcCosh ###### Tanh 用途:双曲线函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求Tanh(2) return Tanh(2); // 结果:0.96 ``` 参考简单函数对数组支持 Tan CotH ArcTanh ###### CotH 用途:双曲线函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求CotH(2) return CotH(2); // 结果:1.04 ``` 参考简单函数对数组支持 Cot CoTan Tanh ArcCotH ###### SecH 用途:双曲线函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求SecH(2) return SecH(2); // 结果:0.27 ``` 参考简单函数对数组支持 Secant Sec CscH ArcSecH ###### CscH 用途:双曲线函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求CscH (2) return CscH(2); // 结果:0.28 ``` 参考简单函数对数组支持 Csc SecH ArcCscH ###### ArcCosh 用途:双曲线函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求ArcCosh(2) return ArcCosh(2); // 结果:1.32 ``` 参考简单函数对数组支持 Cosh ArcCos ###### ArcSinh 用途:双曲线函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求ArcSinh (2) return ArcSinh(2); // 结果:1.44 ``` 参考简单函数对数组支持 ArcSin Sinh ###### ArcTanh 用途:双曲线函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求ArcTanh(0.8) return ArcTanh(0.8); // 结果:1.1 ``` 参考简单函数对数组支持 Tanh ArcTan ###### ArcCotH 用途:双曲线函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求ArcCotH(4) return ArcCotH(4); // 结果:0.26 ``` 参考简单函数对数组支持 ArcCot Tanh ###### ArcSecH 用途:双曲线函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求ArcSecH(4) return ArcSecH(0.5); // 结果:1.32 ``` 参考简单函数对数组支持 SecH ArcSec ###### ArcCscH 用途:双曲线函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求ArcCscH(4) return ArcCscH(4); // 结果:0.25 ``` 参考简单函数对数组支持 ArcCsc CscH ##### 指数对数函数 ###### 内容 - Ln - LnXP1 - Log10 - Log2 - LogN - Exp - IntPower - Power ###### Ln 用途:指数对数函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求ln(e^2) return Ln(7.38905609893065); // 结果:2 ``` 参考简单函数对数组支持 LnXP1 Log10 Log2 LogN Exp IntPower Power ###### LnXP1 用途:指数对数函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return LnXP1(3); // 结果:1.39 //返回ln4 ``` 参考简单函数对数组支持 Ln Log10 Log2 LogN Exp IntPower Power ###### Log10 用途:指数对数函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Log10(100); // 结果:2 //返回log10100 ``` 参考简单函数对数组支持 Ln LnXP1 Log2 LogN Exp IntPower Power ###### Log2 用途:指数对数函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Log2(8); // 结果:3 //返回log28 ``` 参考简单函数对数组支持 Ln LnXP1 Log10 LogN Exp IntPower Power ###### LogN 用途:指数对数函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return LogN(2, 8); // 结果:3 //返回log28 ``` 参考简单函数对数组支持 Ln LnXP1 Log10 Log2 Exp IntPower Power ###### Exp 用途:指数对数函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求e^2 return Exp(2); // 结果:7.38905609893065 ``` 参考简单函数对数组支持 Ln LnXP1 Log10 Log2 LogN IntPower Power ###### IntPower 用途:指数对数函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return IntPower(2, 3.2); // 结果:8 //返回2^3 ``` 参考简单函数对数组支持 Ln LnXP1 Log10 Log2 LogN Exp Power ###### Power 用途:指数对数函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Power(2, 3.2); // 结果:9.19 //返回2^3.2 ``` 参考简单函数对数组支持 Ln LnXP1 Log10 Log2 LogN Exp IntPower ##### 精度设置及取整运算 ###### 内容 - Int - Ceil - Ceil32 - Ceil64 - Floor - Floor32 - Floor64 - Trunc - Trunc32 - Trunc64 - Frac - Round - Round32 - Round64 - SimpleRound - SimpleRound32 - SimpleRound64 - RoundTo - SimpleRoundTo ###### Int 用途:精度设置及取整运算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求x X := 2.45; return Int(x); // 结果:2.0 ``` 参考简单函数对数组支持 Ceil Floor Trunc Frac ###### Ceil 用途:精度设置及取整运算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Ceil(-2.8); // 结果:-2 ``` 参考简单函数对数组支持 Ceil32 Ceil64 Int Floor Trunc Frac ###### Ceil32 用途:精度设置及取整运算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Ceil32(-2.8); // 结果:-2 ``` 参考简单函数对数组支持 Int Ceil Floor Trunc Frac ###### Ceil64 用途:精度设置及取整运算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Ceil64(-2.8); // 结果:-2 ``` 参考简单函数对数组支持 Int Ceil Floor Trunc Frac ###### Floor 用途:精度设置及取整运算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Floor(-2.8); // 结果:-3 ``` 参考简单函数对数组支持 Floor32 Floor64 Int Ceil Trunc Frac ###### Floor32 用途:精度设置及取整运算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Floor32(-2.8); // 结果:-3 ``` 参考简单函数对数组支持 Int Ceil Floor Trunc Frac ###### Floor64 用途:精度设置及取整运算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Floor64(-2.8); // 结果:-3 ``` 参考简单函数对数组支持 Int Ceil Floor Trunc Frac ###### Trunc 用途:精度设置及取整运算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := Trunc(-6.8); return x; // 结果:-6 ``` 参考简单函数对数组支持 Trunc32 Trunc64 Int Ceil Floor Frac ###### Trunc32 用途:精度设置及取整运算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := Trunc32(-6.8); return x; // 结果:-6 ``` 参考简单函数对数组支持 Int Ceil Floor Trunc Frac ###### Trunc64 用途:精度设置及取整运算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := Trunc64(6.8); return x; // 结果:6 ``` 参考简单函数对数组支持 Int Ceil Floor Trunc Frac ###### Frac 用途:精度设置及取整运算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求x X := 2.45; return Frac(x); // 结果:0.45 ``` 参考简单函数对数组支持 Int Ceil Floor Trunc ###### Round 用途:精度设置及取整运算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求x X := 3.5; return Round(x); // 结果:4 ``` 参考简单函数对数组支持 Round32 Round64 SimpleRound RoundTo SimpleRoundTo ###### Round32 用途:精度设置及取整运算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := Round32(6.8); return x; // 结果:7 ``` 参考简单函数对数组支持 Round SimpleRound RoundTo SimpleRoundTo ###### Round64 用途:精度设置及取整运算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := Round64(3.5); return x; // 结果:4 ``` 参考简单函数对数组支持 Round SimpleRound RoundTo SimpleRoundTo ###### SimpleRound 用途:精度设置及取整运算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 求x X := 3.5; return SimpleRound(x); // 结果:4 ``` 参考简单函数对数组支持 SimpleRound32 SimpleRound64 Round RoundTo SimpleRoundTo ###### SimpleRound32 用途:精度设置及取整运算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := SimpleRound32(6.8); return x; // 结果:7 ``` 参考简单函数对数组支持 Round SimpleRound RoundTo SimpleRoundTo ###### SimpleRound64 用途:精度设置及取整运算相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := SimpleRound64(3.5); return x; // 结果:4 ``` 参考简单函数对数组支持 Round SimpleRound RoundTo SimpleRoundTo ###### RoundTo 用途:精度设置及取整运算相关函数。 参数: 返回:处理后的结果值。 范例 范例01:整数四舍五入 ```tsl return RoundTo(1234567.3, 4); // 结果:1230000 ``` 范例02:小数部分四舍五入 ```tsl return RoundTo(1.234567, -3); // 结果:1.235 ``` 参考简单函数对数组支持 Round SimpleRound SimpleRoundTo ###### SimpleRoundTo 用途:精度设置及取整运算相关函数。 参数: 返回:处理后的结果值。 范例 范例01: ```tsl return SimpleRoundTo(1234567.3,4); // 结果:1230000 ``` 范例02: ```tsl return SimpleRoundTo(-1.235, -2); // -1.24 ``` 参考简单函数对数组支持 Round SimpleRound RoundTo ##### 比较判断函数 ###### 内容 - IsNan - IsInfinite - Sign - IsZero - Min - Max - CompareValue - SameValue - RandomRange - InRange - EnsureRange ###### IsNan 用途:判断条件是否成立。 参数: 返回:布尔值。 范例 范例01:判断单个值是否nan ```tsl v := nan; return IsNan(v); // 1 ``` 范例02:判断数组中各元素是否nan ```tsl Data := array(2, nan, 3, '', 's', nil); return IsNan(data); ``` 参考简单函数对数组支持 IsInfinite ###### IsInfinite 用途:判断条件是否成立。 参数: 返回:布尔值。 范例 范例01:判断单个值是否inf ```tsl return IsInfinite(inf); // 结果:1 ``` 范例02:判断数组中各元素是否nan ```tsl Data := array(2, nan, 3, '', 's', nil, inf); return IsInfinite(data); ``` 参考简单函数对数组支持 IsNan ###### Sign 用途:比较判断函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Sign(-2); // 结果:-1 ``` 参考简单函数对数组支持 ###### IsZero 用途:判断条件是否成立。 参数: 返回:布尔值。 范例 ```tsl a := 1.400000000001; b := 1.399999999999; return IsZero(a - b, 0.000000001); // 在9位小数的精度下 // 结果:1 ``` 参考简单函数对数组支持 CompareValue SameValue RandomRange InRange EnsureRange ###### Min 用途:进行数值统计计算。 参数: 返回:处理后的结果值。 范例 ```tsl // 比较两个值 return Min(3, 3.6); // 结果:3 ``` 比较两个数组 ```tsl a := array(1, 3, 5); b := array(2, 3, 4); return Min(a, b); ``` 参考简单函数对数组支持 MinValue MinIntValue MaxValue MaxIntValue Max ###### Max 用途:进行数值统计计算。 参数: 返回:处理后的结果值。 范例 ```tsl return Max(5, 5.6); // 结果:5.6 return Max(array(1, 2, 8), array(4, 5, 6)); ``` 参考简单函数对数组支持 MinValue MinIntValue MaxValue MaxIntValue Min ###### CompareValue 用途:比较判断函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return CompareValue(3, 4, 0.5); // 结果:-1 // 表示3与4之间的差距超过0.5则正常比较,否则认为相等 ``` 参考简单函数对数组支持 IsZero SameValue RandomRange InRange EnsureRange ###### SameValue 用途:比较判断函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return SameValue(3, 4, 0.5); // 结果:0 // 表示3与4之间的差距在0.5之内认为相等,否则认为不相等 ``` 参考简单函数对数组支持 IsZero CompareValue RandomRange InRange EnsureRange ###### RandomRange 用途:比较判断函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return RandomRange(4.7, 8.5); // 结果:5//返回4到8之间的随机整数 ``` 参考简单函数对数组支持 IsZero CompareValue SameValue InRange EnsureRange ###### InRange 用途:比较判断函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return InRange(4.3, 4, 8); // 结果:1 ``` 参考简单函数对数组支持 IsZero CompareValue SameValue RandomRange EnsureRange ###### EnsureRange 用途:比较判断函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return EnsureRange(4.3, 4, 8); // 结果:4.3 ``` 参考简单函数对数组支持 IsZero CompareValue SameValue RandomRange InRange ##### 一般统计量 ###### 内容 - MinIntValue - SumOfSquares - StdDev - Mean - Sum - MaxValue - MinValue - Norm - SumsAndSquares - MaxIntValue - SumInt - Harmean - Variance - MeanAndStdDev - AveDev - Skewness - TotalVariance - Product - PopnStdDev - kurtosis2 - Median - skewness2 - 统计函数功能拓展 - Kurtosis - Mode - RandG - Geomean - PopnVariance - MomentSkewKurtosis - DevSq - randomfrom ###### MinIntValue 用途:进行数值统计计算。 参数: 返回:处理后的结果值。 范例 ```tsl a := array(5.3, 3.9, 5.6, 5, 6.5, 7.6); return MinIntValue(a); // 结果:3 ``` 参考统计函数功能拓展 MinValue MaxValue MaxIntValue Min Max ###### SumOfSquares 用途:进行数值统计计算。 参数: 返回:处理后的结果值。 范例 ```tsl a := array(2, 3, 1, 5, 6.5, 7.5); return SumOfSquares(a); // 结果:124 ``` 参考统计函数功能拓展 Norm SumsAndSquares ###### StdDev 用途:一般统计量相关函数。 参数: 返回:处理后的结果值。 范例 范例01:一维数组求样本标准差 ```tsl a := array(5.3, 3.9, 5.6, 5, 7.5, 7.6); return StdDev(a); // 结果:1.46070759108956 //样本a的标准差 ``` 范例02:二维数组指定列+指定步长计算样本标准差 ```tsl arr := rand(10, array("A", "B")); ml := length(arr); // 移动步长--指定大于等于总长度数,则统计从首行到当前行的区间 arr[:, "A-样本标准差"] := StdDev(arr, 0, ml, "A"); return arr; ``` 参考统计函数功能拓展 SumOfSquares Norm PopnStdDev Variance PopnVariance ###### Mean 用途:进行数值统计计算。 参数: 返回:处理后的结果值。 范例 范例01:一维数组求平均值 ```tsl a := array(2, 3, 1, 5, 6, 7); return Mean(a); // 结果:4 ``` 范例02:二维数组指定列+指定步长计算平均 ```tsl arr := rand(10, array("A", "B")); ml := length(arr); // 移动步长--指定大于等于总长度数,则统计从首行到当前行的区间 arr[:, "A-平均"] := Mean(arr, 0, ml, "A"); return arr; ``` 参考统计函数功能拓展 Sum StdDev Geomean Harmean Mode Median ###### Sum 用途:进行数值统计计算。 参数: 返回:处理后的结果值。 范例 范例01:一维数组求和 ```tsl a := array(2, 3, 1, 5, 6, 7); return Sum(a); // 结果:24 ``` 范例02:二维数组指定列+指定步长求和 ```tsl arr := ones(10, array("A", "B")); ml := length(arr); // 移动步长--指定大于等于总长度数,则统计从首行到当前行的区间 arr[:, "A-累加"] := Sum(arr, 0, ml, "A"); return arr; ``` 参考统计函数功能拓展 Mean SumInt SumOfSquares Norm SumsAndSquares ###### MaxValue 用途:进行数值统计计算。 参数: 返回:处理后的结果值。 范例 范例01:一维数组求最大值 ```tsl a := array(5.3, 3.9, 5.6, 5, 6.5, 7.6); return MaxValue(a); // 结果:7.6 ``` 范例02:二维数组指定列+指定步长计算最大值 ```tsl arr := rand(10, array("A", "B")); ml := length(arr); // 移动步长--指定大于等于总长度数,则统计从首行到当前行的区间 arr[:, "A-最大"] := MaxValue(arr, 0, ml, "A"); return arr; ``` 参考统计函数功能拓展 MinValue MinIntValue MaxIntValue Min Max ###### MinValue 用途:进行数值统计计算。 参数: 返回:处理后的结果值。 范例 范例01:一维数组求最小值 ```tsl a := array(2, 3, 1, 5, 6, 7); return MinValue(a); // 结果:1 ``` 范例02:二维数组指定列+指定步长计算最小值 ```tsl arr := rand(10, array("A", "B")); ml := length(arr); // 移动步长--指定大于等于总长度数,则统计从首行到当前行的区间 arr[:, "A-最小"] := MinValue(arr, 0, ml, "A"); return arr; ``` 参考统计函数功能拓展 MinIntValue MaxValue MaxIntValue Min Max ###### Norm 用途:一般统计量相关函数。 参数: 返回:处理后的结果值。 范例 范例01:一维数组求平方和的平方根 ```tsl a := array(5, 3, 5, 5, 7, 7); return Norm(a); // 结果:13.490737563232 ``` 范例02:二维数组指定列+指定步长计算平方和的平方根 ```tsl arr := rand(10, array("A", "B")); ml := length(arr); // 移动步长--指定大于等于总长度数,则统计从首行到当前行的区间 arr[:, "A-平方和的平方根"] := Norm(arr, 0, ml, "A"); return arr; ``` 参考统计函数功能拓展 SumOfSquares ###### SumsAndSquares 用途:进行数值统计计算。 参数: 返回:处理后的结果值。 范例 ```tsl a := array(2, 3, 1, 5, 6, 7); // b是总和,c是平方和 SumsAndSquares(a, b, c); return array(b, c); ``` 参考统计函数功能拓展 Sum SumOfSquares ###### MaxIntValue 用途:进行数值统计计算。 参数: 返回:处理后的结果值。 范例 ```tsl a := array(5.3, 3.9, 5.6, 5, 7.5, 7.6); return MaxIntValue(a); // 结果:7 ``` 参考统计函数功能拓展 MinValue MinIntValue MaxValue Min Max ###### SumInt 用途:进行数值统计计算。 参数: 返回:处理后的结果值。 范例 ```tsl a := array(2, 3, 1, 5, 6.5, 7.5); return SumInt(a); // 结果:24 ``` 参考统计函数功能拓展 Sum ###### Harmean 用途:进行数值统计计算。 参数: 返回:处理后的结果值。 范例 范例01:一维数组计算调和平均数 ```tsl Data := array(5, 3, 6, 8, 9, 10, 4); return Harmean(Data); // 结果:5.44 ``` 范例02:二维数组指定列+指定步长计算调和平均数 ```tsl arr := rand(10, array("A", "B")); ml := length(arr); // 移动步长--指定大于等于总长度数,则统计从首行到当前行的区间 arr[:, "A-调和平均数"] := Harmean(arr, 0, ml, "A"); return arr; ``` 参考统计函数功能拓展 Mean StdDev Geomean Mode Median ###### Variance 用途:一般统计量相关函数。 参数: 返回:处理后的结果值。 范例 范例01:一维数组求样本方差 ```tsl a := array(5.3, 3.9, 5.6, 5, 7.5, 7.6); return Variance(a); // 结果:2.13366666666666 ``` 范例02:二维数组指定列+指定步长计算样本方差 ```tsl arr := rand(10, array("A", "B")); ml := length(arr); // 移动步长--指定大于等于总长度数,则统计从首行到当前行的区间 arr[:, "A-样本方差"] := Variance(arr, 0, ml, "A"); return arr; ``` 参考统计函数功能拓展 StdDev PopnStdDev PopnVariance ###### MeanAndStdDev 用途:进行数值统计计算。 参数: 返回:处理后的结果值。 范例 ```tsl a := array(5.3, 3.9, 5.6, 5, 7.5, 7.6); // b是返回的平均值,c是返回的标准差 MeanAndStdDev(a, b, c); return array(b, c); ``` 参考统计函数功能拓展 Mean StdDev ###### AveDev 用途:一般统计量相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl Data := array(5, 3, 6, 8, 9, 10, 4); // 返回数组Data的平均绝对偏 return AveDev(Data); // 结果:2.2 ``` 参考统计函数功能拓展 StdDev ###### Skewness 用途:一般统计量相关函数。 参数: 返回:处理后的结果值。 范例 范例01:一维数组求偏度 ```tsl Data := array(5, 3, 6, 8, 9, 10, 4); return Skewness(Data); // 结果:0.11 ``` 范例02:二维数组指定列+指定步长计算偏度 ```tsl arr := rand(10, array("A", "B")); ml := length(arr); // 移动步长--指定大于等于总长度数,则统计从首行到当前行的区间 arr[:, "A-偏度"] := Skewness(arr, 0, ml, "A"); return arr; ``` 参考统计函数功能拓展 skewness2 Kurtosis kurtosis2 ###### TotalVariance 用途:一般统计量相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl a := array(5.3, 3.9, 5.6, 5, 7.5, 7.6); return TotalVariance(a); // 结果:10.6683333333333 ``` 参考统计函数功能拓展 Variance ###### Product 用途:一般统计量相关函数。 参数: 返回:处理后的结果值。 范例 一维数组计算累乘值 ```tsl Data := array(5, 3, 6, 8, 9, 10, 4); return Product(Data); // 结果:259200 //返回5*3*6*8*9*10*4 ``` 范例02:二维数组指定列+指定步长计算累乘值 ```tsl arr := rand(10, array("A", "B")) * 10; ml := length(arr); // 移动步长--指定大于等于总长度数,则统计从首行到当前行的区间 arr[:, "A-累乘"] := Product(arr, 0, ml, "A"); return arr; ``` 参考统计函数功能拓展 Sum ###### PopnStdDev 用途:一般统计量相关函数。 参数: 返回:处理后的结果值。 范例 范例01:一维数组求总体标准差 ```tsl a := array(5.3, 3.9, 5.6, 5, 7.5, 7.6); return PopnStdDev(a); // 结果:1.33343749593131 ``` 范例02:二维数组指定列+指定步长计算总体标准差 ```tsl arr := rand(10, array("A", "B")); ml := length(arr); // 移动步长--指定大于等于总长度数,则统计从首行到当前行的区间 arr[:, "A-总体标准差"] := PopnStdDev(arr, 0, ml, "A"); return arr; ``` 参考统计函数功能拓展 StdDev Variance PopnVariance ###### kurtosis2 用途:一般统计量相关函数。 参数: 返回:处理后的结果值。 范例 范例01::一维数组计算峰度 ```tsl Data := array(5, 3, 6, 8, 9, 10, 4); return kurtosis2(Data); // 结果:1.57 ``` 范例02:二维数组指定列+指定步长计算峰度 ```tsl arr := rand(10, array("A", "B")); ml := length(arr); // 移动步长--指定大于等于总长度数,则统计从首行到当前行的区间 arr[:, "A-峰度"] := kurtosis2(arr, 0, ml, "A"); return arr; ``` 参考统计函数功能拓展 Skew skewness2 Kurtosis ###### Median 用途:一般统计量相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl Data := array(5, 3, 6, 8, 9, 10, 4); return Median(Data); // 结果:6 ``` 参考统计函数功能拓展 Mean StdDev Geomean Harmean Mode ###### skewness2 用途:一般统计量相关函数。 参数: 返回:处理后的结果值。 范例 范例01:一维数组求偏度 ```tsl Data := array(5, 3, 6, 8, 9, 10, 4); return skewness2(Data); // 结果:0.09 ``` 范例02:二维数组指定列+指定步长计算偏度 ```tsl arr := rand(10, array("A", "B")); ml := length(arr); // 移动步长--指定大于等于总长度数,则统计从首行到当前行的区间 arr[:, "A-偏度"] := skewness2(arr, 0, ml, "A"); return arr; ``` 参考统计函数功能拓展 Skewness Kurtosis kurtosis2 ###### 统计函数功能拓展 我们以前的统计函数,只支持对于一维数组的处理,现在一并支持了对二维数组的处理,对行列操作的选择,移动统计,选择部分字段做统计等功能。 比如func(In1,In2...InN[,Out1,...OutN]),这类函数,In参数除支持二维数组外,还增加了五个可选参数func(In1,In2...InN[,Out1,...OutN],Opt1[,Opt2[, Opt3[, Opt4[, Opt5]]]]]) Opt1:对列操作为0(默认),对行操作为1,可缺省(以下参数都是默认缺省的参数); Opt2:是否移动进行计算,为0表示不移动(默认),其余正整数表示移动计算的长度; Opt3:对字段筛选,nil表示全选(默认),可以使用数组进行多选,也可以使用简单类型进行单选 Opt4:异常处理参数,按照存储位来进行管理(默认为0): 第一位管理的是是否忽略异常值(不包括nil),即1不报错,0报错。 第二位管理的是nil值是否报错,即1报错,0不报错。 第三位管的是计算移动长度的时候,nil值及字符串等异常值是否包括在内。即0不忽略,1忽略。 这样的话,衍生出8种组合场景,分别对应如下: 注:下列说明中移动时异常值包括nil值在内,而其它处异常值中不包括nil值在内。 | 二进制 | 十进制值 | 功能说明 | | ------ | -------- | ------------------------------------------------- | | 0b000 | 0 | 默认值,异常值报错,nil不报错,移动时异常值不忽略 | | 0b001 | 1 | 异常值不报错,nil值不报错,移动时异常值不忽略 | | 0b010 | 2 | 异常值与nil值报错,移动时异常值不忽略 | | 0b011 | 3 | 异常值不报错,nil值报错,移动时异常值不忽略 | | 0b100 | 4 | 异常值报错,nil值不报错,计算移动单位时忽略异常值 | | 0b101 | 5 | 异常值与nil值不报错,计算移动单位时忽略异常值 | | 0b110 | 6 | 异常值报错,nil值报错,计算移动单位时忽略异常值 | | 0b111 | 7 | 异常值不报错,nil值报错,计算移动单位时忽略异常值 | Opt5:当In为空数组时的返回值,该参数默认缺省为0。 常用统计量:以mean函数为例: 正常数据的处理: ```tsl a := array((1, 2, 3), (2, nil, 4), (4, 5, 6)); // 在一般的统计函数中,遇到nil是不会报错的 return mean(a); // 对每一列求均值 return mean(a, 1); // 对每一行求均值 return mean(a, 0, 2); // 求取长度为2的移动平均 return mean(a, 0, 2, array(0, 1)); // 只对0,1列做计算 return mean(a, 0, 2, array(0, 1), 4); // 比较和上一个返回,这里求移动均值时跳过了nil ``` 含字符串异常数据 ```tsl a := array((1, 2, 3), (2, nil, "a"), (4, 5, 6)); return mean(a, 0, 2, array(0, 1), 1); // 忽略含字符串元素时候的报错 return mean(a, 0, 2, array(0, 1), 1 + 4); // 比较和上一个返回,这里求移动均值时跳过了nil和字符串元素 ``` 空数组时候的默认输出: ```tsl return mean(array(), 0, 0, nil, 1, "默认输出值"); // 输出第6个参数 ``` 一维数组的处理和n\*1二维数组类似,注意第二个参数一般为0,移动平均还是一维数组,一般平均结果是实数。 ```tsl a := rand(100); return mean(a); // 结果为实数 return mean(a, 0, 10); // 长度为10的移动平均 ``` 次序统计量,以Large函数为例: 相比较统计函数的用法,次序统计函数主要要注意的是第二个不可缺省的参数的设置问题,比如:Large(Data:Array;N:[Int,Array]):[real,Array]; N是一个整数的时候 ```tsl a := 1 - > 10; a |= a; return _large(a, 1); // 这样可以得到每列最大的元素 ``` N是一个一维数组的时候 ```tsl a := rand(100, 10); return _large(a, 1 - > 10); // 对列做的时候,N的长度必须和列数目一致 return _large(a, ones(100), 1); // 对行做的时候,N的长度必须和行数目一致 ``` ###### Kurtosis 用途:一般统计量相关函数。 参数: 返回:处理后的结果值。 范例 范例01:一维数组计算峰度 ```tsl Data := array(5, 3, 6, 8, 9, 10, 4); return Kurtosis(Data); // 结果:-1.64 ``` 结果:-1.64 范例02:二维数组指定列+指定步长计算峰度 ```tsl arr := rand(10, array("A", "B")); ml := length(arr); // 移动步长--指定大于等于总长度数,则统计从首行到当前行的区间 arr[:, "A-峰度"] := Kurtosis(arr, 0, ml, "A"); return arr; ``` 参考统计函数功能拓展 Skewness skewness2 kurtosis2 ###### Mode 用途:一般统计量相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl Data := array(5, 3, 6, 8, 9, 10, 4); return Mode(Data); // 结果:3 ``` 参考统计函数功能拓展 Mean StdDev Geomean Harmean Median ###### RandG 用途:一般统计量相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return RandG(2, 3); // 结果:3.05 //3.05是均值为2,标准差为3的高斯分布的一个样本数据 ``` 参考简单函数对数组支持 ###### Geomean 用途:进行数值统计计算。 参数: 返回:处理后的结果值。 范例 范例01:一维数组计算几何平均数 ```tsl Data := array(5, 3, 6, 8, 9, 10, 4); return Geomean(Data); // 结果:5.93 ``` 范例02:二维数组指定列+指定步长计算几何平均数 ```tsl arr := rand(10, array("A", "B")); ml := length(arr); // 移动步长--指定大于等于总长度数,则统计从首行到当前行的区间 arr[:, "A-几何平均数"] := Geomean(arr, 0, ml, "A"); return arr; ``` 参考统计函数功能拓展 Mean StdDev Harmean Mode Median ###### PopnVariance 用途:一般统计量相关函数。 参数: 返回:处理后的结果值。 范例 范例01:一维数组求总体方差 ```tsl a := array(5.3, 3.9, 5.6, 5, 7.5, 7.6); return PopnVariance(a); // 结果:1.77805555555555 ``` 范例02:二维数组指定列+指定步长计算总体方差 ```tsl arr := rand(10, array("A", "B")); ml := length(arr); // 移动步长--指定大于等于总长度数,则统计从首行到当前行的区间 arr[:, "A-总体方差"] := PopnVariance(arr, 0, ml, "A"); return arr; ``` 参考统计函数功能拓展 StdDev PopnStdDev Variance ###### MomentSkewKurtosis 用途:一般统计量相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl Data := array(5, 3, 6, 8, 9, 10, 4); MomentSkewKurtosis(Data, M1, M2, M3, M4, Skew, Kurtosis); return array(M1, M2, M3, M4, Skew, Kurtosis); ``` 结果; 参考统计函数功能拓展 ###### DevSq 用途:一般统计量相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl Data := array(5, 3, 6, 8, 9, 10, 4); return DevSq(Data); // 结果:41.71 ``` 参考统计函数功能拓展 StdDev ###### randomfrom 用途:一般统计量相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl Data := array(5, 3, 6, 8, 9, 10, 4); return randomfrom(Data); // 结果:9 ``` 参考统计函数功能拓展 ##### 次序统计量 ###### 内容 - Large - Small - Percentile - Percentrank - Quartile - Rank - Trimmean - Frequency ###### Large 用途:次序统计量相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl Data := array(5, 3, 6, 8, 9, 10, 4); // 返回数组Data中第3大的数据 return Large(Data, 3); // 结果:8 ``` 参考统计函数功能拓展 Small Percentile ###### Small 用途:次序统计量相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 返回数组Data中第3小的数据 Data := array(5, 3, 6, 8, 9, 10, 4); return Small(Data, 3); // 结果:5 ``` 参考统计函数功能拓展 Large Percentile ###### Percentile 用途:次序统计量相关函数。 参数: 返回:处理后的结果值。 算法 对序列从小到大排序,数据长度为n,则 (1) 求(n-1)\* PCT,记整数部分为i,小数部分为j (2) 所求结果=(1-j)*序列第(i+1)个数+j*序列第(i+2)个数 范例 范例1:序列百分点的值 ```tsl // 返回数组Data的第3个百分点 Data := array(5, 3, 6, 8, 9, 10, 4); return Percentile(Data, 0.3); // 结果:4.8 ``` 范例2:二维数组各列百分点的值 ```tsl a := array('A':('g':1, 'f':2, 'k':3), 'B':('g':10, 'f':20, 'k':30), 'C':('g':100, 'f':200, 'k':300), 'D':('g':1000, 'f':2000, 'k':3000), ); return Percentile(a, 0.5, 0); ``` 范例3:二维数组指定列指定步长的百分点的值 ```tsl a := array('A':('g':1, 'f':2, 'k':3), 'B':('g':10, 'f':20, 'k':30), 'C':('g':100, 'f':200, 'k':300), 'D':('g':1000, 'f':2000, 'k':3000), ); return Percentile(a, 0.5, 0, 2, array('f', 'k')); ``` 参考统计函数功能拓展 Large Small ###### Percentrank 用途:次序统计量相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 返回8在数组Data的百分点,即小于8的个数/(小于8个数+大于8个 // 数)结果是4/6 Data := array(5, 3, 6, 8, 9, 10, 4); return Percentrank(Data, 8); // 结果:0.666666666666667 ``` 参考统计函数功能拓展 Large Small Percentile ###### Quartile 用途:次序统计量相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 返回数组Data中第3个四分位数,即75%。然后按照Percentile的算法求值 // (7-1)*75%=4.5,i=4,j=5,最终结果是(1-0.5)*8+0.5*9=8.5 Data := array(5, 3, 6, 8, 9, 10, 4); return Quartile(Data, 3); // 结果:8.5 ``` 参考统计函数功能拓展 Large Small Percentile Percentrank ###### Rank 用途:次序统计量相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl Data := array(5, 3, 6, 8, 9, 10, 4); return Rank(Data, 8); // 结果:3 ``` 参考统计函数功能拓展 Percentile Percentrank ###### Trimmean 用途:对字符串进行裁剪处理。 参数: 返回:处理后的结果值。 范例 ```tsl // 去除个数=总个数7*0.7=4.9,头和尾各去除2个数据,剩下数据5,6,8求//均值 Data := array(5, 3, 6, 8, 9, 10, 4); return Trimmean(Data, 0.7); // 结果:6.33333333333333 ``` 参考统计函数功能拓展 ###### Frequency 用途:次序统计量相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl Data := array(5, 3, 6, 8, 9, 10, 4); FreqData := array(1, 2, 3); return Frequency(Data, FreqData); ``` 参考统计函数功能拓展 ##### 统计函数 ###### 内容 - Cov - Correl - Slope - Intercept - Rsq - Steyx - Slopeandintercept - VariationCoefficient - Skew - SelfStddev - RegressionChannel - Kurt - MeanAndPopnStdDevWithRate - BetaAndAlpha - 扩充统计 - 含NAN统计 - correlpaired - correlpaired_side ###### Cov 用途:统计函数相关函数。 参数: 返回:处理后的结果值。 算法 备注:数据长度必须保持一致且大于等于2范例 万科A在2018/10/1~2018/10/30日线收盘与大盘的协方差 ```tsl begt := 20181001T; Endt := 20181030T; Setsysparam(Pn_Stock(), "SZ000002"); dateArr := markettradedayQK(begt, Endt); data := select thisrow as"日期", Spec(Specdate(close(), thisrow), "SZ000002") as"价格", SPec(Specdate(Close(), thisrow), "SH000001") as"大盘" from dateArr end; return Cov(data[:, "价格"], data[:, "大盘"]); ``` ###### Correl 用途:统计函数相关函数。 参数: 返回:处理后的结果值。 算法ra,b=cov(a,b)σaσb,其中cov(a,b)为a,b序列协方差,σ为总体标准差。 备注:数据长度必须保持一致且大于等于2范例 万科A在2018/10/1~2018/10/30日线收盘与大盘价格的相关系数 ```tsl begt := 20181001T; Endt := 20181030T; Setsysparam(Pn_Stock(), "SZ000002"); dateArr := markettradedayQK(begt, Endt); data := select thisrow as"日期", Spec(Specdate(close(), thisrow), "SZ000002") as"价格", SPec(Specdate(Close(), thisrow), "SH000001") as"大盘" from dateArr end; return Correl(data[:, "价格"], data[:, "大盘"]); ``` ###### Slope 用途:统计函数相关函数。 参数: 返回:处理后的结果值。 算法 or 备注:数据长度必须保持一致且大于等于2范例 万科A在2018/10/1~2018/10/30日线收盘与大盘收盘价格的回归斜率 ```tsl begt := 20181001T; Endt := 20181030T; Setsysparam(Pn_Stock(), "SZ000002"); dateArr := markettradedayQK(begt, Endt); data := select thisrow as"日期", Spec(Specdate(close(), thisrow), "SZ000002") as"价格", SPec(Specdate(Close(), thisrow), "SH000001") as"大盘" from dateArr end; return Slope(data[:, "价格"], data[:, "大盘"]); ``` ###### Intercept 用途:统计函数相关函数。 参数: 返回:处理后的结果值。 算法 备注:数据长度必须保持一致且大于等于2范例 万科A在2018/10/1~2018/10/30日线收盘与大盘收盘价的相回归截距 ```tsl begt := 20181001T; Endt := 20181030T; Setsysparam(Pn_Stock(), "SZ000002"); dateArr := markettradedayQK(begt, Endt); data := select thisrow as"日期", Spec(Specdate(close(), thisrow), "SZ000002") as"价格", SPec(Specdate(Close(), thisrow), "SH000001") as"大盘" from dateArr end; return Intercept(data[:, "价格"], data[:, "大盘"]); ``` ###### Rsq 用途:统计函数相关函数。 参数: 返回:处理后的结果值。 算法 备注:参数数据长度必须保持一致且大于等于2范例 万科A在2018/10/1~2018/10/30日线收盘与大盘的乘积矩相关系数平方 ```tsl begt := 20181001T; Endt := 20181030T; Setsysparam(Pn_Stock(), "SZ000002"); dateArr := markettradedayQK(begt, Endt); data := select thisrow as"日期", Spec(Specdate(close(), thisrow), "SZ000002") as"价格", SPec(Specdate(Close(), thisrow), "SH000001") as"大盘" from dateArr end; return Rsq(data[:, "价格"], data[:, "大盘"]); ``` ###### Steyx 用途:统计函数相关函数。 参数: 返回:处理后的结果值。 算法 备注:数据长度必须保持长度一致且大于2。范例 万科A在2018/10/1~2018/10/30日线收盘与大盘的相对标准偏差 ```tsl begt := 20181001T; Endt := 20181030T; Setsysparam(Pn_Stock(), "SZ000002"); dateArr := markettradedayQK(begt, Endt); data := select thisrow as"日期", Spec(Specdate(close(), thisrow), "SZ000002") as"价格", SPec(Specdate(Close(), thisrow), "SH000001") as"大盘" from dateArr end; return Steyx(data[:, "价格"], data[:, "大盘"]); ``` ###### Slopeandintercept 用途:统计函数相关函数。 参数: 返回:处理后的结果值。 算法 备注:参数数据长度必须保持一致且大于等于2范例 万科A在2018/10/1~2018/10/30日线收盘与大盘收盘价格的回归斜率和截距 ```tsl begt := 20181001T; Endt := 20181030T; Setsysparam(Pn_Stock(), "SZ000002"); dateArr := markettradedayQK(begt, Endt); data := select thisrow as"日期", Spec(Specdate(close(), thisrow), "SZ000002") as"价格", SPec(Specdate(Close(), thisrow), "SH000001") as"大盘" from dateArr end; return Slopeandintercept(data[:, "价格"], data[:, "大盘"]); ``` ###### VariationCoefficient 用途:统计函数相关函数。 参数: 返回:处理后的结果值。 算法C.V.=σ/μ,其中σ为标准差,μ为均值。范例 ```tsl return VariationCoefficient(array(1, 2, 1, 2, 1, 2)); // 返回:0.33 ``` ###### Skew 用途:统计函数相关函数。 参数: 返回:处理后的结果值。 算法sc=1n(ti-μσ)3\*nn-1(n-2),其中n为序列长度,其中σ为标准差,μ为均值。范例 ```tsl Skew(array(1, 2, 3, 4, 5, 7), s); return s; // 返回:0.46 ``` ###### SelfStddev 用途:统计函数相关函数。 参数: 返回:处理后的结果值。 算法 t2=t-Rmar,并将t2中大于0的元素化为0。 对t2求标准差范例 ```tsl return SelfStddev(array(1, 2, 3, 4, 5), 3); // 返回:0.89 ``` ###### RegressionChannel 用途:统计函数相关函数。 参数: 返回:处理后的结果值。 算法返回BETA系数以及ALPHA值,并得到上行轨道以及下行轨道的ALPHA。依此得到指定X的上轨以及下轨,并根据当前的Y得到其所在轨道中的百分比,如果<0则低于下轨,>100则超越上轨。依照Alpha和Beta值,得到nowx的预期回归运行值。范例 ```tsl RegressionChannel(array(1, 2, 3, 4, 5), array(6, 7, 8, 9, 10), 1, 2, 3, 4, 5, 6, 7, 8, s, a); return a; // 返回:-3 ``` ###### Kurt 用途:统计函数相关函数。 参数: 返回:处理后的结果值。 算法 其中n为序列长度,其中Stdev为标准差。范例 ```tsl Kurt(array(1, 2, 3, 4, 5), s); return s; // 返回:-1.2 ``` ###### MeanAndPopnStdDevWithRate 用途:进行数值统计计算。 参数: 返回:处理后的结果值。 算法 μ=1nRi\*Di1nRi σ=1nRi*inRi*Di2-(1nRi\*Di)21nRi 其中μ为均值,σ为标准差范例 ```tsl MeanAndPopnStdDevWithRate(array(1, 2, 3), array(1, 1, 1), m, s); return m; // 返回:2 ``` ###### BetaAndAlpha 用途:统计函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl BetaAndAlpha(array(3, 6), array(4, 12), k, b); return k; // 返回:0.375 ``` ###### 扩充统计 ####### 内容 - Expanding_Unit ####### Expanding_Unit 功能描述: 扩充统计单元库,扩充统计方法,提高运算效率,譬如cumsum 输 入: r 必须为数字数组,当为空数组时,返回空数组 支持一维数组或二维数组(此时按列统计),也可以为二维数据表 ######## 内容 - ExpdMax - ExpdMin - ExpdSum - ExpdProduct - ExpdVar - ExpdStd ######## ExpdMax 范例 ```tsl r := array(-1, 2, -3, 9); return ExpdMax(r); // array(-1,2,2,9) ``` ######## ExpdMin 范例 ```tsl r := array(-1, 2, -3, 9); return ExpdMin (r); // array(-1,-1,-3,-3) ``` ######## ExpdSum 范例 ```tsl r := array(-1, 2, -3, 9); return ExpdSum (r); // array(-1,1,-2,7) ``` ######## ExpdProduct 范例 ```tsl r := array(-1, 2, -3, 9); return ExpdProduct (r); // array(-1,-2,6,54) ``` ######## ExpdVar 范例 ```tsl r := array(-1, 2, -3, 9); return ExpdVar (r, 0); // array(0,2.25,4.22,20.69) ``` ######## ExpdStd 范例 ```tsl r := array(-1, 2, -3, 9); return ExpdStd (r, 0); // array(0,1.5,2.05,4.55) ``` ###### 含NAN统计 ####### 内容 - NanMean - NanSum - NanStd - NanVariance - NanPopnStd - NanPopnVariance - NanRankArr - NanPercentRankArr ####### NanMean 用途:进行数值统计计算。 参数: 返回:处理后的结果值。 范例 ```tsl A := array(5, 6, 8, Nan); return NanMean(A); // 结果:6.33 ``` ####### NanSum 用途:进行数值统计计算。 参数: 返回:处理后的结果值。 范例 ```tsl A := array(5, 6, 8, Nan); return NanSum(A); // 结果:19 ``` ####### NanStd 用途:统计函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl A := array(5, 6, 8, Nan); return NanStd(A); // 结果:1.53 ``` ####### NanVariance 用途:统计函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl A := array(5, 6, 8, Nan); return NanVariance(A); // 结果:2.33 ``` ####### NanPopnStd 用途:统计函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl A := array(5, 6, 8, Nan); return NanPopnStd(A); // 结果:1.25 ``` ####### NanPopnVariance 范例 ```tsl A := array(5, 6, 8, Nan); return PopnVariance(A); // 结果:1.56 ``` ####### NanRankArr 用途:统计函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl a := array(1, 1, 2, 2, 2, 9, Nan, 9, 9); return NanRankArr(a); // 结果:array(1,1,3,3,3,6,NAN,6,6) ``` ####### NanPercentRankArr 用途:统计函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl a := array(1, 1, 2, 2, 2, 9, Nan, 9, 9); return NanPercentRankArr(a); // 结果:array(0.0,0.0,0.29,0.29,0.29,0.71,NAN,0.71,0.71) ``` ###### correlpaired 用途:统计函数相关函数。 参数: 返回:处理后的结果值。 范例 范例01 ```tsl a := rand(10); b := rand(10); return correlpaired(a, b); // array((0.17)) ``` 范例02 ```tsl a := rand(10); b := rand(10, 2); return correlpaired(a, b); // array((-0.35,-0.19)) ``` 范例03 ```tsl a := rand(10, 2); b := rand(10, 4); return correlpaired(a, b); ``` 返回: 范例04 ```tsl a := `array("A":rand(10)); b := `array("A":rand(10), "B":rand(10)); return correlpaired(a, b); // array((0.2,-0.08)) ``` ###### correlpaired_side 用途:统计函数相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl a := randnorm(0, 1, 20, array(0, 1, 2, 3, 4)); dirType := 3; return correlpaired_side(a, filtType); ``` ##### 统计分布 ###### 内容 - Gammaln - Hist - sf_Error - erfc - sf_Gamma - erf - erfcinv - sf_Beta - sf_IntegerBessel_1 - sf_IncompleteGamma - Gamma - erfinv - 分布函数 - Randnorm - sf_F - sf_geopdf - sf_RealBessel_1 - sf_unidcdf - sf_normpdf - sf_geoinv - sf_unidpdf - sf_IncompleteBeta - sf_normalinv2 - sf_norminv - Randunid - sf_Normal - sf_unidinv - sf_X2 - sf_IntegerBessel_2 - sf_normcdf - sf_t - sf_geocdf - Randgeo - sf_normalinv - Normfit - sf_RealBessel_2 - sf_hygeinv - poissfit - sf_binocdf - Randhyge - sf_poissinv - sf_poisscdf - sf_nbininv - binofit - sf_hygepdf - sf_unifcdf - sf_exppdf - sf_binoinv - uniffit - sf_nbinpdf - Randnbin - Randpoiss - sf_hygecdf - sf_poisspdf - Randbino - Randunif - sf_unifinv - sf_binopdf - sf_nbincdf - sf_unifpdf - sf_tcdf - sf_fpdf - sf_tinv - expfit - Randgam - sf_ch2inv - sf_ch2cdf - sf_finv1 - Randt - sf_expcdf - sf_finv - sf_gamcdf - sf_tpdf - sf_x2inv - sf_gampdf - sf_gammainv - sf_fcdf - sf_ch2pdf - Randf - Randexp - Randch2 - sf_gaminv - sf_expinv - sf_betapdf - sf_tinv1 - RandCauchy - sf_Laplacecdf - Randbeta - sf_Cauchypdf - sf_logninv - sf_Laplaceinv - sf_betacdf - sf_raylinv - sf_wblcdf - sf_lognpdf - sf_Cauchycdf - Randlogn - Randrayl - sf_Laplacepdf - sf_raylpdf - sf_wblinv - sf_logncdf - sf_Cauchyinv - sf_raylcdf - Randwbl - sf_betainv - RandLaplace - sf_wblpdf - sf_betainv1 - sf_mvtcdf - Mvtcdfqmc - sf_mvncdf - sf_copulacdf - sf_copulafit - RandCopula - sf_exp - Norminv ###### Gammaln 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Gammaln(array(1.5, 2.3, 3.4)); // 结果:array(-0.120782237635245,0.15418945495963,1.09232805980274) ``` ###### Hist 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl A := randnorm(0, 1, 10000); return Hist(A, 30, center); ``` 结果,一维数字数组 ###### sf_Error 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl sf_Error(0.15, v); return v; // 结果:0.168 ``` ###### erfc 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return erfc(0.15); // 0.832004028572637 ``` ###### sf_Gamma 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl sf_Gamma(5, v); return v; // 结果:24 ``` 参考sf_IncompleteGamma ###### erf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return erf(0.15); // 结果:0.168 ``` ###### erfcinv 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return erfcinv(0.15); // 结果:1.01790246483203 ``` ###### sf_Beta 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl sf_Beta(2, 5, v); return v; // 结果:0.03333 ``` 参考sf_Gamma ###### sf_IntegerBessel_1 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl n := 7; x := 4.5; sf_IntegerBessel_1(n, x, v); return v; // 结果:0.03002 ``` 参考sf_IntegerBessel_2 sf_RealBessel_1 sf_RealBessel_2 ###### sf_IncompleteGamma 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl a := 5; x := 7; sf_IncompleteGamma(a, x, v); return v; // 结果:0.82701 ``` 参考sf_Gamma ###### Gamma 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Gamma(array(1.5, 2.3, 3.4)); // 结果:array(0.886226925452758,1.16671190519816,2.98120642681033) ``` ###### erfinv 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return erfinv(0.15); // 结果:0.13372692166482 ``` ###### 分布函数 TinySoft金融分析平台上提供了有关统计分布的函数:概率密度,(累计)分布函数,分位数函数(分布逆函数),随机数函数,估计函数 概率密度,(累计)分布函数,分位数的函数命名使用规则: 概率分布函数(包括概率密度函数,分布函数,分布逆函数)输入的第一个变量参数是随机变量或分布函数值,都支持数组形式,中间的参数,一般为分布参数,参数个数不定,只支持符合要求的实数和整数类型.最后一个参数存在的主要原因是为了支持tinysoft金融分析平台以前的使用方法,该参数可缺省,而使用return输出结果,输出结果和第一个参数的维度是一样的. 随机数函数命名使用规则: 生成随机数的函数名称一般使用rand+分布类型(分布参数+行数目+列数目),如: return randrayl(5,array('a','b','c')); return randrayl(5,array('a','b','c','d','e','f'),4); return randrayl(5,4,array('a')); 或使用rand函数: A:=rand(100,100,array("normal")); //标准正态分布 a := rand(100,100,array("normal",0,1));//标准正态分布 支持如下类型(大小写无关):正态分布"normal",泊松分布"posisson",伽马分布"Gamma",均匀分布"Uniform",二项分布"Binomial",几何分布"Geometric",指数分布"Exp",beta分布"Beta",对数正态分布"Lognormal",威布尔分布"Weibull",柯西"Cauchy",拉普拉斯"Laplace",超几何"Hypergeometric",离散均匀"IntUniform",瑞利分布"Rayleigh" 估计函数命名使用规则: 估计函数的函数名称一般使用分布类型+fit(数据+显著性水平)如 return normfit(rand(1000,5),0.05); 结果以列为样本进行估计,muhat,muci为正态分布位置参数的点估计,区间估计,sigmahat,sigmaci为正态分布形态参数的点估计,区间估计.其中每一个样本区间的区间估计中含有两个值,upper是上限,lower是下限. 函数列表: | | 概率密度 | 分布函数 | 分布逆函数 | 随机数 | 估计函数 | | ------------ | -------------- | -------------- | -------------- | ----------- | -------- | | 离散均匀分布 | sf_unidpdf | sf_unidcdf | sf_unidinv | randunid | | | 几何分布 | sf_geopdf | sf_geocdf | sf_geoinv | Randgeo | | | 超几何分布 | sf_hygepdf | sf_hygecdf | sf_hygeinv | Randhyge | | | 二项分布 | sf_binopdf | sf_binocdf | sf_binoinv | Randbino | binofit | | 负二项分布 | sf_nbinpdf | sf_nbincdf | sf_nbininv | Randnbin | | | 均匀分布 | sf_unifpdf | sf_unifcdf | sf_unifinv | Randunif | uniffit | | 泊松分布 | sf_poissonpdf | sf_poissoncdf | sf_poissoninv | Randpoisson | poissfit | | 指数分布 | sf_exppdf | sf_expcdf | sf_expinv | Randexp | expfit | | 正态分布 | sf_normpdf | sf_normcdf | sf_norminv | Randnorm | | | 卡方分布 | sf_ch2pdf | sf_ch2cdf | sf_ch2inv | Randch2 | | | 学生T分布 | sf_tpdf | sf_tcdf | sf_tinv1 | Randt | | | F分布 | sf_fpdf | sf_fcdf | sf_finv1 | Randf | | | gam分布 | sf_gampdf | sf_gamcdf | sf_gaminv | Randgam | | | beta分布 | sf_betapdf | sf_betacdf | sf_betainv1 | Randbeta | | | 瑞利分布 | sf_raylpdf | sf_raylcdf | sf_raylinv1 | Randrayl | | | 威布尔分布 | sf_wblpdf | sf_wblcdf | sf_wblinv | Randwbl | | | 对数正态分布 | sf_lognpdf | sf_logncdf | sf_logninv | Randlohn | | | 拉普拉斯分布 | sf_Laplacepdf | sf_Laplacecdf | sf_Laplaceinv | RandLaplace | | | 柯西分布 | sf\_ Cauchypdf | sf\_ Cauchycdf | sf\_ Cauchyinv | RandCauchy | | ###### Randnorm 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Randnorm(0, 1, 10, array("a", "b")); ``` 参考分布函数 sf_normpdf sf_normcdf sf_norminv Normfit ###### sf_F 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl f := 2; n1 := 3; n2 := 5; sf_F(f, n1, n2, v); return v; // 结果:0.76738 ``` 参考sf_Normal sf_t sf_X2 ###### sf_geopdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := 1 - > 10; return sf_geopdf(x, 0.5); ``` 参考sf_geocdf sf_geoinv Randgeo 分布函数 ###### sf_RealBessel_1 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl n := 7; x := 4.5; sf_RealBessel_1(n, x, v); return v; // 结果:0.10684 ``` 参考sf_IntegerBessel_1 sf_IntegerBessel_2 sf_RealBessel_2 ###### sf_unidcdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array(-4, 0.1) - > 4; return sf_unidcdf(x, 0, 1); ``` 参考sf_unidpdf sf_unidcdf sf_unidinv Randunid 分布函数 ###### sf_normpdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array(-2, 0.1) - > 2; return sf_normpdf(x, 0, 1); ``` 参考分布函数 sf_normcdf sf_norminv Randnorm Normfit ###### sf_geoinv 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl y := array(0.01, 0.01) - > 0.99; return sf_geoinv(y, 0.5); ``` 参考sf_geopdf sf_geocdf Randgeo 分布函数 ###### sf_unidpdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := 1 - > 10; return sf_unidpdf(x, 10); ``` 参考sf_unidpdf sf_unidcdf sf_unidinv Randunid 分布函数 ###### sf_IncompleteBeta 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl a := 3; b := 4; x := 0.25; sf_IncompleteBeta(a, b, x, v); return v; // 结果:0.16943 ``` 参考sf_Beta ###### sf_normalinv2 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl sf_normalinv2(0.5 , v); return v; // 返回结果0. ``` ###### sf_norminv 用途:进行数值统计计算。 参数: 返回:处理后的结果值。 范例 ```tsl y := array(0.01, 0.01) - > 0.99; return sf_norminv(y, 0, 1); ``` 参考分布函数 sf_normpdf sf_normcdf Randnorm Normfit ###### Randunid 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Randunid(10, 10, array("a", "b")); ``` 参考sf_unidpdf sf_unidcdf sf_unidinv 分布函数 ###### sf_Normal 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := 0; a := 0; d := 1; sf_Normal(x, a, d, v); return v; // 结果:0.5 ``` 参考sf_t sf_X2 sf_F ###### sf_unidinv 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl y := array(0.01, 0.01) - > 0.99; return sf_unidinv(y, 10); ``` 参考sf_unidpdf sf_unidcdf sf_unidinv Randunid 分布函数 ###### sf_X2 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := 2.5; n := 10; sf_X2(x, n, v); return v; // 结果:0.00912 ``` 参考sf_Normal sf_t sf_F ###### sf_IntegerBessel_2 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl n := 7; x := 4.5; sf_IntegerBessel_2(n, x, v); return v; // 结果: -2.02943 ``` 参考sf_IntegerBessel_1 sf_RealBessel_1 sf_RealBessel_2 ###### sf_normcdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 算法 标准正态分布的概率密度函数为: pt=12πe-t22 t∈(-∞,+∞) 则随机变量x对应分布函数(x): (x)=12π-∞xe-t22dt 定义函数erfx=2π0xe-t2dt(x>0)为误差函数; 函数erfcx=1-erfx=2πx+∞e-t2dt为余误差函数。 则分布函数x与余误差函数有以下关系: x=0.5\*erfc(-x2) 设随机变量服从均值为mu,标准差为sigma的正态分布Nmu,sigma,经过标准化 z=x-musigma 后服从标准正态分布N0,1。 变量z对应的分布函数值为: z=0.5\*erfc(-z2)范例 ```tsl x := array(-4, 0.1) - > 4; return sf_normcdf(x, 0, 1); ``` 参考分布函数 sf_normpdf sf_norminv Randnorm Normfit ###### sf_t 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl t := 2.5; n := 10; sf_t(t, n, v); return v; // 结果:0.98428 ``` 参考sf_Normal sf_X2 sf_F ###### sf_geocdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := 1 - > 10; return sf_geocdf(x, 0.5); ``` 参考sf_geopdf sf_geoinv Randgeo 分布函数 ###### Randgeo 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Randgeo(10, 10, array("a", "b")); ``` 参考sf_geopdf sf_geocdf sf_geoinv 分布函数 ###### sf_normalinv 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl sf_normalinv(0.5, 0, 1, v); return v; // 返回结果0. ``` ###### Normfit 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := randnorm(0, 1, 10, array("a", "b")); return Normfit(x, 0.05); ``` 结果:返回mu,sigma的估计以及他们的在alpha的显著性水平下的区间估计 ###### sf_RealBessel_2 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl n := 7; x := 4.5; sf_RealBessel_2(n, x, v); return v; // 结果:0.56161 ``` 参考sf_IntegerBessel_1 sf_IntegerBessel_2 sf_RealBessel_1 ###### sf_hygeinv 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl y := array(0.01, 0.01) - > 0.99; return sf_hygeinv(y, 100, 10, 20); ``` 参考sf_hygepdf sf_hygecdf Randhyge 分布函数 ###### poissfit 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := randpoiss(1, 100); return poissfit(x, 0.05); ``` 结果:返回lambda的估计以及他们的在alpha的显著性水平下的区间估计 参考sf_poisspdf sf_poisscdf sf_poissinv Randpoiss 分布函数 ###### sf_binocdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := 1 - > 10; return sf_binocdf(x, 10, 0.5); ``` 参考sf_binopdf sf_binoinv Randbino binofit 分布函数 ###### Randhyge 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Randhyge(100, 10, 20, 10, array("a", "b")); ``` 参考sf_hygepdf sf_hygecdf sf_hygeinv 分布函数 ###### sf_poissinv 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl y := array(0.01, 0.01) - > 0.99; return sf_poissinv(y, 10); ``` 参考sf_poisspdf sf_poisscdf Randpoiss poissfit 分布函数 ###### sf_poisscdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := 1 - > 20; return sf_poisscdf(x, 10); ``` 参考sf_poisspdf sf_poissinv Randpoiss poissfit 分布函数 ###### sf_nbininv 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl y := array(0.01, 0.01) - > 0.99; return sf_nbininv(y, 10, 0.5); ``` 参考sf_nbinpdf sf_nbincdf Randnbin 分布函数 ###### binofit 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := randbino(10, 0.5, 1); return binofit(x, 10, 0.05); ``` 结果:返回p的估计以及在alpha的显著性水平下的区间估计 参考sf_binopdf sf_binocdf sf_binoinv Randbino 分布函数 ###### sf_hygepdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := 1 - > 20; return sf_hygepdf(x, 100, 10, 20); ``` 参考sf_hygecdf sf_hygeinv Randhyge 分布函数 ###### sf_unifcdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := 1 - > 10; return sf_unifcdf(x, 1, 10); ``` 参考sf_unifpdf Randunif uniffit 分布函数 ###### sf_exppdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array(0, 0.1) - > 4.5; return sf_exppdf(x, 1); ``` 参考sf_expcdf sf_expinv Randexp expfit 分布函数 ###### sf_binoinv 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl y := array(0.01, 0.01) - > 0.99; return sf_binoinv(y, 10, 0.5); ``` 参考sf_binopdf sf_binocdf Randbino binofit 分布函数 ###### uniffit 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := randunif(1, 10, 100); return uniffit(x, 0.05); ``` 结果:返回a,b的估计以及他们的在alpha的显著性水平下的区间估计 参考sf_unifpdf sf_unifcdf sf_unifinv Randunif 分布函数 ###### sf_nbinpdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := 1 - > 20; return sf_nbinpdf(x, 10, 0.5); ``` 参考sf_nbincdf sf_nbininv Randnbin 分布函数 ###### Randnbin 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Randnbin(10, 0.5, 10, array("a", "b")); ``` 参考sf_nbinpdf sf_nbincdf sf_nbininv 分布函数 ###### Randpoiss 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Randpoiss(10, 10, array("a", "b")); ``` 参考sf_poisspdf sf_poisscdf sf_poissinv poissfit 分布函数 ###### sf_hygecdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := 1 - > 10; return sf_hygecdf(x, 100, 10, 20); ``` 参考sf_hygepdf sf_hygeinv Randhyge 分布函数 ###### sf_poisspdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := 1 - > 20; return sf_poisspdf(x, 10); ``` 参考sf_poisscdf sf_poissinv Randpoiss poissfit 分布函数 ###### Randbino 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Randbino(10, 0.5, 10, array("a", "b")); ``` 参考sf_binopdf sf_binocdf sf_binoinv binofit 分布函数 ###### Randunif 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Randunif(1, 10, 10, array("a", "b")); ``` 参考sf_unifpdf sf_unifcdf sf_unifinv uniffit 分布函数 ###### sf_unifinv 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl y := array(0.01, 0.01) - > 0.99; return sf_unifinv(y, 1, 10); ``` 参考sf_unifpdf sf_unifcdf Randunif uniffit 分布函数 ###### sf_binopdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := 1 - > 20; return sf_binopdf(x, 10, 0.5); ``` 参考sf_binocdf sf_binoinv Randbino binofit 分布函数 ###### sf_nbincdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := 1 - > 10; return sf_nbincdf(x, 10, 0.5); ``` 参考sf_nbinpdf sf_nbininv Randnbin 分布函数 ###### sf_unifpdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := 1 - > 10; return sf_unifpdf(x, 1, 10); ``` 参考sf_unifcdf Randunif uniffit 分布函数 ###### sf_tcdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array(-2.5, 0.1) - > 2.5; return sf_tcdf(x, 30); ``` 参考sf_tpdf sf_tinv1 Randt 分布函数 ###### sf_fpdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array(0, 0.1) - > 3; return sf_fpdf(x, 20, 30); ``` 参考sf_fcdf sf_finv1 Randf 分布函数 ###### sf_tinv 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl sf_tinv(0.6, 30, v); return v; // 返回结果0.255605364951908 ``` ###### expfit 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := randexp(1, 100); return expfit(x, 0.05); ``` 结果:返回parm的估计已经他们的在alpha的显著性水平下的区间估计 参考sf_exppdf sf_expcdf sf_expinv Randexp 分布函数 ###### Randgam 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Randgam(2, 2, 100, array("a", "b")); ``` 参考sf_gampdf sf_gamcdf sf_gaminv 分布函数 ###### sf_ch2inv 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl y := array(0.01, 0.01) - > 0.99; return sf_ch2inv(y, 30); ``` 参考sf_ch2pdf sf_ch2cdf Randch2 分布函数 ###### sf_ch2cdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := 0 - > 50; return sf_ch2cdf(x, 30); ``` 参考sf_ch2pdf sf_ch2inv Randch2 分布函数 ###### sf_finv1 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl y := array(0.01, 0.01) - > 0.99; return sf_finv1(y, 20, 30); ``` 参考sf_fpdf sf_fcdf Randf 分布函数 ###### Randt 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Randt(30, 10, array("a", "b")); ``` 参考sf_tpdf sf_tcdf sf_tinv1 分布函数 ###### sf_expcdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array(0, 0.1) - > 4.5; return sf_expcdf(x, 1); ``` 参考sf_exppdf sf_expinv Randexp expfit 分布函数 ###### sf_finv 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl sf_finv(0.6, 20, 30, v); return v; // 返回结果1.09737928787751 ``` ###### sf_gamcdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array(0, 0.1) - > 13; return sf_gamcdf(x, 2, 2); ``` 参考sf_gampdf sf_gaminv Randgam 分布函数 ###### sf_tpdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array(-2.5, 0.1) - > 2.5; return sf_tpdf(x, 30); ``` 参考sf_tcdf sf_tinv1 Randt 分布函数 ###### sf_x2inv 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl sf_x2inv(0.6, 30, v); return v; // 返回结果31.3158632360391 ``` ###### sf_gampdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array(0, 0.1) - > 13; return sf_gampdf(x, 2, 2); ``` 参考sf_gamcdf sf_gaminv Randgam 分布函数 ###### sf_gammainv 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl sf_gammainv(0.068094, 9, v); return v; // 返回结果 5.000005596 ``` ###### sf_fcdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array(0, 0.1) - > 3; return sf_fcdf(x, 20, 30); ``` 参考sf_fpdf sf_finv1 Randf 分布函数 ###### sf_ch2pdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := 0 - > 50; return sf_ch2pdf(x, 30); ``` 参考sf_ch2cdf sf_ch2inv Randch2 分布函数 ###### Randf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Randf(20, 30, 10, array("a", "b")); ``` 参考sf_fpdf sf_fcdf sf_finv1 分布函数 ###### Randexp 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Randexp(1, 10, array("a", "b")); ``` 参考sf_exppdf sf_expcdf sf_expinv expfit 分布函数 ###### Randch2 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Randch2(30, 10, array("a", "b")); ``` 参考sf_ch2pdf sf_ch2cdf sf_ch2inv 分布函数 ###### sf_gaminv 用途:进行数值统计计算。 参数: 返回:处理后的结果值。 范例 ```tsl y := array(0.01, 0.01) - > 0.99; return sf_gaminv(y, 2, 2); ``` 参考sf_gampdf sf_gamcdf Randgam 分布函数 ###### sf_expinv 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl y := array(0.01, 0.01) - > 0.99; return sf_expinv(y, 1); ``` 参考sf_exppdf sf_expcdf Randexp expfit 分布函数 ###### sf_betapdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array(0, 0.01) - > 1; return sf_betapdf(x, 2, 4); ``` 参考sf_betacdf sf_betainv Randbeta 分布函数 ###### sf_tinv1 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl y := array(0.01, 0.01) - > 0.99; return sf_tinv1(y, 30); ``` 参考sf_tpdf sf_tcdf Randt 分布函数 ###### RandCauchy 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return RandCauchy(0, 2, 10, array("a", "b")); ``` 参考sf_Cauchypdf sf_Cauchycdf sf_Cauchyinv 分布函数 ###### sf_Laplacecdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array(-8, 0.1) - > 8; return sf_Laplacecdf(x, 0, 2); ``` 参考sf_Laplacepdf sf_Laplaceinv RandLaplace 分布函数 ###### Randbeta 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Randbeta(2, 4, 100, array("a", "b")); ``` 参考sf_betapdf sf_betacdf sf_betainv 分布函数 ###### sf_Cauchypdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array(-60, 1) - > 60; return sf_Cauchypdf(x, 0, 2); ``` 参考sf_Cauchycdf sf_Cauchyinv RandCauchy 分布函数 ###### sf_logninv 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl y := array(0.01, 0.01) - > 0.99; return sf_logninv(y, 0, 1); ``` 参考sf_lognpdf sf_logncdf Randlogn 分布函数 ###### sf_Laplaceinv 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl y := array(0.01, 0.01) - > 0.99; return sf_Laplaceinv(y, 0, 2); ``` 参考sf_Laplacepdf sf_Laplacecdf RandLaplace 分布函数 ###### sf_betacdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array(0, 0.01) - > 1; return sf_betacdf(x, 2, 4); ``` 参考sf_betapdf sf_betainv Randbeta 分布函数 ###### sf_raylinv 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl y := array(0.01, 0.01) - > 0.99; return sf_raylinv(y, 1); ``` 参考sf_raylpdf sf_raylcdf Randrayl 分布函数 ###### sf_wblcdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array(0, 0.05) - > 3; return sf_wblcdf(x, 1, 1.5); ``` 参考sf_wblpdf sf_wblinv Randwbl 分布函数 ###### sf_lognpdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array(0, 0.1) - > 5; return sf_lognpdf(x, 0, 1); ``` 参考sf_logncdf sf_logninv Randlogn 分布函数 ###### sf_Cauchycdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array(-60, 1) - > 60; return sf_Cauchycdf(x, 0, 2); ``` 参考sf_Cauchypdf sf_Cauchyinv RandCauchy 分布函数 ###### Randlogn 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Randlogn(0, 1, 10, array("a", "b")); ``` 参考sf_lognpdf sf_logncdf sf_logninv 分布函数 ###### Randrayl 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Randrayl(1, 100, array("a", "b")); ``` 参考sf_raylpdf sf_raylcdf sf_raylinv 分布函数 ###### sf_Laplacepdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array(-8, 0.1) - > 8; return sf_Laplacepdf(x, 0, 2); ``` 参考sf_Laplacecdf sf_Laplaceinv RandLaplace 分布函数 ###### sf_raylpdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array(0, 0.05) - > 9; return sf_raylpdf(x, 1); ``` 参考sf_raylcdf sf_raylinv Randrayl 分布函数 ###### sf_wblinv 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl y := array(0.01, 0.01) - > 0.99; return sf_wblinv(y, 1, 1.5); ``` 参考sf_wblpdf sf_wblcdf Randwbl 分布函数 ###### sf_logncdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array(0, 0.1) - > 5; return sf_logncdf(x, 0, 1); ``` 参考sf_lognpdf sf_logninv Randlogn 分布函数 ###### sf_Cauchyinv 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl y := array(0.01, 0.01) - > 0.99; return sf_Cauchyinv(y, 0, 2); ``` 参考sf_Cauchypdf sf_Cauchycdf RandCauchy 分布函数 ###### sf_raylcdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array(0, 0.05) - > 3; return sf_raylcdf(x, 1); ``` 参考sf_raylpdf sf_raylinv Randrayl 分布函数 ###### Randwbl 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Randwbl(1, 1.5, 100, array("a", "b")); ``` 参考sf_wblpdf sf_wblcdf sf_wblinv 分布函数 ###### sf_betainv 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl y := array(0.01, 0.01) - > 0.99; r := sf_betainv(y, 2, 4, x); return x; ``` 参考sf_betapdf sf_betacdf Randbeta 分布函数 ###### RandLaplace 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return RandLaplace(0, 2, 10, array("a", "b")); ``` 参考sf_Laplacepdf sf_Laplacecdf sf_Laplaceinv 分布函数 ###### sf_wblpdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array(0, 0.05) - > 3; return sf_wblpdf(x, 1, 1.5); ``` 参考sf_wblcdf sf_wblinv Randwbl 分布函数 ###### sf_betainv1 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl y := array(0.01, 0.01) - > 0.99; return sf_betainv1(y, 2, 4); ``` 参考sf_betapdf sf_betacdf Randbeta 分布函数 ###### sf_mvtcdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 范例01: ```tsl Rho := array( (1.0000, 0.9264, 0.0406), (0.9264, 1.0000, 0.0613), (0.0406, 0.0613, 1.0000) ); u := Randunif(0, 1, 300, 3); return sf_mvtcdf(nil, u, rho, 2); ``` 范例02: ```tsl return sf_mvtcdf(zeros(length(u), 3), u, rho, 2); ``` ###### Mvtcdfqmc 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 范例01: ```tsl Rho := array( (1, 0.923912552224476, 0.035770327030089), (0.923912552224476, 1, 0.084276570941762), (0.035770327030089, 0.084276570941762, 1) ); return Mvtcdfqmc(array(0, 0, 0), rand(3), rho, 2, array()); ``` ###### sf_mvncdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 范例01: ```tsl Rho := array( (1.0000, 0.9264, 0.0406), (0.9264, 1.0000, 0.0613), (0.0406, 0.0613, 1.0000) ); u := Randunif(0, 1, 300, 3); return sf_mvncdf(nil, u, nil, rho); ``` 范例02: ```tsl return sf_mvncdf(zeros(length(u), 3), u, zeros(1, 3), rho); ``` ###### sf_copulacdf 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 范例01:gaussian分布 ```tsl u := Randunif(0, 1, 300, 3); Rho := array( (1.0000, 0.9239, 0.0358), (0.9239, 1.0000, 0.0843), (0.0358, 0.0843, 1.0000) ); return sf_copulacdf(u, "gaussian", rho); ``` 范例02:t分布 ```tsl u := Randunif(0, 1, 300, 3); Rho := array( (1, 0.923912552224476, 0.035770327030089), (0.923912552224476, 1, 0.084276570941762), (0.035770327030089, 0.084276570941762, 1) ); return sf_copulacdf(u, "t", rho, 2); ``` 范例03:阿基米德族,clayton(frank、gumbel调用相同) ```tsl u := Randunif(0, 1, 300, 2); return sf_copulacdf(u, "clayton", nil, 1); ``` ###### sf_copulafit 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 范例01:gaussian分布 ```tsl // 返回数组,相关系数矩阵 u := Randunif(0, 1, 300, 3); return sf_copulafit(u, "gaussian", "AML"); ``` 范例02:t分布 ```tsl // 返回数组,相关系数矩阵以及自由度 u := Randunif(0, 1, 300, 2); return sf_copulafit(u, "t", "AML"); ``` 范例03:阿基米德族,clayton(frank、gumbel调用相同) ```tsl // 返回实数,参数估计值 u := Randunif(0, 1, 300, 2); return sf_copulafit(u[:, 0:1], "clayton"); ``` ###### RandCopula 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 范例01:gaussian分布 ```tsl Rho := array( (1.0000, 0.9239, 0.0358), (0.9239, 1.0000, 0.0843), (0.0358, 0.0843, 1.0000) ); n := 10; v := array((0, 0, 0), (0, 0, 0), (0, 0, 0)); return RandCopula("gaussian", rho, v, n); ``` 范例02:t分布 ```tsl Rho := array( (1.0000, 0.9239, 0.0358), (0.9239, 1.0000, 0.0843), (0.0358, 0.0843, 1.0000) ); n := 10; return RandCopula("t", rho, 3, n); ``` 范例03:阿基米德族,clayton(frank、gumbel调用相同) ```tsl alpha := 1; n := 10; return RandCopula("clayton", nil, alpha, n); ``` ###### sf_exp 用途:统计分布相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl y := array(0.01, 0.01) - > 0.99; sf_exp(y, 3, v); return v; ``` ###### Norminv 用途:进行数值统计计算。 参数: 返回:处理后的结果值。 范例 ```tsl return Norminv(0.15, 0.5, 1); // -0.5364 ``` ##### 统计推断 ###### 内容 - Estimate_SNU - Estimate_TNU - Estimate\_ SND - Estimate_TND - Estimate_SP - Estimate_TP - Hypoth_TailRes - NormPlot - Hypoth_Kstest - Hypoth_lillietest - Hypoth_IndepTest - Hypoth_KruskalWallis - Hypoth_SNUTest - Hypoth_TNUTest - Hypoth_SNDTest - Hypoth_TNDTest - Hypoth_LSUTest - Anova_Single - Anova_Twice - Anova_Bartlett - Anova_Levene - 假设检验 - 配对检验 ###### Estimate_SNU 用途:统计推断相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array(4.68, 4.85, 4.32, 4.85, 4.61, 5.02, 5.2, 4.6, 4.58, 4.72, 4.38, 4.7); return Estimate_SNU(x, nil, 0.05, 'both'); ``` 参考Estimate*TNU Estimate* SND Estimate_TND Estimate_SP Estimate_TP ###### Estimate_TNU 用途:统计推断相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl X := array((628, 583, 510, 554, 612, 523, 530, 615), (535, 433, 398, 470, 567, 480, 498, 560, 503, 426)); d := array(nil, nil); return Estimate_TNU(X, d, 0.05, 'both', 1); ``` 参考Estimate*SNU Estimate* SND Estimate_TND Estimate_SP Estimate_TP ###### Estimate\_ SND 范例 ```tsl x := array(45.3, 45.4, 45.1, 45.3, 45.5, 45.7, 45.4, 45.3, 45.6); alpha := 0.05; return Estimate_SND(x, alpha, 'right'); ``` 参考Estimate_SNU Estimate_TNU Estimate_TND Estimate_SP Estimate_TP ###### Estimate_TND 用途:统计推断相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl X := array((2.066, 2.063, 2.068, 2.06, 2.067), (2.058, 2.057, 2.063, 2.059, 2.06)); alpha := 0.1; return Estimate_TND(X, alpha); ``` 参考Estimate*SNU Estimate_TNU Estimate* SND Estimate_SP Estimate_TP ###### Estimate_SP 用途:统计推断相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl mx := 0.3; n := 120; alpha := 0.05; return Estimate_SP(mx, n, alpha); ``` 参考Estimate*SNU Estimate_TNU Estimate* SND Estimate_TND Estimate_TP ###### Estimate_TP 用途:统计推断相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl P := array(0.478, 0.328); N := array(1000.00, 750.00); alpha := 0.05; return Estimate_TP(P, N, alpha); ``` 参考Estimate*SNU Estimate_TNU Estimate* SND Estimate_TND Estimate_SP ###### Hypoth_TailRes 用途:统计推断相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Hypoth_TailRes(50.110101, 0.06, "left", 0.05); ``` ###### NormPlot 用途:统计推断相关函数。 参数: 返回:处理后的结果值。 范例 ```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)) QQ图形: Return NormPlot(x,1); 结果:0.911334081735257参考Hypoth_Kstest Hypoth_lillietest ###### Hypoth_Kstest 用途:统计推断相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Hypoth_Kstest(randn(0, 1, 100), ’both’, a, cdf); ``` 参考NormPlot Hypoth_lillietest ###### Hypoth_lillietest 用途:统计推断相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return Hypoth_lillietest(array(9.4000, 8.8000, 9.6000, 10.2000, 10.1000, 7.2000 , 11.1000, 8.2000, 8.6000, 9.6000), 0.05, "norm"); ``` 参考NormPlot Hypoth_Kstest ###### Hypoth_IndepTest 用途:统计推断相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl X := array((25, 70, 60, 85, 95, 90, 80), (70, 60, 20, 30, 15, 40, 35), (50, 70, 60, 80, 90, 70, 75)); return Hypoth_IndepTest(X, 0.05); ``` 结果表示拒绝原假设,即x与y有关参考Hypoth_KruskalWallis ###### Hypoth_KruskalWallis 用途:统计推断相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array((120, 30), (479, 371));return Hypoth_KruskalWallis(x, 0.05); ``` 结果表示接受原假设,即x与y无关参考Hypoth_IndepTest ###### Hypoth_SNUTest 用途:统计推断相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array(8.05, 8.15, 8.2, 8.1, 8.25); u := 8; d := 0.2; tail := "both"; alpha := 0.05; return Hypoth_SNUTest(x, u, d, tail, alpha); ``` 表示接受原假设,均值等于8,该假设检验使用U检验,其中U统计量为1.677,对应的P值为0.094,在显著性水平为0.05时,不能拒绝原假设,所以我们接受原假设。结果中还给出了均值的在0.05的显著性水平下的置信区间参考Hypoth_TNUTest Hypoth_SNDTest Hypoth_TNDTest Hypoth_LSUTest ###### Hypoth_TNUTest 用途:统计推断相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl X := array((76.43, 76.21, 73.58, 69.69, 65.29, 70.83, 82.75, 72.34), (73.66, 64.27, 69.34, 71.37, 69.77, 68.12, 67.27, 68.07, 62.61)); uu := 0; d := array(1, 1); tail := "both"; alpha := 0.05; return Hypoth_TNUTest(X, uu, d, tail, alpha, 0); ``` 表示拒绝均值差等于0的原假设。该假设检验使用U检验,其中U统计量为10.525,对应的P值为0.00,在显著性水平为0.05时,拒绝原假设,所以我们认为两个样本均值之差显著不为0。结果中还给出了均值差在0.05的显著性水平下的置信区间。参考Hypoth_SNUTest Hypoth_SNDTest Hypoth_TNDTest Hypoth_LSUTest ###### Hypoth_SNDTest 用途:统计推断相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array(1.38, 1.43, 1.39, 1.40, 1.41); d2 := sqr(0.048); tail := "left"; alpha := 0.1; return Hypoth_SNDTest(x, d2, tail, alpha); ``` 表示拒绝方差大于sqr(0.048)的原假设。该假设检验使用卡方检验,其中卡方统计量为0.642,对应的P值为0.042,在显著性水平为0.05时,拒绝原假设。参考Hypoth_SNUTest Hypoth_TNUTest Hypoth_TNDTest Hypoth_LSUTest ###### Hypoth_TNDTest 用途:统计推断相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl X := array((0.140, 0.138, 0.143, 0.141, 0.144, 0.137), (0.135, 0.140, 0.142, 0.136, 0.139)); tail := "both"; alpha := 0.1; return Hypoth_TNDTest(X, tail, alpha); ``` 表示接受原假设,则方差相同参考Hypoth_SNUTest Hypoth_TNUTest Hypoth_SNDTest Hypoth_LSUTest ###### Hypoth_LSUTest 用途:统计推断相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl mx := 1.85; s2 := 0.0064; n := 100; u := 1.84; tail := "both"; alpha := 0.01; return Hypoth_LSUTest(mx, s2, n, u, tail, alpha); ``` 表示均值为1.84参考Hypoth_SNUTest Hypoth_TNUTest Hypoth_SNDTest Hypoth_TNDTest ###### Anova_Single 用途:统计推断相关函数。 参数: 返回:处理后的结果值。 范例 例子来自《概率论与数理统计教程》-高等教育出版社 P379 例8.1.4 因素A有4个水平,对A进行重复试验,获得观察值如下: A1=12 18 A2=14 12 13 A3=19 17 21 A4=24 30 现在显著性水平0.05下,判断以上各水平是否有显著差异 ```tsl x := array((12, 18), (14, 12, 13), (19, 17, 21), (24, 30)); alpha := 0.05; return Anova_Single(x, alpha); ``` 结果表示拒绝原假设,即各个水平下的方差间有显著差异参考Anova_Twice Anova_Bartlett Anova_Levene ###### Anova_Twice 用途:统计推断相关函数。 参数: 返回:处理后的结果值。 范例 在某指标,因素A和因素B有3个水平,对A、B分别进行2次重复试验,获得观察值如下: x:= array((75.00,81.00,74.00),(75.00,81.00,73.00),(62.00,85.00,79.00),(71.00,68.00,60.00), (58.00,92.00, 75.00),(73.00,90.00,81.00)); 现在显著性水平0.05下,判断以上因素A和B对某指标是否有显著影响 ```tsl x := array((75.00, 81.00, 74.00), (75.00, 81.00, 73.00), (62.00, 85.00, 79.00), (71.00, 68.00, 60.00), (58.00, 92.00, 75.00), (73.00, 90.00, 81.00)); return Anova_Twice(x, 0.05, 2); ``` 因素A:结果表示接受原假设,即因素A对某指标无显著影响 因素B:结果表示拒绝原假设,即因素B对某指标影响显著 交叉效应:结果表示拒绝原假设,即交叉效应对某指标影响显著参考Anova_Single Anova_Bartlett Anova_Levene ###### Anova_Bartlett 用途:统计推断相关函数。 参数: 返回:处理后的结果值。 范例 因素A有4个水平,对A进行重复试验,获得观察值如下: A1=7.96.26.68.68.910.19.6 A2=5.7 7.5 9.8 6.1 8.4 A3=6.4 7.1 7.9 4.5 5 4 A4=6.8 7.5 5 5.3 6.1 7.4 现在显著性水平0.05下,判断以上四组数据方差是否有显著差异: ```tsl x := array((7.9, 6.2, 6.6, 8.6, 8.9, 10.1, 9.6), (5.7, 7.5, 9.8, 6.1, 8.4), (6.4, 7.1, 7.9, 4.5, 5.0, 4.0), (6.8, 7.5, 5.0, 5.3, 6.1, 7.4)); return Anova_Bartlett(x, 0.05); ``` array("B-Stat":0.965,"P-Value":0.81,"df":3,"Hypothesis":1) 结果表示接受原假设,即各个水平下的方差间无显著差异参考Anova_Single Anova_Twice Anova_Levene ###### Anova_Levene 用途:统计推断相关函数。 参数: 返回:处理后的结果值。 范例 因素A有4个水平,对A进行重复试验,获得观察值如下: A1=7.96.26.68.68.910.19.6 A2=5.7 7.5 9.8 6.1 8.4 A3=6.4 7.1 7.9 4.5 5 4 A4=6.8 7.5 5 5.3 6.1 7.4 现在显著性水平0.05下,判断以上四组数据方差是否有显著差异: ```tsl x := array((7.9, 6.2, 6.6, 8.6, 8.9, 10.1, 9.6), (5.7, 7.5, 9.8, 6.1, 8.4), (6.4, 7.1, 7.9, 4.5, 5.0, 4.0), (6.8, 7.5, 5.0, 5.3, 6.1, 7.4)); return Anova_Levene(x, 0.05); ``` array("F-Stat":0.514,"P-Value":0.678,"df1":3,"df2":20,"Hypothesis":1) 结果表示接受原假设,即各个水平下的方差间无显著差异参考Anova_Single Anova_Twice Anova_Bartlett ###### 假设检验 ####### 内容 - Hypoth_SignTest - Hypoth_WilcoxonTest - Hypoth_McNemarTest ####### Hypoth_SignTest 用途:统计推断相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array(27.8, 27.8, 29.1, 32.2, 32.7, 32.7, 36.4, 36.5, 37.5, 37.7, 38.8, 41.9); pi_ := 0.5; q0 := 32; tail := "both"; Alpha := 0.05; return Hypoth_SignTest(x, pi_, q0, tail, alpha); ``` ####### Hypoth_WilcoxonTest 用途:统计推断相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array(27.8, 27.8, 29.1, 32.2, 32.7, 32.7, 36.4, 36.5, 37.5, 37.7, 38.8, 41.9); m0 := 34; tail := "both"; Alpha := 0.05; return Hypoth_WilcoxonTest(x, m0, tail, Alpha); ``` 结果 ####### Hypoth_McNemarTest 用途:统计推断相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array((6, 4), (20, 10)); Alpha := 0.05; return Hypoth_McNemarTest(x, Alpha); ``` 结果 ###### 配对检验 ####### 内容 - Hypoth_PNUTest - Hypoth_PSignTest - Hypoth_PWilcoxonTest ####### Hypoth_PNUTest 用途:统计推断相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl X := array((5, 4, 7, 3, 5, 8, 5, 6), (6, 6, 7, 4, 3, 9, 7, 6)); uu := 0; d := nil; tail := "both"; alpha := 0.05; return Hypoth_PNUTest(x, uu, d, tail, alpha) ``` ####### Hypoth_PSignTest ####### Hypoth_PWilcoxonTest ##### 多元统计分析 ###### 内容 - Corr - CorrelationMatrix - Covariance - Corrcoef - Corr_partial - Distance - Cluster_Kmeans - Cluster_System - Cluster_ward - Discrim - princomp - Factor - corr_canonical - corr_Spearman - 相对重要性 - Cov2CorrMatrix - CorrMatrixAdjust - corr_Kendall - HISTC ###### Corr 用途:多元统计分析相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl A := rand(3, 4); return Corr(A, 1); // 返回的是一般相关系数矩阵 ``` 输出结果: ```tsl A := rand(3, 4); return ret := Corr(A, 1, 'both'); ``` 输出结果: array( ( (1,-0.997183665009044,-0.25079062964811,0.52903553507686), (-0.997183665009044,1,0.177482907109564,-0.463902099303707), (-0.25079062964811,0.177482907109564,1,-0.954156728736678), (0.52903553507686,-0.463902099303707,-0.954156728736678,0.999999999999999)), ( (0.00,0.0477902336084508,0.83861889909013,0.645107717271616), (0.0477902336084508,0.00,0.886409132694126,0.692897950958597), (0.83861889909013,0.886409132694126,0.00,0.1935111818216), (0.645107717271616,0.692897950958597,0.1935111818216,2.683151079097E-8))) Ret[0]:相关系数矩阵 Ret[1]:相关系数假设检验P值参考Covariance Corr_partial CorrelationMatrix Corrcoef Corr_partial Distance ###### CorrelationMatrix 用途:多元统计分析相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl a := rand(4, 3); return CorrelationMatrix(a, 1); ``` 结果 参考Corr Covariance Corr_partial Corrcoef Corr_partial Distance ###### Covariance 用途:多元统计分析相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl a := rand(4, 3); return Covariance(A); ``` 结果 参考Corr CorrelationMatrix Corr_partial Corrcoef Corr_partial Distance ###### Corrcoef 用途:多元统计分析相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl A := rand(7, 4); return Corrcoef(A); // 返回简单相关系数分析 ``` 输出结果: 参考Corr Covariance Corr_partial CorrelationMatrix Corr_partial Distance ###### Corr_partial 用途:多元统计分析相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := rand(100, 3); y := rand(100, 2); z := rand(100, 2); return Corr_partial(x, y, z, 2); // 返回结果:array((-0.0862,0.2046),(-0.1844,0.00),(0.0736,0.0411)) ret := Corr_partial(x, y, z, 2, 'both'); // 返回检验ret 为一个数据表类型 return ret['coef']; // 偏相关系数 return ret['pval']; // 检验偏相关系数是否显著的P值 return ret['df']; // 自由度 ``` 参考Corr Covariance CorrelationMatrix Corrcoef Corr_partial Distance ###### Distance 用途:多元统计分析相关函数。 参数: 返回:处理后的结果值。 范例 ```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; ```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));参考Corr Covariance Cluster_Kmeans Cluster_System Cluster_ward ###### Cluster_Kmeans 用途:进行数值统计计算。 参数: 返回:处理后的结果值。 范例 ```tsl sample := 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)); n := 3; options := array("maxiter":20, "tol":1.0e - 16, "distance":1, "out":1); // 可不输入采用默认 return Cluster_Kmeans(sample, n, options); ``` 结果 array( (1,2,4), //第一类为 1,2,4 个样本 (3), // 第二类为第3个样本 (0)); // 第三类为第0 个样本参考Distance Cluster_System Cluster_ward ###### Cluster_System 用途:多元统计分析相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl A := array( (7.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, 27.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)); dmethods := 1; methods := 1; output := array('best':1); ret1 := Cluster_System(a, Dmethods, Methods); ret2 := Cluster_System(a, Dmethods, Methods, output); ``` ret1,为谱系图 array( (2,3,2.2032702966273), (2,3,3.50368377568526), (0,1,11.6726218134573), (0,1,18.0243203755371)); 谱系图解析: 每行表示一次归类,(2,3,2.2032702966273)表示将第2个样本与第3个样本合并,为样本2,样本3,4为合并前的样本4,5,样本数减少一个。(2,3,3.50368377568526)表示将第3个样本与第2个样本合并为样本2,样本3为该次合并前的样本4, 样本数减少一个。 ret2为最佳分类 array(0,0,1,1,1) ; 样本0,1 被分在第一个类; 样本 2,3,4 被分在第二个类中;参考Distance Cluster_Kmeans Cluster_ward ###### Cluster_ward 用途:多元统计分析相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl A := array( (7.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, 27.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)); return Cluster_ward(a); ``` 结果 结果解析:第0列与第1列表示合并组合的相对位置,第2列表示合并组合间的距离平方,第3 列表示分类情况,中各个元素用 "," 分割类类之间用"#"分割 ###### Discrim 用途:多元统计分析相关函数。 参数: 返回:处理后的结果值。 范例 ```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); ``` 计算结果: 参考Cluster_Kmeans Cluster_System Distance Cluster_ward ###### princomp 用途:多元统计分析相关函数。 参数: 返回:处理后的结果值。 范例 ```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); ``` 参考Factor ###### Factor 用途:多元统计分析相关函数。 参数: 返回:处理后的结果值。 范例 我们对2010年上证A股的9个财务指标进行因子分析: TSL代码: ```tsl stockn := getbk("上证A股"); vo := BackUpSystemParameters(); SetSysParam(pn_date(), today()); sto := array(); for nI := 0 to length(stockn) - 1 do begin SetSysParam(pn_stock(), stockn[nI]); if IsStockGoMarket(inttodate(20011231)) then sto[length(sto)] := stockn[nI]; 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; ``` 结果分析: Ret["kmo",0]=0.733,即表明数据可以做因子分析 ret["Total Variance Explained",0]:第一列为样本矩阵的相关系数矩阵的特征值,第二列为方差贡献率,第三列为累计方差贡献率 ret["Component Matrix",0]:因子载荷矩阵 ret["Communalities",0]:共同度表示三个因子解释掉变量的多少,显然,共同度越大,表示能解释原来变量的信息就越全; ret["thogonal matrix",0]:从thogonal matrix中看出第一个公因子可以解释为“规模因子”,因为它的 0:主营业务收入净额、1:主营业务利润;、2:利润总额、3:净利润、7:资产总计、8:股本的绝对值都比较大;第二个公因子可以解释为“收益率因子”,因为其4:每股收益、5:每股净资产的绝对值大;第三个公因子则可以解释为“每股价值因子”因为其4:每股收益和6:净资产收益率;的绝对值较大。因子分析模型中的因子是抽象的,得根据研究对象的具体分析所解释,“解释”是抽象的概念。 ret["Rotation matrix",0]:旋转矩阵 array( (0.9888,0.1296,0.0734), (-0.149,0.8703,0.4695), (-0.0031,-0.4752,0.8799)) ret["Factor score",0]:因子得分,表示各个股票在这三个因子的得分情况,让研究人员更好的做其他分析参考princomp ###### corr_canonical 用途:多元统计分析相关函数。 参数: 返回:处理后的结果值。 算法 典型性分析算法说明: 典型相关分析是用来分析两组随机变量之间的相关性程度的一种统计方法,它能够有效地解释两组随机变量之间相互线性依赖的关系。 比如在实际问题中,经常遇到一部分变量和另一部分变量之间的相互关系。例如,在经济学中研究商品价格的相关指标和销售的相关指标之间的关系;在地质学中,研究岩石形成的成因关系,考察岩石的化学成分与其周围化学成分的相关性;教育学中,考察学生入学考试成绩和本科阶段一些主要课程成绩的相关性;在统计学中,也可以用来做随机变量之间的多重共线性判断和重构随机变量组,改进随机变量之间多重共线性问题,使得回归分析等结果更加合理,等等。 一般地,假设有两组随机变量和研究它们的相关关系,当p=q=1时,就是通常两个随机变量之间的相关关系;当p>1,q>1时,采用类似主成分分析的方法,找出的线性组合U和的线性组合V,即:U=,,于是将研究两组变量的相关性问题转化成研究两个变量的相关性问题,并且可以适当的调整系数a 和b,使得U和V的相关性达到最大,称这种相关为典型相关,基于这种原则的分析方法称为典型相关分析。 第一步,先定义典型相关,设X=和Y=为随机向量,用X和Y的线性组合和之间相关性来研究X与Y之间的相关性,并希望找到a与b,使得最大。由相关系数定义, | | | (4. 1) | | --- | --- | ------ | 对任意的α,β和c,d有 | | | (4. 2) | | --- | --- | ------ | 式(4.2)说明,使得相关系数最大的和并不唯一。因此,在综合变量,可限定,。 总结一下第一步,设X=和Y=,p+q维随机向量的均值为0,协方差阵正定。若存在a1=和b1=,使得是约束问题 | | max | (4. 3) | | --- | ---- | ------ | | | s.t. | (4. 4) | | | | (4. 5) | 目标函数的最大值,则成,为的第一对典型变量,称它们之间的相关系数为第一典型相关系数。 如果存在和使得 和前面的k-1对典型变量都不相关; ; 和相关系数最大 则称,为的第k对典型变量,称它们之间的相关系数为第k典型相关系数典型相关系数。 第二步,下面直接给出计算过程所需的重要推导步骤以及计算过程: 设Z=,则有,,令,,因此,求解第一对典型变量和典型相关系数的约束问题式(4.3)~(4.5)就等价为 | | max | (4. 6) | | --- | ---- | ------ | | | s.t. | (4. 7) | | | | (4. 8) | 这是一个典型的约束优化问题,这里采用拉格朗日乘数法求解该约束问题,其中为Lagrange乘子,得到如下方程: | | | (4. 9) | | --- | --- | ------- | | | | (4. 10) | | | | (4. 11) | | | | (4. 12) | 求解上述方程组,在式(4.6)左乘,在式(4.7)左乘,然后将式(4.8)代入式(4.6),将式(4.9)代入式(4.7),得到结果。由于正定(在第一步中有定义,即使没有定义的情况下协方差矩阵也是半正定的),所以和存在,先将式(4.6)和(4.7)中和移到等号右边,然后再分别左乘和,得到 | | , | (4. 13) | | --- | --- | ------- | 然后将代入式中,所以有 | | | (4. 14) | | --- | --- | ------- | 同理,可得 | | | (4. 15) | | --- | --- | ------- | 其中,。 因此,是矩阵特征根(注意,和具有相同的特征根),是的特征根对应的特征向量,是的特征根对应的特征向量。 由于,式(4.9)和式(4.11)可得。所以典型相关系数就是和共有根号下的特征根。 因此,优化问题式(4.3)~式(4.5)的解和就是求或最大特征跟相应的特征向量和。 计算步骤如下: 令; 计算最大的特征根和对应的特征向量,令,,,则为第一对典型相关系数,,为第一对典型变量。 对于第k对典型变量的求解方法类似于第一对典型相关变量,只需要将(2)改为 计算最大的特征根和对应的特征向量,令,,,则是第k对典型相关系数,,为第k对典型变量。 第三步,由于在实际中,设,和,所以无法求出典型变量和典型相关系数,需要用样本数据估计样本协方差矩阵。 已知,总体Z的n次观测数据 于是可给出Z的样本资料矩阵为 假设Z~Np+q(μ,∑),则样本协方差的极大似然估计为 其中,称为样本协方差矩阵。具体计算过程和第二步中的计算步骤基本相同,只需要将替换为即可求解。范例 实例1: 某康复俱乐部对两组指标的典型相关性分析 某康复俱乐部对20名中年人测量了3个生理指标:体重(X1)、腰围(X2)、脉搏(X3)和三个训练指标:引体向上(Y1)、仰卧起坐次数(Y2)、跳跃次数(Y3) 表1 :某康复俱乐部两组生理指标的典型相关分析 | 编号 | X1 | X2 | X3 | Y1 | Y2 | Y3 | | ---- | --- | --- | --- | --- | --- | --- | | 1 | 191 | 36 | 50 | 5 | 162 | 60 | | 2 | 193 | 38 | 58 | 12 | 101 | 101 | | 3 | 189 | 35 | 46 | 13 | 155 | 58 | | 4 | 211 | 38 | 56 | 8 | 101 | 38 | | 5 | 176 | 31 | 74 | 15 | 200 | 40 | | 6 | 169 | 34 | 50 | 17 | 120 | 38 | | 7 | 154 | 34 | 64 | 14 | 215 | 105 | | 8 | 193 | 36 | 46 | 6 | 70 | 31 | | 9 | 176 | 37 | 54 | 4 | 60 | 25 | | 10 | 156 | 33 | 54 | 15 | 225 | 73 | | 11 | 189 | 37 | 52 | 2 | 110 | 60 | | 12 | 162 | 35 | 62 | 12 | 105 | 37 | | 13 | 182 | 36 | 56 | 4 | 101 | 42 | | 14 | 167 | 34 | 60 | 6 | 125 | 40 | | 15 | 154 | 33 | 56 | 17 | 251 | 250 | | 16 | 166 | 33 | 52 | 13 | 210 | 115 | | 17 | 247 | 46 | 50 | 1 | 50 | 50 | | 18 | 202 | 37 | 62 | 12 | 210 | 120 | | 19 | 157 | 32 | 52 | 11 | 230 | 80 | | 20 | 138 | 33 | 68 | 2 | 110 | 43 | ```tsl return corr_canonical(x, y, 0.1, 1); ``` 实例2:企业经济效益典型相关分析 某市为了全面分析机械类各企业的经济效益,选择了8个不同的利润指标,14家企业关于这8个指标的统计数据如表4-1所示. 表2:机械类各企业的经济效益主成分分析 | 企业 | X1净产值利润率% | X2固定资产利润率% | X3总产值利润% | X4销售收入利润率% | Y1产品成本利润率% | Y2物耗利润率% | Y3人均利润率千元/人 | Y4流动资金利润率% | | ---- | --------------- | ----------------- | ------------- | ----------------- | ----------------- | ------------- | ------------------- | ----------------- | | 1 | 40.4 | 24.7 | 7.2 | 6.1 | 8.3 | 8.7 | 2.44 | 20.0 | | 2 | 25.0 | 12.7 | 11.2 | 11.0 | 12.9 | 20.2 | 3.542 | 9.1 | | 3 | 13.2 | 3.3 | 3.9 | 4.3 | 4.4 | 5.5 | 0.578 | 3.6 | | 4 | 22.3 | 6.7 | 5.6 | 3.7 | 6.0 | 7.4 | 0.176 | 7.3 | | 5 | 34.3 | 11.8 | 7.1 | 7.1 | 8.0 | 8.9 | 1.726 | 27.5 | | 6 | 35.6 | 12.5 | 16.4 | 16.7 | 22.8 | 29.3 | 3.017 | 26.6 | | 7 | 22.0 | 7.8 | 9.9 | 10.2 | 12.6 | 17.6 | 0.847 | 10.6 | | 8 | 48.4 | 13.4 | 10.9 | 9.9 | 10.9 | 13.9 | 1.772 | 17.8 | | 9 | 40.6 | 19.1 | 19.8 | 19.0 | 29.7 | 39.6 | 2.449 | 35.8 | | 10 | 24.8 | 8.0 | 9.8 | 8.9 | 11.9 | 16.2 | 0.789 | 13.7 | | 11 | 12.5 | 9.7 | 4.2 | 4.2 | 4.6 | 6.5 | 0.874 | 3.9 | | 12 | 1.8 | 0.6 | 0.7 | 0.7 | 0.8 | 1.1 | 0.056 | 1.0 | | 13 | 32.3 | 13.9 | 9.4 | 8.3 | 9.8 | 13.3 | 2.126 | 17.1 | | 14 | 38.5 | 9.1 | 11.3 | 9.5 | 12.2 | 16.4 | 1.327 | 11.6 | ```tsl // 首先选取数据并且对数据做标准化z-score,消除量纲对结果的影响 X := data[:][0:3]; Y := data[:][4:7]; return corr_canonical(X, Y, 0.1, 1); ``` 数据返回结论分析: 首先说明XCenter和YCenter返回结果都为零是因为做了数据标准化的结果。从Cor我们可以看出X和Y这两组随机变量之间具有很高的相似度,第一对典型相关系数达到100%的相似度。在这里想说明的是,如果在对类似数据进行回归分析的时候,回归诊断发现了比较严重的多重共线性的时候,此时可以运用典型相关分析的方法,提取出典型相关成都最高的第一对典型相关组合U或者V来代替之前出现多重共线性的随机变量,从而消除和改进回归模型的病态和精度。 ###### corr_Spearman 用途:多元统计分析相关函数。 参数: 返回:处理后的结果值。 算法ρ=∑(Rxi-Rx)(Ryi-Ry)∑(Rxi-Rx)2(Ryi-Ry)2 其中:Rx、Ry分别是x和y的位次,位次按照从大到小排序后,这个数所在的位置。 Rx、Ry分别表示平均位次。范例 ```tsl x := array(3, 8, 4, 7, 2); y := array(5, 10, 8, 10, 6); return corr_Spearman(x, y); ``` 结果:0.87208 ###### 相对重要性 ####### 内容 - Regress_domin_formula - Regress_domin_marginal ####### Regress_domin_formula 用途:进行数值统计计算。 参数: 返回:处理后的结果值。 范例 ```tsl y := rand(10); x := rand(10, 3); mr := Regress_Domin_Formula(y, x); return array( '详情':mr, '---':'---', '贡献和':sum(mr[:, '贡献度']), 'R2':Regression(y, x, 0.05, 1)['R-Squared'] ); ``` ####### Regress_domin_marginal 用途:进行数值统计计算。 参数: 返回:处理后的结果值。 算法 1、快速R2边际效用法:为完整回归的R2减去不包含变量 k 的回归的R2的差 2、平均R2边际效用法:考虑剔除回归的顺序 自变量较多时较消耗效率,一般在自变量不多于30个时使用范例 ```tsl Y := array(11.73913, 6.400963, 5.016723, 9.033813, 8.083731, 4.62963, 10.49114, 17.20612, 13.08374, 7.745568); X := array( (37.0, 48.0, 5.333333, 0.0, 69.33332900000001), (37.0, 40.0, 5.25, 0.0, 60.0), (42.0, 40.0, 1.25, 0.0, 16.25), (43.0, 42.0, 1.75, 1.0, 22.75), (42.0, 48.0, 17.75, 1.0, 200.0), (39.0, 30.0, 2.25, 1.0, 29.25), (37.0, 40.0, 19.0, 0.0, 247.0), (40.0, 45.0, 14.16667, 1.0, 150.0), (40.0, 8.0, 5.5, 1.0, 71.5), (40.0, 50.0, 2.25, 1.0, 29.25)); return Regress_Domin_Marginal(Y, X, nil, 1); // 结果 array( ("变量名":0, "贡献度":0.03, "贡献率(%)":7.87, "排名":4), ("变量名":1, "贡献度":0.02, "贡献率(%)":6.93, "排名":5), ("变量名":2, "贡献度":0.13, "贡献率(%)":37.94, "排名":1), ("变量名":3, "贡献度":0.06, "贡献率(%)":15.86, "排名":3), ("变量名":4, "贡献度":0.11, "贡献率(%)":31.4, "排名":2)); ``` ###### Cov2CorrMatrix 用途:多元统计分析相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl A := Covariance(rand(4, 3)); return Cov2CorrMatrix(A); ``` ###### CorrMatrixAdjust 用途:多元统计分析相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl A := Corr(rand(6, 6)); return CorrMatrixAdjust(A, 1, 5); ``` ###### corr_Kendall 用途:多元统计分析相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array(3, 8, 4, 7, 2); y := array(5, 10, 8, 10, 6); return corr_Kendall(x, y); ``` 结果:0.7379 ###### HISTC 用途:多元统计分析相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl a := rand(1000) * 5; b := array(0, 1, 2, 3, 4, 5); return HISTC(a, b); ``` ##### 回归 ###### 内容 - 回归检验 - 回归公用函数 - 最小二乘法回归 - 测试 ###### 回归检验 ####### 内容 - Regress_Ridge - Regress_AdjustedR2 - Regress_Logistic - Regression - Regress_DWTest - Regress_Stepwise - Regress_Constraint - Regress_White - Regress_MLS - Regress_CMLS - Regress_JBTest - Regress_pri - Regress_FTest - Regression_WLS - Regress_Binary - Regress_TTest - Regress_NLM - Regress_WLS - Regress_AicAndSbic - Regress_RSquare - Regress_QRlsq - boxcox - Regress_HettestSpearman - Regress_VIF - Regress_TTest_RWLS - Regress_TTest_White - Regress_TTest_NW - Regression_OLS_White - Regression_OLS_NW - NW_Adjustment_Simplification - Robustfit_M - Regress_GRStest ####### Regress_Ridge 用途:回归相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl y := array(49.00, 50.2, 50.5, 48.5, 47.5, 44.5, 28.00, 31.5, 34.5, 35.00, 38.00, 38.5, 15.00, 17.00, 20.5, 29.5); x := array( (1300.00, 7.5, 0.012, 9750.00, 15.6, 0.09), (1300.00, 9.00, 0.012, 11700.00, 15.6, 0.108), (1300.00, 11.00, 0.0115, 14300.00, 14.95, 0.1265), (1300.00, 13.5, 0.013, 17550.00, 16.9, 0.1755), (1300.00, 17.00, 0.0135, 22100.00, 17.55, 0.2295), (1300.00, 23.00, 0.012, 29900.00, 15.6, 0.276), (1200.00, 5.3, 0.04, 6360.00, 48.00, 0.212), (1200.00, 7.5, 0.038, 9000.00, 45.6, 0.285), (1200.00, 11.00, 0.032, 13200.00, 38.4, 0.352), (1200.00, 13.5, 0.026, 16200.00, 31.2, 0.351), (1200.00, 17.00, 0.034, 20400.00, 40.8, 0.578), (1200.00, 23.00, 0.041, 27600.00, 49.2, 0.943), (1100.00, 5.3, 0.084, 5830.00, 92.4, 0.4452), (1100.00, 7.5, 0.098, 8250.00, 107.8, 0.735), (1100.00, 11.00, 0.092, 12100.00, 101.2, 1.012), (1100.00, 17.00, 0.086, 18700.00, 94.6, 1.462)); k := array(); i := 0; for nI := 0 to 6e - 3 step 1e - 5 do k[i++] := nI; return ret := Regress_Ridge(y, x, k, false); // 输出岭迹 // return ret:= Regress_Ridge(y,x); // 输出x对y的岭回归,方差扩大因子法选取k ``` 参考Regression Regress_pri Regress_Stepwise Regress_VIF boxcox ####### Regress_AdjustedR2 用途:回归相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Regress_AdjustedR2(0.942066, 9, 1); // 结果:0.93379 ``` 参考Regress_CMLS Regression Regress_RSquare ####### Regress_Logistic 用途:回归相关函数。 参数: 返回:处理后的结果值。 范例 在一次关于某城镇居民上下班使用交通工具的社会调查中, 因变量y =1表示居民主要乘坐公共汽车上下班;y=0表示主要骑自行车上下班; 自变量x1表示被调查者的年龄; x2表示被调查者的月收入; x3表示被调查者的性别(x3=1为男性,x3=0为女性) 试建立y与自变量间的Logistic回归 TSL代码: ```tsl y := array(0.00, 0.00, 1.00, 1.00, 1.00, 0.00, 1.00, 1.00, 1.00, 0.00, 1.00, 1.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 0.00, 1.00, 1.00); x := `array((18, 21, 23, 23, 28, 31, 36, 42, 46, 48, 55, 56, 58, 18, 20, 25, 27, 28, 30, 32, 33, 33, 38, 41, 45, 48, 52, 56), (850, 1200, 850, 950, 1200, 850, 1500, 1000, 950, 1200, 1800, 2100, 1800, 850, 1000, 1200, 1300, 1500, 950, 1000, 1800, 1000, 1200, 1500, 1800, 1000, 1500, 1800), (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)); constant := true; alpha := 0.05; return Regress_Logistic (y, x, constant, alpha); ``` ["Coefficient"]: 则logistics回归函数为11+e-(-3.65536889+0.08218454x0+0.00151704x1+2.50195582x2) ["-2LogLikeHood"]: -2对数似然值是25.97065221,用来描述模型对因变量的预测能力。数值越大,预测越差。 ["Wald Test"]: 对每个变量的显著性检验 Wald-Stat:Wald统计量 Z-Stat:Wald统计量的平方根 P-Value:卡方检验p值,即接受零假设的临界值 Hypothesis:是否通过检验,0或1参考Regress_Binary Regress_CMLS Regression ####### Regression 用途:回归相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl Y := array(0.001, 0.564, 0.193, 0.809, 0.585, 0.48, 0.35, 0.896, 0.823, 0.747); X := array( (0.174, 0.859), (0.711, 0.514), (0.304, 0.015), (0.091, 0.364), (0.147, 0.166), (0.989, 0.446), (0.119, 0.005), (0.009, 0.378), (0.532, 0.571), (0.602, 0.607)); // u作为变参返回 return Regression(y, x, 0.05, 1); ``` 参考Regress_CMLS Regress_RSquare Regress_AdjustedR2 Regress_FTest Regress_TTest Regress_DWTest Regress_JBTest Regress_AicAndSbic ####### Regress_DWTest 用途:回归相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl U := array(0.245863, 0.056726, -0.145411, -0.287547, -0.410684, 0.012821, 0.073042, 0.201905, 0.136768); return Regress_DWTest(u); // 结果:0.7874 ``` 参考Regress_CMLS Regression ####### Regress_Stepwise 用途:回归相关函数。 参数: 返回:处理后的结果值。 范例 判断股票涨幅与各财务指标的相关系 ```tsl endt := inttodate(20100910); stklist := GetBKByDate('sh000300', endt); y := array(); x := array(); for i := 0 to length(stklist) - 1 do begin setsysparam(pn_stock(), Stklist[i]); setsysparam(pn_date(), endt); setsysparam(pn_rate(), 1); RDate := NewReportDateOfEndT2(EndT); y[i] := stockzf3(); x[i][0] := Last12MData(RDate, 9900000); // 每股收益 x[i][1] := Last12MData(RDate, 9900003); // 每股净资产 x[i][2] := Last12MData(RDate, 9900100); // 净资产收益 x[i][3] := Last12MData(RDate, 9900108); // 净利润率 x[i][4] := Last12MData(RDate, 9900203); // 资产负债率 x[i][5] := Last12MData(RDate, 9900004); // 净资产增长率 x[i][6] := ln(StockMarketValue(EndT)); // 流通市值 end; return Regress_Stepwise(y, x, 0.05, 0.1); ``` ret["x"]:array(4,2) ret["regress"]:和[Regression]的输出结果是一样的格局参考Regression Regress_pri Regress_Ridge Regress_VIF boxcox ####### Regress_Constraint 用途:回归相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl y := array(0.425306623295765, 1.36119535984939, 0.330434097687351, 0.693363166256445, 1.12135794381143, 0.992864415538359, 0.599585222220468, 1.03157839185033, 0.817720425216125, 0.613581071515125); x := array( (0.0437987553887069, 0.865901106735691, 0.637902588583529), (0.991149639012292, 0.402538175228983, 0.830022667301819), (0.794031135737896, 0.866388283902779, 0.336671882774681), (0.715198307996616, 0.416468291543424, 0.581486012088135), (0.0273062069900334, 0.24702803301625, 0.983555873855948), (0.529860897222534, 0.200076438020915, 0.59641290246509), (0.813422230072319, 0.370269910665229, 0.23934360453859), (0.888038919074461, 0.293901670724154, 0.613906089449301), (0.311180313583463, 0.752806227421388, 0.332180465571582), (0.31012851675041, 0.979520652908832, 0.346078625647351)); constant := 1; // 包含常数项 a := array(); b := array(); aeq := array((1, 1, 1)); // 加入等式约束,之和为 1.2 beq := array(1.2); alpha := 0.05; option := 0; // 残差平方和最小 lb := array(); ub := array(); return Regress_Constraint(y, x, constant, A, b, aeq, beq, alpha, option, lb, ub); ``` 参考Regress_CMLS Regression Regress_NLM Regress_Binary ####### Regress_White 用途:回归相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array(554.61, 562.47, 584.42, 587.43, 600.71, 622.9, 610.19, 624.33, 608.8, 584.74, 590.36, 601.76, 607.39, 617.27, 622.9, 621.8, 587.21, 575.07, 572.99, 569.38, 565.17, 560.42, 553.3); y := array(1894.61, 1889.64, 1965.41, 2001.5, 2018.66, 2090.77, 2037.74, 2079.12, 2031.68, 1954.21, 1964.37, 1975.01, 1976.82, 2015.69, 2018.46, 1987.76, 1897.22, 1863.8, 1852.42, 1851.52, 1850.48, 1832.91, 1820.81); z := array(64, 60, 60.1, 59.95, 61.5, 71.5, 70.5, 75.05, 77.5, 73.2, 75.3, 76.5, 78.2, 79.2, 78.8, 75.9, 73, 72.7, 72.7, 72.7, 73.85, 73.8, 73.6); w := array(4.255, 4.235, 4.438, 4.534, 4.568, 4.768, 4.669, 4.792, 4.648, 4.47, 4.482, 4.548, 4.52, 4.622, 4.639, 4.552, 4.343, 4.276, 4.255, 4.25, 4.238, 4.191, 4.151); xzw := `array(x, z, w); alpha := 0.05; return Regress_White(y, xzw, 0, alpha); ``` 参考Regress_CMLS Regression ####### Regress_MLS 用途:回归相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl Y := array(0.001, 0.564, 0.193, 0.809, 0.585, 0.48, 0.35, 0.896, 0.823, 0.747); X := array( (0.174, 0.859), (0.711, 0.514), (0.304, 0.015), (0.091, 0.364), (0.147, 0.166), (0.989, 0.446), (0.119, 0.005), (0.009, 0.378), (0.532, 0.571), (0.602, 0.607)); // u作为变参返回 return Regress_MLS(y, x, u); ``` 参考Regress_CMLS Regression Regress_QRlsq ####### Regress_CMLS 用途:回归相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl Y := array(0.001, 0.564, 0.193, 0.809, 0.585, 0.48, 0.35, 0.896, 0.823, 0.747); X := array( (0.174, 0.859), (0.711, 0.514), (0.304, 0.015), (0.091, 0.364), (0.147, 0.166), (0.989, 0.446), (0.119, 0.005), (0.009, 0.378), (0.532, 0.571), (0.602, 0.607)); // u作为变参返回 return Regress_CMLS(y, x, u, 1); ``` 参考Regress_MLS Regression Regress_QRlsq ####### Regress_JBTest 范例 ```tsl Y := array(0.564, 0.693, 0.809, 0.985, 1.18, 1.896, 2.3, 2.747, 3); return regress_jbtest(y, 0.05); ``` 参考Regress_CMLS Regression Regress_FTest Regress_TTest ####### Regress_pri 范例 | 解释变量1 | 解释变量2 | 解释变量3 | 解释变量4 | 解释变量5 | 解释变量6 | | --------- | --------- | --------- | --------- | --------- | --------- | | 1.431 | 0.424 | 28.439 | 182.3 | 110.831 | -293.756 | | 1.651 | 0.318 | 33.287 | 250.835 | 152.497 | -162.076 | | 1.027 | 0.003 | 22.314 | 209.87 | 127.592 | -153.508 | | 1.081 | 0.001 | 24.029 | 176.446 | 107.272 | -142.257 | | 1.117 | 0.164 | 25.75 | 145.37 | 88.379 | -294.591 | | 1.484 | 0.188 | 32.626 | 166.437 | 101.187 | -360.097 | | 1.325 | 0.442 | 25.108 | 173.032 | 105.196 | -327.462 | | 1.519 | 0.804 | 27.114 | 183.501 | 111.561 | -289.782 | | 1.329 | 0.621 | 20.759 | 113.244 | 68.848 | -658.805 | | 1.02 | 0.549 | 16.086 | 114.542 | 69.637 | -619.165 | | 1.209 | 0.633 | 19.215 | 150.918 | 91.752 | -194.209 | | 1.573 | 0.741 | 24.169 | 210.993 | 128.275 | -133.067 | | 0.943 | 0.6 | 14.548 | 204.009 | 124.029 | -155.778 | | 0.829 | 0.667 | 12.946 | 204.971 | 124.614 | -134.152 | | 0.927 | 0.812 | 14.594 | 398.204 | 242.091 | -122.255 | | 0.167 | 0.61 | 2.422 | 286.634 | 174.261 | -133.654 | | -0.293 | 0.49 | -4.122 | 89.503 | 54.414 | -236.781 | | -0.446 | 0.576 | -6.198 | -66.142 | -40.212 | -56.116 | | -0.053 | 0.571 | -0.716 | 44.514 | 27.063 | 611.885 | | -0.133 | 0.213 | -1.783 | -51.718 | -31.442 | -41.645 | | -0.039 | 0.367 | -0.536 | -102.793 | -62.494 | -58.664 | | 0.181 | 0.409 | 2.751 | -16.555 | -10.065 | -18.585 | | 0.025 | 0.16 | 0.442 | -66.158 | -40.221 | -47.71 | | -0.134 | 0.22 | -1.817 | -159.184 | -96.777 | -68.74 | | 0.045 | 0.155 | 0.85 | -20.311 | -12.348 | -21.893 | | 0.059 | 0.076 | 1.038 | -52.438 | -31.88 | -41.981 | | -0.188 | 0.006 | -2.626 | -50.366 | -30.62 | -34.58 | | 0.354 | 0.114 | 5.15 | 140.769 | 85.582 | -206.032 | | 0.324 | -0.242 | 6.233 | 291.18 | 177.026 | -148.341 | | 解释变量7 | 解释变量8 | 解释变量9 | 解释变量10 | 解释变量11 | 被解释变量 | | ---------- | --------- | --------- | ---------- | ---------- | ---------- | | -576.35 | 3038.437 | 1847.244 | -8949.161 | -17558.29 | 0.6 | | -282.297 | 3992.413 | 2427.222 | -6484.493 | -11294.439 | 0.667 | | -418.446 | 2704.007 | 1643.925 | -4163.383 | -11348.898 | 0.812 | | -1260.496 | 2281.625 | 1387.134 | -3257.498 | -28863.787 | 0.61 | | 605.611 | 2095.182 | 1273.784 | -6196.863 | 12739.329 | 0.49 | | 1117.915 | 2610.283 | 1586.944 | -9428.13 | 29269.472 | 0.576 | | 2568.14 | 2626.929 | 1597.064 | -8628.615 | 67670.492 | 0.571 | | -11379.056 | 2724.996 | 1656.685 | -7920.047 | -311001.92 | 0.213 | | 185.692 | 1834.922 | 1115.557 | -12147.208 | 3423.841 | 0.367 | | 233.605 | 1857.328 | 1129.179 | -11556.339 | 4360.099 | 0.409 | | 9312.993 | 2205.132 | 1340.629 | -4298.943 | 206149.543 | 0.16 | | -338.246 | 2781.867 | 1691.26 | -3712.606 | -9437.154 | 0.22 | | -298.984 | 2363.908 | 1437.159 | -3695.792 | -7093.291 | 0.155 | | -224.157 | 2133.811 | 1297.269 | -2874.695 | -4803.394 | 0.076 | | -144.225 | 2633.445 | 1601.026 | -3230.017 | -3810.463 | 0.006 | | -202.274 | 1925.562 | 1170.662 | -2588.069 | -3916.818 | 0.114 | | 228.624 | 1661.155 | 1009.914 | -3992.523 | 3854.983 | -0.242 | | -31.182 | 612.07 | 372.113 | -336.585 | -187.029 | -0.255 | | 42.943 | 1629.952 | 990.943 | 10256.156 | 719.794 | -0.248 | | -25.383 | 919.83 | 559.218 | -373.312 | -227.538 | -0.042 | | -40.435 | 903.872 | 549.517 | -523.253 | -360.658 | -0.181 | | -9.953 | 991.052 | 602.519 | -170.109 | -91.103 | -0.274 | | -30.643 | 1038.49 | 631.359 | -485.897 | -312.083 | -0.169 | | -52.728 | 856.257 | 520.569 | -583.427 | -447.526 | -0.11 | | -12.573 | 1144.935 | 696.073 | -234.303 | -134.559 | -0.079 | | -27.054 | 1138.099 | 691.917 | -465.796 | -300.176 | -0.025 | | -25.356 | 1008.787 | 613.301 | -339.702 | -249.089 | 0.095 | | -2097.228 | 1472.114 | 894.984 | -3061.924 | -31167.74 | 0.185 | | -197.858 | 1757.787 | 1068.662 | -2622.88 | -3498.408 | 0.358 | return s:= regression(y,x,0.05,1); tr:=s["Coefficient"]; return x:\*(`(tr[1:length(tr)-1]))+tr[0] | y; 预测效果图: R:=corr(x,1);//检验多重共线性 return regress_vif(X); array("VIF":(0.508,0.452,0.166,0.00,0.00,0.324,2.405, 2.428,0.401,0.292,7.472),"Cond":INF) s:=regress_pri(y,x,0.85,0.05);//主成分回归 return s; tr:= s["Coefficient"]; return x:\*(`(tr[1:length(tr)-1]))+tr[0] | y; //主成分回归预测值与实际值的比较 主成分回归结果: 参考Regression Regress_Ridge Regress_Stepwise Regress_VIF boxcox ####### Regress_FTest 范例 ```tsl U := array(0.245863, 0.056726, -0.145411, -0.287547, -0.410684, 0.012821, 0.073042, 0.201905, 0.136768); Y := array(0.564, 0.693, 0.809, 0.985, 1.18, 1.896, 2.3, 2.747, 3); return regress_FTest(y, u, 1, 0.05); ``` 参考Regress_CMLS Regression Regress_RSquare Regress_AdjustedR2 Regress_TTest Regress_JBTest ####### Regression_WLS 用途:回归相关函数。 参数: 返回:处理后的结果值。 算法 加权最小二乘法算法说明: 因变量y和自变量x长度都是n,假设满足最小二乘回归的经典假设时,y对x进行回归,形如: yi=β0+β1x1+β2x2+…+βkxk+μi,i=1,2,3,...,n 用矩阵形式表示为: Y=Xβ+μ 其中,ββ为系数矩阵,Y为因变量的n个观测值组成的n×1的列向量,X为一个n×(k+1)的矩阵。 一般的多元线性回归中,假设满足最小二乘回归的经典假设时,β系数的计算公式为: β=(X'X)-1 X'Y 但是,当误差项μi存在异方差时,违反了经典假定中的同方差性的假定条件,加权离差平方和为: Qw=i=1nwi(yi-β0-β1x1-β2x2-…-βkxk)^2 其中,wi为给定的第i个观测值的权数,加权最小二乘法就是寻找β0,β1,β2,…,βkβ0,β1,β2,…βk的估计值使Qw达到最小,记: Wdiag=w1wn 加权最小二乘估计WLS的矩阵可表达为 βw=(X'WdiagX)-1X'WdiagY范例 ```tsl Y := array(55.0, 65.0, 70.0, 80.0, 79.0, 84.0, 98.0, 95.0, 90.0, 75.0, 74.0, 110.0, 113.0, 125.0, 108.0, 115.0, 140.0, 120.0, 145.0, 130.0, 152.0, 144.0, 175.0, 180.0, 135.0, 140.0, 178.0, 191.0, 137.0, 189.0, 55.0, 70.0, 75.0, 65.0, 74.0, 80.0, 84.0, 79.0, 90.0, 98.0, 95.0, 108.0, 113.0, 110.0, 125.0, 115.0, 130.0, 135.0, 120.0, 140.0, 140.0, 152.0, 140.0, 137.0, 145.0, 175.0, 189.0, 180.0, 178.0, 191.0); x := array((80.0), (100.0), (85.0), (110.0), (120.0), (115.0), (130.0), (140.0), (125.0), (90.0), (105.0), (160.0), (150.0), (165.0), (145.0), (180.0), (225.0), (200.0), (240.0), (185.0), (220.0), (210.0), (245.0), (260.0), (190.0), (205.0), (265.0), (270.0), (230.0), (250.0), (80.0), (85.0), (90.0), (100.0), (105.0), (110.0), (115.0), (120.0), (125.0), (130.0), (140.0), (145.0), (150.0), (160.0), (165.0), (180.0), (185.0), (190.0), (200.0), (205.0), (210.0), (220.0), (225.0), (230.0), (240.0), (245.0), (250.0), (260.0), (265.0), (270.0)); wweight := 1 / (x[:, 0] ^ 1.5); return Regression_WLS(Y, X, 0.05, 1, 1, nil, nil, nil, wweight); ``` ####### Regress_Binary 用途:回归相关函数。 参数: 返回:处理后的结果值。 范例 在一次关于某城镇居民上下班使用交通工具的社会调查中,因变量y =1表示居民主要乘坐公共汽车上下班;y=0表示主要骑自行车上下班;自变量x1表示被调查者的年龄;x2表示被调查者的月收入;x3表示被调查者的性别(x3=1为男性,x3=0为女性) | 交通工具 | 年龄 | 月收入 | 性别 | 交通工具 | 年龄 | 月收入 | 性别 | | -------- | ---- | ------ | ---- | -------- | ---- | ------ | ---- | | 0 | 18 | 850 | 0 | 0 | 20 | 1000 | 1 | | 0 | 21 | 1200 | 0 | 0 | 25 | 1200 | 1 | | 1 | 23 | 850 | 0 | 0 | 27 | 1300 | 1 | | 1 | 23 | 950 | 0 | 0 | 28 | 1500 | 1 | | 1 | 28 | 1200 | 0 | 1 | 30 | 950 | 1 | | 0 | 31 | 850 | 0 | 0 | 32 | 1000 | 1 | | 1 | 36 | 1500 | 0 | 0 | 33 | 1800 | 1 | | 1 | 42 | 1000 | 0 | 0 | 33 | 1000 | 1 | | 1 | 46 | 950 | 0 | 0 | 38 | 1200 | 1 | | 0 | 48 | 1200 | 0 | 0 | 41 | 1500 | 1 | | 1 | 55 | 1800 | 0 | 1 | 45 | 1800 | 1 | | 1 | 56 | 2100 | 0 | 0 | 48 | 1000 | 1 | | 1 | 58 | 1800 | 0 | 1 | 52 | 1500 | 1 | | 0 | 18 | 850 | 1 | 1 | 56 | 1800 | 1 | 使用极大似然法估计模型中的各个参数: ```tsl y := array(0.00, 0.00, 1.00, 1.00, 1.00, 0.00, 1.00, 1.00, 1.00, 0.00, 1.00, 1.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 0.00, 1.00, 1.00); x := `array((18, 21, 23, 23, 28, 31, 36, 42, 46, 48, 55, 56, 58, 18, 20, 25, 27, 28, 30, 32, 33, 33, 38, 41, 45, 48, 52, 56), (850, 1200, 850, 950, 1200, 850, 1500, 1000, 950, 1200, 1800, 2100, 1800, 850, 1000, 1200, 1300, 1500, 950, 1000, 1800, 1000, 1200, 1500, 1800, 1000, 1500, 1800), (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)); constant := true; alpha := 0.05; ret := Regress_Binary(y, x, "logit", 3, constant, alpha); ``` 下面我们继续看看样本内的误判率: ```tsl a := (ones(length(x))|x): * `ret["Coefficient"]; a: := 1 / (1 + exp(-mcell)); a := a[:, 0]; a: := mcell >= 0.5; // 预测值 // return y|a; b := y - a; // 误判的为0或1 b: := abs(mcell); return sum(b) / length(b); ``` 得到的结果: 阈值设为0.5,误判率是0.17857参考Regress_CMLS Regression Regress_NLM ####### Regress_TTest 范例 ```tsl U := array(0.245863, 0.056726, -0.145411, -0.287547, -0.410684, -0.012821, 0.073042, 0.201905, 0.136768); X := `array(1, 2, 3, 4, 5, 6, 7, 8, 9); a := array(0.318137); return regress_TTest(x, a, u, 0, 0.05, 0); ``` 参考Regress_CMLS Regression Regress_JBTest Regress_FTest ####### Regress_NLM 用途:回归相关函数。 参数: 返回:处理后的结果值。 范例 | 年份 | 消费价格指数CPI
X1(以1978年为100) | 人均可支配收入
X2(元) | 上年人均消费支出
X3(元) | 人均消费支出
Y(元) | | ---- | -------------------------------------- | -------------------------- | ---------------------------- | ----------------------- | | 1993 | 273.100 | 2577.400 | 1671.730 | 2110.810 | | 1994 | 339.000 | 3496.200 | 2110.810 | 2851.340 | | 1995 | 396.900 | 4283.000 | 2851.340 | 3537.570 | | 1996 | 429.900 | 4838.900 | 3537.570 | 3919.470 | | 1997 | 441.900 | 5160.300 | 3919.470 | 4185.640 | | 1998 | 438.400 | 5425.100 | 4185.640 | 4331.600 | | 1999 | 432.200 | 5854.020 | 4331.600 | 4615.900 | | 2000 | 434.000 | 6280.000 | 4615.900 | 4998.000 | | 2001 | 437.000 | 6859.600 | 4998.000 | 5309.000 | | 2002 | 433.500 | 7702.800 | 5309.000 | 6029.880 | | 2003 | 438.700 | 8472.200 | 6029.880 | 6510.940 | | 2004 | 455.800 | 9421.600 | 6510.940 | 7182.100 | | 2005 | 464.000 | 10493.000 | 7182.100 | 7942.880 | | 2006 | 471.000 | 11759.500 | 7942.880 | 8696.550 | | 2007 | 493.600 | 13785.800 | 8696.550 | 9997.470 | 回归方程: Y1:=log(Y); X1:=log(X); return Regression(Y1,X1); 注:根据Hypothesis,0表示显著,1表示不显著,则T检验最后一个变量通不过! return Regress_VIF(x1); // array("VIF":(7.83,66.409,95.241),"Cond":269.959) 注:当VIF>10或Cond>30时,认为存在严重的多重共线性,第1,2个变量存在严重多重共线性,?第1,2个变量影响是相似的,则可以降维减少特征数量。 return Regress_Stepwise(Y1,X1,0.05,0.1)//逐步回归选取第0,1个解释变量 逐步回归结果: x:=x[:,0:1]; return Regress_NLM('Demo_Regress_NLM_CallBack',x,y,array(-0.2,0.2,0.8));或 return Regress_NLM('Demo_Regress_NLM_CallBack',x,y, array(-0.1,0.2,0.9)); 其中Demo_Regress_NLM_CallBack函数 Function Demo_Regress_NLM_CallBack(beta,x); Begin return beta[0]_(x[0]^beta[1])_(x[1]^beta[2]); End; 结果都是: 估计参数残差序列雅克比矩阵(解释变量)可决系数拟合值拟合值和实际值的比较参考Regress_CMLS Regression Regress_Binary ####### Regress_WLS 用途:回归相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 对序列s跟gdp进行加权最小二乘法估计,权重数列为1/gdp// s := array(2010.02, 1055.17, 2660.93, 919.23, 847.89, 1835.54, 898.45, 1322.37, 2409.39, 4808.67, 3467.46, 1310.3, 2119.58, 999.28, 4940.67, 2546.46, 1994.77, 1572.89, 4156.67, 877.93, 275.99, 990.05, 1976.68, 649.33, 887.49, 72.19, 1107.7, 538.62, 245.84, 245.22, 864.27); gdp := array(3212.71, 2051.16, 6122.53, 2017.54, 1734.31, 5458.22, 2246.12, 3882.16, 5408.76, 10631.75, 7796, 3569.1, 4682.01, 2450.48, 10552.06, 6168.73, 4975.63, 4340.94, 11769.73, 2455.36, 604.13, 1971.3, 4875.12, 1185.04, 2232.32, 161.42, 2035.96, 1161.43, 341.11, 329.28, 1598.28); w := 1 / (gdp); // u作为变参返回 return Regress_WLS(s, gdp, w, u); ``` 参考Regress_CMLS Regression ####### Regress_AicAndSbic 用途:回归相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl U := array(0.245863, 0.056726, -0.145411, -0.287547, -0.410684, 0.012821, 0.073042, 0.201905, 0.136768); return Regress_AicAndSbic(u, 1, 9); ``` 参考Regress_CMLS Regression ####### Regress_RSquare 用途:回归相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl U := array(0.245863, 0.056726, -0.145411, -0.287547, -0.410684, -0.012821, 0.073042, 0.201905, 0.136768); Y := array(0.564, 0.693, 0.809, 0.985, 1.18, 1.896, 2.3, 2.747, 3); return Regress_RSquare(y, u); // 结果:0.9421 ``` 参考Regress_CMLS Regression Regress_AdjustedR2 ####### Regress_QRlsq 用途:回归相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl Y := array(0.564, 0.693, 0.809, 0.985, 1.18, 1.896, 2.3, 2.747, 3); X := `array(1, 2, 3, 4, 5, 6, 7, 8, 9); // u作为变参返回 return Regress_QRlsq(y, x, u, 1); ``` 参考Regress_CMLS Regression ####### boxcox 用途:回归相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl data := rand(100); return boxcox(data); ``` 参考Regress_Stepwise Regress_pri Regress_Ridge Regress_VIF ####### Regress_HettestSpearman 用途:回归相关函数。 参数: 返回:处理后的结果值。 算法 做y关于x的普通最小二乘回归,求出εi的估计值,即ei的值 取ei的绝对值,即|ei|,将xi与|ei|按递增或递减的次序排列并分等级 根据公式 rs=1-6n(n2-1)i=1ndi2 算出等级相关系数,其中n为样本量;di对应于xi与|ei|的等级差数 做等级相关系数的显著性检验。在n>8的情况下,用t=n-2rs1-rs对相关系数进行t检验,若|t|≤tα/2(n-2),则认为异方差问题不存在;否则说明xi与|ei|之间存在系统关系,异方差问题存在。范例 ```tsl y := array(49.00, 50.2, 50.5, 48.5, 47.5, 44.5, 28.00, 31.5, 34.5, 35.00, 38.00, 38.5, 15.00, 17.00, 20.5, 29.5); x := array( (1300.00, 7.5, 0.012, 9750.00, 15.6, 0.09), (1300.00, 9.00, 0.012, 11700.00, 15.6, 0.108), (1300.00, 11.00, 0.0115, 14300.00, 14.95, 0.1265), (1300.00, 13.5, 0.013, 17550.00, 16.9, 0.1755), (1300.00, 17.00, 0.0135, 22100.00, 17.55, 0.2295), (1300.00, 23.00, 0.012, 29900.00, 15.6, 0.276), (1200.00, 5.3, 0.04, 6360.00, 48.00, 0.212), (1200.00, 7.5, 0.038, 9000.00, 45.6, 0.285), (1200.00, 11.00, 0.032, 13200.00, 38.4, 0.352), (1200.00, 13.5, 0.026, 16200.00, 31.2, 0.351), (1200.00, 17.00, 0.034, 20400.00, 40.8, 0.578), (1200.00, 23.00, 0.041, 27600.00, 49.2, 0.943), (1100.00, 5.3, 0.084, 5830.00, 92.4, 0.4452), (1100.00, 7.5, 0.098, 8250.00, 107.8, 0.735), (1100.00, 11.00, 0.092, 12100.00, 101.2, 1.012), (1100.00, 17.00, 0.086, 18700.00, 94.6, 1.462)); alpha := 0.05; constant := 0; return Regress_HettestSpearman(y, X, alpha, constant); ``` | Statistic | 1.227706414781371 | | ---------- | ------------------ | | P-Value | 0.2398000476741131 | | Hypothesis | 1 | ####### Regress_VIF 用途:回归相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return Regress_VIF(rand(100, 10)); ``` 参考Regress_Stepwise Regress_pri Regress_Ridge boxcox ####### Regress_TTest_RWLS 用途:回归相关函数。 参数: 返回:处理后的结果值。 算法OLS:普通最小二乘法回归,不需要给权重参数weight,不需要给约束参数restrictiveness WLS:加权最小二乘法回归,需要给权重参数weight,不需要给约束参数restrictiveness ROLS:线性约束的普通最小二乘法,不需要给权重参数weight,需要给约束参数restrictiveness RWLS:线性约束的加权最小二乘法,需要给权重参数weight,需要给约束参数restrictiveness范例 ```tsl x := rand(10, 3); a := rand(3); u := rand(10); k := 3 - 1; return Regress_TTest_RWLS(x, a, u, k, 0.05, 0); ``` ####### Regress_TTest_White 用途:回归相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl Y := array(0.001, 0.564, 0.193, 0.809, 0.585, 0.48, 0.35, 0.896, 0.823, 0.747); X := array( (0.174, 0.859), (0.711, 0.514), (0.304, 0.015), (0.091, 0.364), (0.147, 0.166), (0.989, 0.446), (0.119, 0.005), (0.009, 0.378), (0.532, 0.571), (0.602, 0.607)); coe := Regress_CMLS(y, x, u, true, x0, Y0); // 最小二乘回归 return Regress_TTest_White(x, coe, u, 0.05, true, V_OLS); ``` ####### Regress_TTest_NW 用途:回归相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl Y := array(0.001, 0.564, 0.193, 0.809, 0.585, 0.48, 0.35, 0.896, 0.823, 0.747); X := array( (0.174, 0.859), (0.711, 0.514), (0.304, 0.015), (0.091, 0.364), (0.147, 0.166), (0.989, 0.446), (0.119, 0.005), (0.009, 0.378), (0.532, 0.571), (0.602, 0.607)); coe := Regress_CMLS(y, x, u, true, x0, Y0); // 最小二乘回归 return Regress_TTest_NW(x, coe, u, 0.05, true, 2, V_OLS); ``` ####### Regression_OLS_White 用途:回归相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl y := array(0.001, 0.56, 0.193, 0.80, 0.58, 0.48, 0.35, 0.89, 0.82, 0.74); X := array( (0.174, 0.859), (0.711, 0.514), (0.304, 0.015), (0.091, 0.364), (0.147, 0.166), (0.989, 0.446), (0.119, 0.005), (0.009, 0.378), (0.532, 0.571), (0.602, 0.607)); return Regression_OLS_White(y, x); ``` ####### Regression_OLS_NW 范例 ```tsl y := array(0.001, 0.56, 0.193, 0.80, 0.58, 0.48, 0.35, 0.89, 0.82, 0.74); X := array( (0.174, 0.859), (0.711, 0.514), (0.304, 0.015), (0.091, 0.364), (0.147, 0.166), (0.989, 0.446), (0.119, 0.005), (0.009, 0.378), (0.532, 0.571), (0.602, 0.607)); return Regression_OLS_White(y, x); ``` ####### NW_Adjustment_Simplification 用途:回归相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl y := array(0.001, 0.56, 0.193, 0.80, 0.58, 0.48, 0.35, 0.89, 0.82, 0.74); return NW_Adjustment_Simplification(y); ``` ####### Robustfit_M 算法采用迭代加权最小二乘估计得到最优权重,使得偏差大的样本点权重小、偏差小的样本点权重大,从而降低异常点对于回归的影响。迭代过程如下: 选取LS估计的β0=XTX-1XTY为迭代初始值,求出初始残差e=Y-Xβ0 残差标准化得到u,u=e/tune*s*sqrt1-h tune为默认调节常数 s为尺度因子,s=medianabse0-mediane00.6745 h为杠杆向量,H=X(XTX)-1XT,h为H的对角线元素 使用加权函数wfunx求出权重向量W,其第i个元素为wi=w(ui0) 利用β=(XTWX)-1XTWY求得β(1)代替β(0),求得新残差e 返回步骤(2),依次迭代计算β(i),当相邻两步的回归系数的差的绝对值的最大值小于预先设定的标准误差时,迭代结束,即max?β(i)-β(i-1)<ε范例 ```tsl x := 1 - > 100; y := 3 * x + 100; y[:5] := 1000; return robustfit_M(y, x, 0.05, 1, 'andrews', 1.339); ``` ####### Regress_GRStest 用途:回归相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl // 截距项矩阵alpha Alpha := array((0.1288), (-0.0731), (0.0606), (-0.1398), (-0.2368)); // 回归残差矩阵 eps := array(( 0.2391, 2.8350, 0.1298, -0.1303, -0.4705), ( 0.3388, 0.8279, 0.8726, 1.0098, -0.1260), ( 1.2022, 0.7552, 0.1406, 0.9817, -0.5472), (-1.2390, -0.8745, -0.8203, -0.7948, -0.9886), (-0.1682, 0.3842, -0.1333, -0.0479, -0.5298), ( 0.4537, 0.2827, 0.4283, 0.5073, -0.0321), (-0.6363, 0.3396, -0.4626, -0.2871, -0.5787), ( 0.3037, -0.9632, 0.0126, -0.0788, 0.9519), ( 1.6618, -1.7807, 0.2230, 0.6233, 1.4380), (-0.2783, 0.4255, -0.3253, -0.2529, -1.0784)); // 因子暴露矩阵 mu := array(( 1.9006, 1.4588, -0.8829), ( 2.4169, 1.2151, -1.1462), ( 0.4599, 0.9646, -0.5166), ( 0.8420, 0.9289, 0.2966), ( 0.1703, -1.6531, 0.0567), ( 1.3330, 1.3360, -1.1067), (-0.7639, -0.5524, 0.1642), ( 0.4294, -0.2513, 0.2316), ( 2.7809, 1.2122, -0.5281), ( 0.5903, 1.6501, -0.5097)); return Regress_GRStest(alpha, eps, mu); // array("FGRS":1.97496665,"pGRS":0.36939759) ``` ###### 回归公用函数 ####### 内容 - LeastSquares_CurveFitting ####### LeastSquares_CurveFitting 用途:回归相关函数。 参数: 返回:处理后的结果值。 算法 若Y中存在空值或者nan,去除F和Y相应位置上的值,然后两者进行矩阵的左除范例 ```tsl f := array((0.01, 0.49, 0.71), (0.38, 0.54, 0.08), (0.07, 0.74, 0.2), (0.5, 0.97, 0.12), (0.53, 0.45, 0.73)); y := array(0.71, 0.3, 0.01, 0.05, 0.44); return LeastSquares_CurveFitting(f, y); // 结果: ``` ###### 最小二乘法回归 ####### 内容 - 单元回归 - 多项式回归 - 多元回归 ####### 单元回归 ######## 内容 - SingleRegression - 中间函数 ######## SingleRegression 算法 采用字符串的方式调用CallBack函数得到F,利用最小二乘法进行回归得到系数矩阵范例 ```tsl x := array(0.00, 1.00, 2.00); y := array(1.00, 2.00, 3); CallBack := 'SingleLinearRegression_CallBack'; return SingleRegression(x, y, CallBack); // 结果: ``` ######## 中间函数 ######### 内容 - SingleLinearRegression_CallBack ######### SingleLinearRegression_CallBack 算法 返回第一项为1,第二项为对应位置X的数组范例 ```tsl x := array(0.00, 1.00, 2.00); return SingleLinearRegression_CallBack(x); // 结果: ``` ####### 多项式回归 ######## 内容 - PolynomialRegression ######## PolynomialRegression 算法 (1)计算每个X对应的由0到M为指数的指数函数值F; (2)运用最小二乘方法进行回归得到系数矩阵;范例 ```tsl x := array(0.00, 1.00, 2.00); y := array(1.00, 2.00, 3); return PolynomialRegression(x, y, 1); // 结果: ``` ####### 多元回归 ######## 内容 - MultipleRegression - 中间函数 ######## MultipleRegression 算法 采用字符串的方式调用CallBack函数得到F,运用最小二乘法进行回归得到系数矩阵范例 ```tsl x := array((0.00, 0.00), (0.00, 1.00), (1.00, 0.00), (1.00, 1.00)); y := array(1.00, 2.00, 2.00, 3.00); CallBack := 'MultipleRegression_CallBack'; return MultipleRegression(x, y, CallBack); // 结果: ``` ######## 中间函数 ######### 内容 - LnRegression_CallBack - MultipleRegression_CallBack ######### LnRegression_CallBack 算法 返回第一项为1,若X中元素小于等于0,其余项对应位置为0,否则其余项对应位置为X中取自然对数后的值的数组范例 ```tsl x := array((0.00, 0.00), (0.00, 1.00), (1.00, 2.00), (2.00, 1.00)); return LnRegression_CallBack(x); // 结果: ``` ######### MultipleRegression_CallBack 算法 返回第一项为1,其余项为对应位置X的取值的数组范例 ```tsl x := array((0.00, 0.00), (0.00, 1.00), (1.00, 2.00), (2.00, 1.00)); return MultipleRegression_CallBack(x); // 结果: ``` ###### 测试 ####### 内容 - 最小二乘法回归 ####### 最小二乘法回归 ######## 内容 - 单元回归 - 多项式回归 - 多元回归 ######## 单元回归 ######### 内容 - SingleUnLineralRegression_Pgm - SingleLineralRegression_Pgm - 中间函数 ######### SingleUnLineralRegression_Pgm 算法 (1)采用字符串的方式调用函数得到F; (2)运用最小二乘方法进行回归得到系数矩阵;范例 ```tsl X := array(0.00, 0.5, 2.00, -2.00); Y := array(1.00, 1.625, 40, -39); return SingleUnLineralRegression_Pgm(X, Y); // 结果: ``` ######### SingleLineralRegression_Pgm 算法 (1)采用字符串的方式调用函数得到F; (2)运用最小二乘方法进行回归得到系数矩阵;范例 ```tsl X := array(1.00, -5.00, 6.00); Y := array(7.00, -5.00, 17.00); return SingleLineralRegression_Pgm(X, Y); // 结果: ``` ######### 中间函数 ########## 内容 - SingleUnLineralRegression_CallBack ########## SingleUnLineralRegression_CallBack 算法 计算X^3的数值范例 ```tsl X := array(1.00, -5.00, 6.00); return SingleUnLineralRegression_CallBack(X); // 结果: ``` ######## 多项式回归 ######### 内容 - PolynomialRegression_Pgm ######### PolynomialRegression_Pgm 算法 (1)计算每个X对应的由0到M为指数的指数函数值F; (2)运用最小二乘方法进行回归得到系数矩阵;范例 ```tsl X := array(0.5, 1, 1.5, 2, 2.5, 3); Y := array(1.71, 2.45, 3.81, 4.8, 7, 8.6); return PolynomialRegression_Pgm(X, y, 2); // 结果: ``` ######## 多元回归 ######### 内容 - MultipleRegression_Pgm - MultipleUnLinearRegression_Pgm - 中间函数 ######### MultipleRegression_Pgm 算法 (1)采用字符串的方式调用函数得到F; (2)运用最小二乘方法进行回归得到系数矩阵;范例 ```tsl X := array((5960, 44967, 1873), (9000, 27860, 928), (9500, 31439, 1126), (10000, 39592, 1265), (18000, 72827, 2214), (8500, 27317, 912), (8000, 29856, 899), (23000, 47752, 1803), (8100, 39117, 1204), (9000, 29349, 1725), (7300, 40116, 1080), (8000, 31679, 1529), (20000, 58510, 2455), (8000, 23454, 1151), (8000, 20897, 1173), (10500, 56248, 1960), (4000, 20859, 1344), (4500, 22610, 988), (3400, 35948, 1076), (1500, 5779, 962)); Y := array(68900, 48500, 55500, 62000, 116500, 45000, 38000, 83000, 59000, 47500, 40500, 40000, 97000, 45500, 40900, 80000, 56000, 37000, 50000, 22400); return MultipleRegression_Pgm(X, Y); // 结果: ``` ######### MultipleUnLinearRegression_Pgm 算法 (1)采用字符串的方式调用函数得到F; (2)运用最小二乘方法进行回归得到系数矩阵;范例 ```tsl X := array((15.2, 2.6), (13.9, 2.14), (15.8, 1.52), (12.8, 3.12), (6.9, 2.48), (14.6, 3.08), (15.4, 2.92), (17.3, 2.76), (13.7, 2.36), (12.7, 2.36), (15.3, 2.56), (15.2, 2.8), (12.00, 2.72), (15.3, 1.92), (13.7, 1.92), (13.3, 1.6)); Y := array(25, 20, 15, 34, 20, 33, 28, 30, 23, 24, 25, 26, 26, 20, 20, 13); CallBack := 'MultiUnLineralRegression_CallBack'; return MultipleUnLinearRegression_Pgm(X, Y, CallBack); // 结果: ``` ######### 中间函数 ########## 内容 - MultiUnLineralRegression_CallBack ########## MultiUnLineralRegression_CallBack 算法 返回第一项为常数,第二项为X1,第二项为X2,第三项为X1\*X2的数组范例 ```tsl X := array((15.2, 2.6), (13.9, 2.14), (15.8, 1.52), (12.8, 3.12), (6.9, 2.48), (14.6, 3.08), (15.4, 2.92), (17.3, 2.76), (13.7, 2.36), (12.7, 2.36), (15.3, 2.56), (15.2, 2.8), (12.00, 2.72), (15.3, 1.92), (13.7, 1.92), (13.3, 1.6)); return MultiUnLineralRegression_CallBack(X); // 结果: ``` ##### 灰色系统 ###### 内容 - GM_Initial - GM_Corr - GM_AGO - GM_Icorr - GM_Scorr ###### GM_Initial 用途:灰色系统相关函数。 参数: 返回:处理后的结果值。 范例 初值化:代码如下 ```tsl x := array((1, 2, 3), (2, 3, 4)); un := array(); return GM_Initial(x, "ini", un); ``` 均值化: TSL代码如下 ```tsl x := array((1, 2, 3), (2, 3, 4)); un := array(); return GM_Initial(x, "mean", un); ``` 按行区间值化 TSL代码如下 ```tsl x := array((1, 2, 3), (2, 3, 4)); un := array(); return GM_Initial(x, "rrange", un); ``` 归一化 TSL代码如下 ```tsl x := array((1, 2, 3), (2, 3, 4)); un := array(1, 2); return GM_Initial(x, "norm", un); ``` 参考GM_Corr GM_AGO GM_Icorr GM_Scorr GM_Estimate ###### GM_Corr 用途:灰色系统相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array((1, 2, 3), (2, 3, 4)); return GM_Corr(x, 0); ``` 参考GM_Initial GM_AGO GM_Icorr GM_Scorr GM_Estimate ###### GM_AGO 用途:灰色系统相关函数。 参数: 返回:处理后的结果值。 范例 TSL代码如下 ```tsl x := array(1, 2, 3, 4); return GM_AGO(x, "add", 2); ``` 2. TSL代码如下 ```tsl x := array(1, 2, 3, 4); return GM_AGO(x, "sub", 2); ``` 参考GM_Initial GM_Corr GM_Icorr GM_Scorr GM_Estimate ###### GM_Icorr 用途:灰色系统相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl x := array((1, 2, 3), (2, 3, 4)); return GM_Icorr(x, 1); ``` 参考GM_Initial GM_Corr GM_AGO GM_Scorr GM_Estimate ###### GM_Scorr 用途:灰色系统相关函数。 参数: 返回:处理后的结果值。 范例 灰色绝对关联度: TSL代码如下 ```tsl x := array((1, 2, 3), (2, 3, 4)); return GM_Scorr(x, "abs"); ``` 灰色相对关联度: TSL代码如下 ```tsl x := array((1, 2, 3), (2, 3, 4)); return GM_Scorr(x, "ret"); ``` 灰色综合关联度: TSL代码如下 ```tsl x := array((1, 2, 3), (2, 3, 4)); return GM_Scorr(x, "com"); ``` 参考GM_Initial GM_Corr GM_AGO GM_Icorr GM_Estimate ##### 主成分分析 ###### 内容 - PrincaipalComponentAnalysis - 中间函数 ###### PrincaipalComponentAnalysis 用途:主成分分析相关函数。 参数: 返回:处理后的结果值。 算法 将Zt标准化得到zT_s,然后进行转置获得新的数组Z,根据数组Z获得相关系数矩阵R,根据数组R获得特征值和特征向量,获得载荷矩阵Cm,对其进行旋转得到RM,根据R和RM获得因子得分系数矩阵Cs,根据Cs和zT_s获得样本公共因子得分矩阵Farr,根据Farr和主因子对应的特征根获得主因子及其得分范例 ```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)); return PrincaipalComponentAnalysis(zt); // 结果: ``` ###### 中间函数 ####### 内容 - Mbbub - ComponentScoreMatrix - FactorScoreMatrix - Eastrq - ComponentMatrix - RotatedComponentMatrix - Eigen_Jacobi - GetEigenValue - FScoreResult ####### Mbbub 算法 获取n=数组p的长度,k=0,m=n-1; 从nI=0到m-1进行循环,将nI的值赋值给数组z对应下标为nI的值,当kepsi,r = r / c,否则结束;返回xN; ###### 无约束优化算法 ####### 内容 - Hooke_Jeeves_Method ####### Hooke_Jeeves_Method 算法 (1)N=数组X0的长度,X0的值赋值给X,X的值赋值给Y,将D0赋值给Dt,采用字符串的方式调用TZZHCallBack函数得到函数初始值F0,并赋值给Fy; (2)把Y的值赋值给X,Fy赋值给Fs; # (3)从nI=0到N-1进行循环,将X和Dt对应位置数据相加得到新的数组X,调用TZZHCallBack函数得到函数值Fx;若Fx0,则v=v1/v2;否则,v=0; 若v1<0,且v2<0,则v=-v; 返回v。范例 ```tsl // 返回-1与-2的比率。 return RatioValue(-1, -2); // 结果:-0.5 ``` ###### OutPutValueByUnit 用途:增长率与比率相关函数。 参数: 返回:处理后的结果值。 算法 若DataType\_="Real",则v=Data/DataUnit; 若DataType\_<>"Real",则v=Data; 返回v。范例 ```tsl // 返回1234.5以10为单位转换后的结果 return OutPutValueByUnit(1234.5, 'Real', 10); // 结果:123.45 ``` ###### OutPutLnGrowRatio 用途:增长率与比率相关函数。 参数: 返回:处理后的结果值。 算法若v1>0且v2>0,返回(v1的自然对数 - v2的自然对数)\*100; 否则,返回0。范例 ```tsl // 取3与4的对数增长率 return OutPutLnGrowRatio(3, 4); // 结果:-28.77 ``` ###### OutPutGrowValue 用途:增长率与比率相关函数。 参数: 返回:处理后的结果值。 算法若v1与v2都为实数,返回v1-v2; 否则,返回0。范例 ```tsl // 返回13与14的差值 return OutPutGrowValue(13, 14); // 结果:-1 ``` ###### OutPutGrowValue2 用途:增长率与比率相关函数。 参数: 返回:处理后的结果值。 算法若v1与v2都为不等于0的实数,返回v1-v2; 否则,返回0。范例 ```tsl // 返回13与14差值 return OutPutGrowValue2(13, 14); // 结果:-1 ``` ###### OutPutGrowRatio 用途:增长率与比率相关函数。 参数: 返回:处理后的结果值。 算法若v1与v2都为不等于0的实数,返回(v1-v2)/v2的绝对值\*100; 否则,返回0。范例 ```tsl // 返回13到14的增长率(%) return OutPutGrowRatio(14, 13); // 结果:7.69 ``` ###### OutPutGrowRatio2 用途:增长率与比率相关函数。 参数: 返回:处理后的结果值。 算法 若v1与v2都为不等于0的实数,返回(v1-v2)/v2的绝对值\*100; 若v1与v2其中有一个为0,返回"-"; 否则,返回0。范例 ```tsl // 返回13到14的增长率(%) return OutPutGrowRatio2(14, 13); // 结果:7.69 ``` ###### MultyValue 用途:增长率与比率相关函数。 参数: 返回:处理后的结果值。 算法 若v1与v2都是实数,则v=v1\*v2;否则,v=0; 若v1<0,且v2<0,则v=-v; 返回v。范例 ```tsl // 返回取-3与-5的乘积。 return MultyValue(-3, -5); // 结果:-15 ``` ###### OutPutGrowValue3 用途:增长率与比率相关函数。 参数: 返回:处理后的结果值。 算法若v1与v2都为大于等于0的实数,返回v1-v2; 否则,返回空字符串。范例 ```tsl // 返回13与14的差值 return OutPutGrowValue3(13, 14); // 结果:-1 ``` ###### OutPutGrowRatio3 用途:增长率与比率相关函数。 参数: 返回:处理后的结果值。 算法若v1与v2都为实数,且v2>0,返回(v1-v2)/v2的绝对值\*100; 否则,返回空字符串。范例 ```tsl // 返回14到13的增长率(%) return OutPutGrowRatio3(14, 13); // 结果:7.69 ``` ###### RatioValue_Math 用途:增长率与比率相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl return RatioValue_Math(0, 0); // 结果:0 ``` ##### 概率分布 ###### 内容 - 线性变换 ###### 线性变换 ####### 内容 - Norm_LinearTransform ####### Norm_LinearTransform 用途:概率分布相关函数。 参数: 返回:处理后的结果值。 算法假设随机变量X服从正态分布,其线性组合Y依然服从正态分布 (1)X、Y为单个变量,X~N(μ,σ2),μ与σ2为实数,Y=a+bX,则 EY=a+bμ DY=b2σ2 (2)X、Y为多元变量,假设 X=X1,X2,?,XnT~Nμ,Σ , μ=μ1,μ2,?,μnT, Σ=var(X1)cov(X1,Xn)cov(X1,Xn)var(Xn) Y=Y1Ym=a1+b11*X1+b12*X2+?+b1n*Xnam+bm1*X1+bm2*X2+?+bmn*Xn=A+B\*X 其中,A=a1am, B=b11b1nbm1bmn,则 EY=A+Bμ DY=BΣBT范例 范例01: ```tsl A := 1.5; B := 2; Mu := 1; Sigma := 10; return Norm_LinearTransform(Mu, Sigma, A, B); ``` 范例2: ```tsl A := array(1.5, 1.5, 1.5); B := array((1, 1, 1), (2, 2, 2), (3, 3, 3)); Mu := array(1, 2, 3); Mu := `Mu; sigma := array((0.5, 3, 1), (0.2, 1, 0.4), (3, 0.1, 2)); return Norm_LinearTransform(Mu, Sigma, A, B); ``` array( "变换后均值":((7.5),(13.5),(19.5)), "变换后方差": ((11.2,22.4,33.6),(22.4,44.8,67.2),(33.6,67.2,100.8))); ##### 信号处理 ###### 内容 - filter_hp ###### filter_hp 用途:信号处理相关函数。 参数: 返回:处理后的结果值。 范例 ```tsl y := MarketTradeDayQk(20220101T, 20220131T); return filter_hp(y, 10); ```