playbook/docs/tsl/syntax_book/function/tsl/math.md

251 KiB
Raw Blame History

数学函数

内容
  • 数值计算
  • 常用数学函数
  • 位运算函数
  • 三角函数
  • 角度量转换
  • 双曲线函数
  • 指数对数函数
  • 精度设置及取整运算
  • 比较判断函数
  • 一般统计量
  • 次序统计量
  • 统计函数
  • 统计分布
  • 统计推断
  • 多元统计分析
  • 回归
  • 灰色系统
  • 主成分分析
  • 时间序列分析
  • 优化
  • 小波分析
  • 财务函数
  • 增长率与比率
  • 概率分布
  • 信号处理
数值计算
内容
  • 数值微积分
  • 线性方程组的求解
  • 插值
  • 矩阵运算及分解
  • 数组扩展
  • 其他
数值微积分

####### 内容

  • 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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

a := 1;
b := 3;
callback := "fun1";
return integral(callback, a, b, Romberg);

其中fun1函数

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

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

范例

sf_sinx(2, v);
return v;
// 结果:
1.60541

参考sf_CosX sf_eX

####### sf_CosX

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

sf_CosX(2, v);
return v;
// 结果:
0.42298

参考sf_SinX sf_eX

####### sf_eX

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

sf_eX(2, v);
return v;
// 结果:-0.0489

参考sf_SinX sf_CosX

####### sf_EllipseX_1

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

k := 6;
f := 8;
sf_EllipseX_1(k, f, v);
return v;
// 结果8.05747

参考sf_EllipseX_2

####### sf_EllipseX_2

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

k := 6;
f := 8;
sf_EllipseX_2(k, f, v);
return v;
// 结果7.94314

参考sf_EllipseX_1

####### Conv

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

return hessian("Hessian.demo", array(3, 4));
线性方程组的求解

####### 内容

  • se_Gauss
  • se_Gauss_Jordan
  • se_Ldl
  • se_Cholesky
  • se_Gauss_Seidel

####### se_Gauss

范例

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

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

范例

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)是数据集上相异的两点,且x0<x1。有fx0=x0fx1=x1代入插值函数解得

fx=y0+y1-y0x1-x0x-x0

3、”spline” 三次样条插值:

设S(x)满足样本点要求,则只需在每个子区间[xjxj+1]上确定1个三次多项式假设为

Sj(x) = ajx3 + bjx2 + cjx + d

假设有n个点需要n-1条线描述每条线四个未知数则未知数个数为4(n-1)。显然中间(n-2)个点具有4个约束条件

S(xj) = f(xj)

S'(xj+0) = f'(xj-0)

S''(xj+0) = f''(xj-0)

S'''(xj+0) = f'''(xj-0)

两端断点存在约束 S(xi) = f(xi)则约束方程有4(n-2) + 2 = 4(n-1)-2所以总的未知数个数比方程个数多两个。所以需要额外的两个约束于是就有了三种边界条件的插值算法。

第 1 类边界条件:给定端点处的一阶导数值

S'(x1) = y1' S'(xn) = yn'

第 2 类边界条件:给定端点处的一阶导数值

S''(x1) = y1'' S''(xn) = yn''

第 3 类边界条件是周期性条件如果y=f(x)是以[xj, xj+1]为周期的函数于是S(x)在端点处满足条件

S'(x1+0) = S'(xn- 0) S''(x1+0) = S''(xn- 0)

4、” pchip” 分段三次hermite插值

(x0,y0), (x1,y1)是数据集上相异的两点,且x0<x1。

y=fx在xi上的函数值和一阶导数值分别为yi=fxi和mi=f'xi (i=0,1),求三次多项式H3x,使其满足H3xi=yiH3'xi=mi i=0,1

构造三次埃尔米特插值多项式

H3x=y0a0x+y1a1x+m0β0x+m1β1x

函数 函数值 x0 函数值 x1 导数值 x0 导数值 x1
a0x 1 0 0 0
a1x 0 1 0 0
β0x 0 0 1 0
β1x 0 0 0 1

由 a0x1=a0'x1=0

可写成 a0x=a+b(x-x0)2

由a0x0=1 得 a=1(x0-x1)2

再由a0'(x0) = 0得b = - 2(x0-x1)3所以

a0x = 1+2x-x0x1-x02

同理将x0<->x1

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) 为以(x0y0)(x1y1) 插值点得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范例

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"

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" 分段线性插值

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" 三次样条插值

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插值

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中的所属位置。ij从0开始。范例

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

范例

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)范例

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)是数据集上相异的两点,且x0<x1。有fx0=x0fx1=x1代入插值函数解得

fx=y0+y1-y0x1-x0x-x0范例

uses interp_unit; // 置顶
x := array(5, 1, 19, 8);
y := array(2, 3, 1, 7);
xi := array(4, 12);
return linear(x, y, xi);
// 返回array(2.6667,1.7778)

######## pchip

算法

(x0,y0), (x1,y1)是数据集上相异的两点,且x0<x1。y=fx在xi上的函数值和一阶导数值分别为yi=fxi和mi=f'xi (i=0,1),求三次多项式H3x,使其满足H3xi=yiH3'xi=mi i=0,1

构造三次埃尔米特插值多项式

H3x=y0a0x+y1a1x+m0β0x+m1β1x

函数 函数值 x0 函数值 x1 导数值 x0 导数值 x1
a0x 1 0 0 0
a1x 0 1 0 0
β0x 0 0 1 0
β1x 0 0 0 1

由 a0x1=a0'x1=0

可写成 a0x=a+b(x-x0)2

由a0x0=1 得 a=1(x0-x1)2

再由a0'(x0) = 0得b = - 2(x0-x1)3所以

a0x = 1+2x-x0x1-x02

同理将x0<->x1

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) 为以(x0y0)(x1y1) 插值点得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范例

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

范例

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

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
  • mtva 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

用途:数值计算相关函数。 参数:

返回:整数。

范例

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:进行字符串提取或替换处理。 参数:

返回:处理后的结果值。

范例

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

用途:数值计算相关函数。 参数:

返回:整数。

范例

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

H := corr(rand(100, 4));
mt_decompose_qr(H, Q, R); // QR分解
return array(Q, R);

范例02

H := corr(rand(100, 4));
return mt_decompose_qr(H); // 返回上三角矩阵

范例03

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

####### mtva Cholesky

范例

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

A := array((1, 4),
(4, 6));
mt_va_Gauss_Jordan(A, v);
return v;
// 结果:-10

参考mtva 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。范例

// 计算矩阵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));

USD矩阵分别为

####### mt_decompose_ldl

参考Mt_decompose_lu chol mt_decompose_qr mt_decompose_eig mt_decompose_chol

####### mt_decompose_eig

用途:数值计算相关函数。 参数:

返回:整数。

范例

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

// 每列之和为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'));

其显示如下:

范例一:将表列标改为数字

a := array('C':('A':1, 'B':'too'), 'D':('A':2, 'B':'two'));
return reindex2(a, 0);

范例二:将行列标作为首列首行

a := array('C':('A':1, 'B':'too'), 'D':('A':2, 'B':'two'));
return reindex2(a, 5);

####### Det

范例

A := array((1, 2), (3, 4));
return det(A); // -2

####### isSymmetry

用途:判断条件是否成立。 参数:

返回:布尔值。

范例

A := array((2, 1), (1, 3));
return isSymmetry(A, 0.1); // 1

####### Orth

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

// 计算矩阵A的标准正交基
A := array((0, 1), (1, 1), (1, 0));
return Orth(A);

####### roots

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

// 求根3x^3+x^2+x^1+0^0=0
return roots(array(0, 1, 1, 3));

####### Eigen

范例

A := array((1, 2), (3, 4));
eigen(A, eigen);
return eigen;
// array(-0.37,5.37)

####### pinv

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

x := array((9, 1), (-1, 0), (0, 2), (1, 1));
return pinv(x);

####### norm2

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

A := array((2, 1), (1, 3));
return norm2(A, 'inf'); // 4

####### Cond

范例

x := array((9, 1), (-1, 0), (0, 2), (1, 1));
return cond(x); // 4.22

####### diag

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

A := array((2, 1), (1, 3));
return diag(A); // array(2,3);

####### isDefinite

用途:判断条件是否成立。 参数:

返回:布尔值。

范例

x := array((3, 1), (1, 4));
return isDefinite(x); // 1
数组扩展

####### 内容

  • Any
  • ALL

####### Any

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

范例一:

// 判断非数组的真假
return any('a', 0);

范例二:

// 判断特殊数据类型的真假
return any(array(1, '', ' ', nan, nil, inf, -inf, array()), 1);

结果

范例三:

// 判断二维数组的行
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)判断为真则该行值判断结果为1B列中。

范例四:

// 判断多维数组的行
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

范例五:

// 判断多维数组的列
t := array('e':('A':1, 'B':1), 'f':('A':2, 'B':array(1, 0)));
return any(t, 2);

结果

####### ALL

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

范例一:

// 判断数组中所有元素是否都为真
return all(array(1, 2, -1, 1, 9));

范例二:

// 判断特殊数据类型的真假
return all(array(1, '', ' ', nan, nil, inf, -inf, array()), 1);

结果

范例三:

// 判断二维数组的行
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判断为假。

范例四:

// 判断多维数组的行
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

范例五:

// 判断多维数组的列
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的阶乘

return perms(10);

返回结果3628800

范例02排列组合

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'))中任意两个数据的排列组合

v := array(('A', 'B'), ('C', 'D'));
return perms(v, 2);

范例04对排列组合的每列求和

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

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

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<j,且d2≤j-i≤d1)

寻找入点与出点

若最大涨幅则Up(i,j)=Max(Fi,j)

若最大跌幅则Down(i,j)=Min(Fi,j)

即入点i 出点j

值差

Dv=xj-xi

比例

Rv=xjAbs(xi)-1若xi=0,则xi=1.0e-5

注:

i、j分别为序列Data的下标值从0开始。

xi、xj分别为序列Data中下标为i、j的元素值 。

d1最大间隔默认为最大长度即length(Data)-1。

d2最小间隔本函数不支持该约束条件的设置默认为1。

1.0e-5即0.00001范例

范例01

// 计算一组序列的最大涨幅
data := array(3, 1, 7, 5, 6, 3);
return MaxDrawDown(data, 1);

1 2 6 6

结果说明入点为data[1]出点为data[2]两者差为6最大涨幅比例差为6

范例02

// ------计算100日股票的最大跌幅
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), 20181031T);
setsysparam(pn_rate(), 1);
setsysparam(pn_rateday(), 20181031T);
setsysparam(pn_cycle(), cy_day());
data := nday3(100, close());
t := MaxDrawDown(data);
return t;

结果t

12
43
6.96759
0.25765

若需计算最大跌幅率则只需t[3]*100即可。

####### MinRecoveryTime

用途:日期时间处理函数。 参数:

返回:日期或时间值。

范例

科大讯飞(SZ002230)在20201220最近十个交易日序列中第一天购买第二天卖出后的最小恢复时间

setsysparam(pn_stock(), "SZ002230");
setsysparam(PN_Date(), 20201220t);
R := nday(10, "close", close())[:, "close"];
return MinRecoveryTime(R, 0, 1);

返回结果6

####### Betainc

范例

a := 3;
b := 4;
tail := 'upper';
x := rand(10);
return array(betainc(x, a, b), betainc(x, a, b, tail));

####### PercentileOfScore

范例

去除随机数组的极值

data := array(1, 2, 2, 4);
ret := array();
n := 0;
for i := 0 to 5 do
begin
    ret[n, 'score'] := i;
    for j, kind in array('rank', 'strict', 'weak', 'mean')do
    begin
        ret[n, kind] := percentileofscore(data, i, j);
    end;
    ret[n, 'percenrank'] := Percentrank(data, i);
    n++;
end;
return ret;

####### GenerateCombinations

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

list := array('a', 'b', 'c');
GenerateCombinations(list, ret);
return ret;

####### Percentage

用途:数值计算相关函数。 参数:

返回:处理后的结果值。

范例

y := rand(100, 2);
per := 20;
style := 0;
return percentage(y, per, style);
常用数学函数
内容
  • Pi
  • Odd
  • Abs
  • Sqr
  • Sqrt
  • DivMod
  • Frexp
  • Ldexp
  • Poly
  • 简单函数对数组支持
Pi

用途:常用数学函数相关函数。 参数:无。 返回:处理后的结果值。

范例

// 求面积(π*R^2)
R := 2;
return Pi() * R ^ 2;
// 结果12.5663706143592
Odd

用途:常用数学函数相关函数。 参数:

返回:处理后的结果值。

范例

// 判断1是否是奇数
return Odd(1);
// 结果1

参考简单函数对数组支持

Abs

用途:常用数学函数相关函数。 参数:

返回:处理后的结果值。

范例

// 求-2的绝对值
return Abs(-2);
// 结果2

参考简单函数对数组支持

Sqr

用途:常用数学函数相关函数。 参数:

返回:处理后的结果值。

范例

// 求x^2
X := 2;
return Sqr(x);
// 结果4

参考简单函数对数组支持 Sqrt Power

Sqrt

用途:常用数学函数相关函数。 参数:

返回:处理后的结果值。

范例

求实数的平方根

X := 4;
return Sqrt(x);
// 结果2

计算一维数组中所有元素的平方根

X := array(4, 9, 16, 25);
return Sqrt(x);
// 结果array(2,3,4,5)

参考简单函数对数组支持 Sqrt Power

DivMod

用途:常用数学函数相关函数。 参数:

返回:处理后的结果值。

范例

DivMod(5, 3, a, b);
return array(a, b);

参考简单函数对数组支持

Frexp

用途:常用数学函数相关函数。 参数:

返回:处理后的结果值。

范例

// 将X分离出位数和指数,即X= Base *2^ Exponent
X := pi();
Frexp(X, Base, Exponent);
return array(Base, Exponent);

参考简单函数对数组支持 Ldexp

差异说明对于奇异值的处理如INF,NAN等在不同系统中表现会存在差异。

所以,在使用前尽量先排除掉奇异值。

如:

Frexp(INF,a,b);

return array(a,b);

windows系统下运行返回array(INF,-1)

而Linux系统下运行返回array(INF,0)

Ldexp

用途:常用数学函数相关函数。 参数:

返回:处理后的结果值。

范例

return Ldexp(3, 2);
// 结果12  //返回3*2^2

参考简单函数对数组支持 Ldexp

Poly

用途:常用数学函数相关函数。 参数:

返回:处理后的结果值。

范例

X := 2;
a := array(2, 3, 1, 5);
return Poly(x, a);
// 结果52
// 返回2*(2^0)+3*(2^1)+1*(2^2)+ 5*(2^3)

参考简单函数对数组支持

简单函数对数组支持

以前平台多数基本函数比如sin都不支持数组的输入,升级之后的函数不仅支持了数组,还加入了对于异常值的处理。func(In1,In2...InN[,Out1,...OutN])In参数除支持数组外还增加了两个可选参数 func(In1,In2...InN[,Out1,...OutN][,Opt1,Opt2])

Opt1异常值处理为0表示不做处理默认情况;为1表示计算跳过nil值;为2表示跳过所有的异常值

Opt2: 报错填充值,当某单元报错的时候,使用该参数填充。

单参数输入以SIN函数为例多个参数输入以LogN为例

正常的二维数组的处理

a := rand(10, array("a", "b", "c"));
return sin(a);

当出现nil值的时候计算跳过:

a := rand(10, 10);
a[0, 1] := nil;
return sin(a, 1); // 得到的结果nil位置的值还是nil

当出现nil值,字符串的时候,计算跳过:

a := rand(10, 10);
a[0, 1] := nil;
a[0, 2] := "a";
return sin(a, 2); // 得到的结果nil位置的值还是nil”a”位置还是”a”

当出现nil值,字符串的时候,结果填入替换值:

a := rand(10, 10);
a[0, 1] := nil;
a[0, 2] := "a";
return sin(a, 0, "替换值");

只当出现nil值的时候跳过,出现字符串的时候替换为设置值:

a := rand(10, 10);
a[0, 1] := nil;
a[0, 2] := "a";
return sin(a, 1, "替换值");

多个参数不包括输出变参输入以LogN为例

LogN(Base,X:Real Or Array of Real;[varOpt1: Integer;[Opt2:Any]]:Real Or Array of Real;

这类函数需要注意XY在维度不一致的时候比如X是一个二维数组,Y是一个一维数组:

X := 2 * ones(10, 10);
Base := 2 -  > 11;
return LogN(Base, X);

这里最直观的的理解是把二维数组看成一维数据(其每一个元素是一维数组),所以,这个问题也就简化为两个等大小的一维数组在做计算了。超过两个以上主要参数的操作是类似的

支持这项操作的函数包括:

单参数输入:

常用数学函数OddAbsSqrSqrt

三角函数SinCosTanCotCoTanSecCscSecantCosecantArcSinArcCosArcTanArcCotArcSecArcCscSinCos

角度转换函数,双曲线函数

指数对数函数LnLnXP1Log10Log2Exp

精度设置及取整函数IntCeilCeil32Ceil64FloorFloor32Floor64TruncTrunc32Trunc64FracRoundRound32Round64SimpleRoundSimpleRound32SimpleRound64

比较判断函数IsNanIsInfiniteSign

多个参数输入:

DivModFrexpLdexpPolyArcTan2HypotLogNIntPowerPowerRoundToSimpleRoundToIsZeroMinMaxCompareValueSameValueRandomRangeInRangeEnsureRangeRandG财务函数等

位运算函数
内容
  • _And
  • _Or
  • _Not
  • _Xor
  • _Shl
  • _Shr
  • _Rol
  • _Ror
_And

范例

return _And(6, 3); // 返回十进制(6=110) and 3=(11) 最后得到二进制10
// 结果2

参考_Or _Not _Xor _Shl _Shr _Rol _Ror

_Or

范例

return _Or (6, 3);
// 结果7
// 返回十进制(6=110) or 3=(11) 最后得到二进制111十进制是7

参考_And _Not _Xor _Shl _Shr _Rol _Ror

_Not

范例

return _Not (4);
// 结果:-5
// 返回十进制_not (4=00000100) 取非运算最后得到二进制11111011十进制//是-5,注意:在计算机中,负数以其正值的补码形式表示。补码是烦吗+1
// 5=00000101得到反码11111010得到补码11111011=-5

参考_And _Or _Xor _Shl _Shr _Rol _Ror

_Xor

范例

return _Xor (6, 3);
// 结果5
// 返回十进制 (6=110) Xor (3=011) 最后得到二进制101十进制是5

参考_And _Or _Not _Shl _Shr _Rol _Ror

_Shl

范例

return _Shl (6, 3);
// 结果48
// 返回十进制 (6=110) _Shl 3 最后得到二进制110000十进制是48

参考_And _Or _Not _Xor _Shr _Rol _Ror

_Shr

范例

return _Shr (36, 3);
// 结果4
// 返回十进制 (36=100100) _Shr 3最后得到二进制00000100十进制是4

参考_And _Or _Not _Xor _Shl _Rol _Ror

_Rol

范例

return _Rol (36, 3);
// 结果288
// 返回十进制 (36=100100) 左移3位,最后得到二进制100100000十进制是//288

参考_And _Or _Not _Xor _Shl _Shr _Ror

_Ror

范例

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

用途:三角函数相关函数。 参数:

返回:处理后的结果值。

范例

// 求sin(π/6)
return Sin(pi() / 6);
// 结果0.5

参考简单函数对数组支持 Cos SinCos ArcSin Sinh

Cos

用途:三角函数相关函数。 参数:

返回:处理后的结果值。

范例

// 求cos(π/3)
return Cos(pi() / 3);
// 结果0.5

参考简单函数对数组支持 Sin SinCos Cosecant ArcCos Cosh

SinCos

用途:三角函数相关函数。 参数:

返回:处理后的结果值。

范例

SinCos(pi() / 2, sin, cos);
return array(sin, cos);

参考简单函数对数组支持 Cos SinCos ArcSin Sinh

Tan

用途:三角函数相关函数。 参数:

返回:处理后的结果值。

范例

// 求tan(π/4)
return Tan(pi() / 4);
// 结果1

参考简单函数对数组支持 Cot CoTan ArcTan ArcTan2 Tanh

Cot

用途:三角函数相关函数。 参数:

返回:处理后的结果值。

范例

// 求Cot (π/4)
return Cot(pi() / 4);
// 结果1

参考简单函数对数组支持 CoTan ArcCot ArcCotH Tan

CoTan

用途:三角函数相关函数。 参数:

返回:处理后的结果值。

范例

// 求Cotan(π/4)
return CoTan(pi() / 4);
// 结果1

参考简单函数对数组支持 CoTan ArcCot ArcCotH Tan

Sec

用途:三角函数相关函数。 参数:

返回:处理后的结果值。

范例

// 求Sec(π/3)
return Sec(pi() / 3);
// 结果2

参考简单函数对数组支持 Csc Secant ArcSec SecH

Csc

用途:三角函数相关函数。 参数:

返回:处理后的结果值。

范例

// 求Csc(π/6)
return Csc(pi() / 6);
// 结果2

参考简单函数对数组支持 Sec Secant ArcCsc CscH

Secant

用途:三角函数相关函数。 参数:

返回:处理后的结果值。

范例

// 求Secant (π/6)
return Secant(pi() / 3);
// 结果2

参考简单函数对数组支持 Sec Csc ArcSec SecH

Cosecant

用途:三角函数相关函数。 参数:

返回:处理后的结果值。

范例

// 求Cosecant (π/6)
return Cosecant(pi() / 6);
// 结果2

参考简单函数对数组支持 Sin SinCos Cosecant ArcCos Cosh

ArcSin

用途:三角函数相关函数。 参数:

返回:处理后的结果值。

范例

return ArcSin(1);
// 结果1.57   //约等于π/2

参考简单函数对数组支持 Sin ArcSinh

ArcCos

用途:三角函数相关函数。 参数:

返回:处理后的结果值。

范例

return ArcCos(0);
// 结果1.57   //约等于π/2

参考简单函数对数组支持 Cos Cosecant ArcCosh

ArcTan

用途:三角函数相关函数。 参数:

返回:处理后的结果值。

范例

// 求ArcTan(1)
return ArcTan(1);
// 结果0.785398163397448 //该值=pi()/4

参考简单函数对数组支持 ArcTan2 ArcTan ArcTanh

ArcTan2

用途:三角函数相关函数。 参数:

返回:处理后的结果值。

范例

return ArcTan2(1, 2);
// 结果0.46

参考简单函数对数组支持 Tan ArcTan ArcTanh

ArcCot

用途:三角函数相关函数。 参数:

返回:处理后的结果值。

范例

return ArcCot(1);
// 结果0.7854

参考简单函数对数组支持 Cot CoTan ArcCotH

ArcSec

用途:三角函数相关函数。 参数:

返回:处理后的结果值。

范例

// 求ArcSec(2)
return ArcSec(2);
// 结果1.05

参考简单函数对数组支持 Secant Sec ArcSecH

ArcCsc

用途:三角函数相关函数。 参数:

返回:处理后的结果值。

范例

// 求ArcCsc(2)
return ArcCsc(2);
// 结果0.52

参考简单函数对数组支持 Csc ArcCscH

Hypot

用途:三角函数相关函数。 参数:

返回:处理后的结果值。

范例

// 求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

用途:角度量转换相关函数。 参数:

返回:处理后的结果值。

范例

// 求RadToDeg (π/3)
return RadToDeg(pi() / 3);
// 结果60

参考简单函数对数组支持 RadToGrad RadToCycle DegToRad DegToGrad DegToCycle GradToRad GradToDeg CycleToRad CycleToDeg

RadToGrad

用途:角度量转换相关函数。 参数:

返回:处理后的结果值。

范例

// 求RadToGrad (π/4)
return RadToGrad(pi() / 4);
// 结果50

参考简单函数对数组支持 RadToDeg RadToCycle DegToRad DegToGrad GradToRad GradToDeg GradToCycle CycleToRad CycleToGrad

RadToCycle

用途:角度量转换相关函数。 参数:

返回:处理后的结果值。

范例

// 求RadToCycle (π/4)
return RadToCycle(pi() / 4);
// 结果0.125

参考简单函数对数组支持 RadToDeg RadToGrad DegToRad DegToCycle GradToRad GradToCycle CycleToRad CycleToDeg CycleToGrad

DegToRad

用途:角度量转换相关函数。 参数:

返回:处理后的结果值。

范例

// 求DegToRad (60)
return DegToRad(60);
// 结果1.0472    //返回π/3

参考简单函数对数组支持 RadToDeg RadToGrad RadToCycle DegToGrad DegToCycle GradToRad GradToDeg CycleToRad CycleToDeg

DegToGrad

用途:角度量转换相关函数。 参数:

返回:处理后的结果值。

范例

// 求DegToGrad (90)
return DegToGrad(90);
// 结果100

s参考简单函数对数组支持 RadToDeg RadToGrad DegToRad DegToCycle GradToRad GradToDeg GradToCycle CycleToDeg CycleToGrad

DegToCycle

用途:角度量转换相关函数。 参数:

返回:处理后的结果值。

范例

// 求DegToCycle(45)
return DegToCycle(45);
// 结果0.125

参考简单函数对数组支持 RadToDeg RadToCycle DegToRad DegToGrad GradToDeg GradToCycle CycleToRad CycleToDeg CycleToGrad

GradToRad

用途:角度量转换相关函数。 参数:

返回:处理后的结果值。

范例

// 求GradToRad(50)
return GradToRad(50);
// 结果0.79//结果相当于π/4

参考简单函数对数组支持 RadToDeg RadToGrad RadToCycle DegToRad DegToGrad GradToDeg GradToCycle CycleToRad CycleToGrad

GradToDeg

用途:角度量转换相关函数。 参数:

返回:处理后的结果值。

范例

// 求GradToDeg(50)
return GradToDeg(50);
// 结果45

参考简单函数对数组支持 RadToDeg RadToGrad DegToRad DegToGrad DegToCycle GradToRad GradToCycle CycleToDeg CycleToGrad

GradToCycle

用途:角度量转换相关函数。 参数:

返回:处理后的结果值。

范例

// 求GradToCycle(100)
return GradToCycle(100);
// 结果0.25

参考简单函数对数组支持 RadToGrad RadToCycle DegToGrad DegToCycle GradToRad GradToDeg CycleToRad CycleToDeg CycleToGrad

CycleToRad

用途:角度量转换相关函数。 参数:

返回:处理后的结果值。

范例

// 求CycleToRad(1/4)
return CycleToRad(1 / 4);
// 结果1.57 //相当于π/2

参考简单函数对数组支持 RadToDeg RadToGrad RadToCycle DegToRad DegToCycle GradToRad GradToCycle CycleToDeg CycleToGrad

CycleToDeg

用途:角度量转换相关函数。 参数:

返回:处理后的结果值。

范例

// 求CycleToDeg(1/4)
return CycleToDeg(1 / 4);
// 结果90

参考简单函数对数组支持 RadToDeg RadToCycle DegToRad DegToGrad DegToCycle GradToDeg GradToCycle CycleToRad CycleToGrad

CycleToGrad

用途:角度量转换相关函数。 参数:

返回:处理后的结果值。

范例

// 求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

用途:双曲线函数相关函数。 参数:

返回:处理后的结果值。

范例

// 求Sinh (2)
return Sinh(2);
// 结果3.63

参考简单函数对数组支持 Cosh ArcSinh Sin

Cosh

用途:双曲线函数相关函数。 参数:

返回:处理后的结果值。

范例

// 求Cosh(2)
return Cosh(2);
// 结果3.76

参考简单函数对数组支持 Cos Cosecant Sinh ArcCosh

Tanh

用途:双曲线函数相关函数。 参数:

返回:处理后的结果值。

范例

// 求Tanh(2)
return Tanh(2);
// 结果0.96

参考简单函数对数组支持 Tan CotH ArcTanh

CotH

用途:双曲线函数相关函数。 参数:

返回:处理后的结果值。

范例

// 求CotH(2)
return CotH(2);
// 结果1.04

参考简单函数对数组支持 Cot CoTan Tanh ArcCotH

SecH

用途:双曲线函数相关函数。 参数:

返回:处理后的结果值。

范例

// 求SecH(2)
return SecH(2);
// 结果0.27

参考简单函数对数组支持 Secant Sec CscH ArcSecH

CscH

用途:双曲线函数相关函数。 参数:

返回:处理后的结果值。

范例

// 求CscH (2)
return CscH(2);
// 结果0.28

参考简单函数对数组支持 Csc SecH ArcCscH

ArcCosh

用途:双曲线函数相关函数。 参数:

返回:处理后的结果值。

范例

// 求ArcCosh(2)
return ArcCosh(2);
// 结果1.32

参考简单函数对数组支持 Cosh ArcCos

ArcSinh

用途:双曲线函数相关函数。 参数:

返回:处理后的结果值。

范例

// 求ArcSinh (2)
return ArcSinh(2);
// 结果1.44

参考简单函数对数组支持 ArcSin Sinh

ArcTanh

用途:双曲线函数相关函数。 参数:

返回:处理后的结果值。

范例

// 求ArcTanh(0.8)
return ArcTanh(0.8);
// 结果1.1

参考简单函数对数组支持 Tanh ArcTan

ArcCotH

用途:双曲线函数相关函数。 参数:

返回:处理后的结果值。

范例

// 求ArcCotH(4)
return ArcCotH(4);
// 结果0.26

参考简单函数对数组支持 ArcCot Tanh

ArcSecH

用途:双曲线函数相关函数。 参数:

返回:处理后的结果值。

范例

// 求ArcSecH(4)
return ArcSecH(0.5);
// 结果1.32

参考简单函数对数组支持 SecH ArcSec

ArcCscH

用途:双曲线函数相关函数。 参数:

返回:处理后的结果值。

范例

// 求ArcCscH(4)
return ArcCscH(4);
// 结果0.25

参考简单函数对数组支持 ArcCsc CscH

指数对数函数
内容
  • Ln
  • LnXP1
  • Log10
  • Log2
  • LogN
  • Exp
  • IntPower
  • Power
Ln

用途:指数对数函数相关函数。 参数:

返回:处理后的结果值。

范例

// 求ln(e^2)
return Ln(7.38905609893065);
// 结果2

参考简单函数对数组支持 LnXP1 Log10 Log2 LogN Exp IntPower Power

LnXP1

用途:指数对数函数相关函数。 参数:

返回:处理后的结果值。

范例

return LnXP1(3);
// 结果1.39 //返回ln4

参考简单函数对数组支持 Ln Log10 Log2 LogN Exp IntPower Power

Log10

用途:指数对数函数相关函数。 参数:

返回:处理后的结果值。

范例

return Log10(100);
// 结果2 //返回log10100

参考简单函数对数组支持 Ln LnXP1 Log2 LogN Exp IntPower Power

Log2

用途:指数对数函数相关函数。 参数:

返回:处理后的结果值。

范例

return Log2(8);
// 结果3 //返回log28

参考简单函数对数组支持 Ln LnXP1 Log10 LogN Exp IntPower Power

LogN

用途:指数对数函数相关函数。 参数:

返回:处理后的结果值。

范例

return LogN(2, 8);
// 结果3 //返回log28

参考简单函数对数组支持 Ln LnXP1 Log10 Log2 Exp IntPower Power

Exp

用途:指数对数函数相关函数。 参数:

返回:处理后的结果值。

范例

// 求e^2
return Exp(2);
// 结果7.38905609893065

参考简单函数对数组支持 Ln LnXP1 Log10 Log2 LogN IntPower Power

IntPower

用途:指数对数函数相关函数。 参数:

返回:处理后的结果值。

范例

return IntPower(2, 3.2);
// 结果8 //返回2^3

参考简单函数对数组支持 Ln LnXP1 Log10 Log2 LogN Exp Power

Power

用途:指数对数函数相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:精度设置及取整运算相关函数。 参数:

返回:处理后的结果值。

范例

// 求x
X := 2.45;
return Int(x);
// 结果2.0

参考简单函数对数组支持 Ceil Floor Trunc Frac

Ceil

用途:精度设置及取整运算相关函数。 参数:

返回:处理后的结果值。

范例

return Ceil(-2.8);
// 结果:-2

参考简单函数对数组支持 Ceil32 Ceil64 Int Floor Trunc Frac

Ceil32

用途:精度设置及取整运算相关函数。 参数:

返回:处理后的结果值。

范例

return Ceil32(-2.8);
// 结果:-2

参考简单函数对数组支持 Int Ceil Floor Trunc Frac

Ceil64

用途:精度设置及取整运算相关函数。 参数:

返回:处理后的结果值。

范例

return Ceil64(-2.8);
// 结果:-2

参考简单函数对数组支持 Int Ceil Floor Trunc Frac

Floor

用途:精度设置及取整运算相关函数。 参数:

返回:处理后的结果值。

范例

return Floor(-2.8);
// 结果:-3

参考简单函数对数组支持 Floor32 Floor64 Int Ceil Trunc Frac

Floor32

用途:精度设置及取整运算相关函数。 参数:

返回:处理后的结果值。

范例

return Floor32(-2.8);
// 结果:-3

参考简单函数对数组支持 Int Ceil Floor Trunc Frac

Floor64

用途:精度设置及取整运算相关函数。 参数:

返回:处理后的结果值。

范例

return Floor64(-2.8);
// 结果:-3

参考简单函数对数组支持 Int Ceil Floor Trunc Frac

Trunc

用途:精度设置及取整运算相关函数。 参数:

返回:处理后的结果值。

范例

x := Trunc(-6.8);
return x;
// 结果:-6

参考简单函数对数组支持 Trunc32 Trunc64 Int Ceil Floor Frac

Trunc32

用途:精度设置及取整运算相关函数。 参数:

返回:处理后的结果值。

范例

x := Trunc32(-6.8);
return x;
// 结果:-6

参考简单函数对数组支持 Int Ceil Floor Trunc Frac

Trunc64

用途:精度设置及取整运算相关函数。 参数:

返回:处理后的结果值。

范例

x := Trunc64(6.8);
return x;
// 结果6

参考简单函数对数组支持 Int Ceil Floor Trunc Frac

Frac

用途:精度设置及取整运算相关函数。 参数:

返回:处理后的结果值。

范例

// 求x
X := 2.45;
return Frac(x);
// 结果0.45

参考简单函数对数组支持 Int Ceil Floor Trunc

Round

用途:精度设置及取整运算相关函数。 参数:

返回:处理后的结果值。

范例

// 求x
X := 3.5;
return Round(x);
// 结果4

参考简单函数对数组支持 Round32 Round64 SimpleRound RoundTo SimpleRoundTo

Round32

用途:精度设置及取整运算相关函数。 参数:

返回:处理后的结果值。

范例

x := Round32(6.8);
return x;
// 结果7

参考简单函数对数组支持 Round SimpleRound RoundTo SimpleRoundTo

Round64

用途:精度设置及取整运算相关函数。 参数:

返回:处理后的结果值。

范例

x := Round64(3.5);
return x;
// 结果4

参考简单函数对数组支持 Round SimpleRound RoundTo SimpleRoundTo

SimpleRound

用途:精度设置及取整运算相关函数。 参数:

返回:处理后的结果值。

范例

// 求x
X := 3.5;
return SimpleRound(x);
// 结果4

参考简单函数对数组支持 SimpleRound32 SimpleRound64 Round RoundTo SimpleRoundTo

SimpleRound32

用途:精度设置及取整运算相关函数。 参数:

返回:处理后的结果值。

范例

x := SimpleRound32(6.8);
return x;
// 结果7

参考简单函数对数组支持 Round SimpleRound RoundTo SimpleRoundTo

SimpleRound64

用途:精度设置及取整运算相关函数。 参数:

返回:处理后的结果值。

范例

x := SimpleRound64(3.5);
return x;
// 结果4

参考简单函数对数组支持 Round SimpleRound RoundTo SimpleRoundTo

RoundTo

用途:精度设置及取整运算相关函数。 参数:

返回:处理后的结果值。

范例

范例01整数四舍五入

return RoundTo(1234567.3, 4);
// 结果1230000

范例02小数部分四舍五入

return RoundTo(1.234567, -3);
// 结果1.235

参考简单函数对数组支持 Round SimpleRound SimpleRoundTo

SimpleRoundTo

用途:精度设置及取整运算相关函数。 参数:

返回:处理后的结果值。

范例

范例01

return SimpleRoundTo(1234567.34);
// 结果1230000

范例02

return SimpleRoundTo(-1.235, -2);
// -1.24

参考简单函数对数组支持 Round SimpleRound RoundTo

比较判断函数
内容
  • IsNan
  • IsInfinite
  • Sign
  • IsZero
  • Min
  • Max
  • CompareValue
  • SameValue
  • RandomRange
  • InRange
  • EnsureRange
IsNan

用途:判断条件是否成立。 参数:

返回:布尔值。

范例

范例01判断单个值是否nan

v := nan;
return IsNan(v); // 1

范例02判断数组中各元素是否nan

Data := array(2, nan, 3, '', 's', nil);
return IsNan(data);

参考简单函数对数组支持 IsInfinite

IsInfinite

用途:判断条件是否成立。 参数:

返回:布尔值。

范例

范例01判断单个值是否inf

return IsInfinite(inf);
// 结果1

范例02判断数组中各元素是否nan

Data := array(2, nan, 3, '', 's', nil, inf);
return IsInfinite(data);

参考简单函数对数组支持 IsNan

Sign

用途:比较判断函数相关函数。 参数:

返回:处理后的结果值。

范例

return Sign(-2);
// 结果:-1

参考简单函数对数组支持

IsZero

用途:判断条件是否成立。 参数:

返回:布尔值。

范例

a := 1.400000000001;
b := 1.399999999999;
return IsZero(a - b, 0.000000001); // 在9位小数的精度下
// 结果1

参考简单函数对数组支持 CompareValue SameValue RandomRange InRange EnsureRange

Min

用途:进行数值统计计算。 参数:

返回:处理后的结果值。

范例

// 比较两个值
return Min(3, 3.6);
// 结果3

比较两个数组

a := array(1, 3, 5);
b := array(2, 3, 4);
return Min(a, b);

参考简单函数对数组支持 MinValue MinIntValue MaxValue MaxIntValue Max

Max

用途:进行数值统计计算。 参数:

返回:处理后的结果值。

范例

return Max(5, 5.6);
// 结果5.6
return Max(array(1, 2, 8), array(4, 5, 6));

参考简单函数对数组支持 MinValue MinIntValue MaxValue MaxIntValue Min

CompareValue

用途:比较判断函数相关函数。 参数:

返回:处理后的结果值。

范例

return CompareValue(3, 4, 0.5);
// 结果:-1
// 表示3与4之间的差距超过0.5则正常比较,否则认为相等

参考简单函数对数组支持 IsZero SameValue RandomRange InRange EnsureRange

SameValue

用途:比较判断函数相关函数。 参数:

返回:处理后的结果值。

范例

return SameValue(3, 4, 0.5);
// 结果0
// 表示3与4之间的差距在0.5之内认为相等,否则认为不相等

参考简单函数对数组支持 IsZero CompareValue RandomRange InRange EnsureRange

RandomRange

用途:比较判断函数相关函数。 参数:

返回:处理后的结果值。

范例

return RandomRange(4.7, 8.5);
// 结果5//返回4到8之间的随机整数

参考简单函数对数组支持 IsZero CompareValue SameValue InRange EnsureRange

InRange

用途:比较判断函数相关函数。 参数:

返回:处理后的结果值。

范例

return InRange(4.3, 4, 8);
// 结果1

参考简单函数对数组支持 IsZero CompareValue SameValue RandomRange EnsureRange

EnsureRange

用途:比较判断函数相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:进行数值统计计算。 参数:

返回:处理后的结果值。

范例

a := array(5.3, 3.9, 5.6, 5, 6.5, 7.6);
return MinIntValue(a);
// 结果3

参考统计函数功能拓展 MinValue MaxValue MaxIntValue Min Max

SumOfSquares

用途:进行数值统计计算。 参数:

返回:处理后的结果值。

范例

a := array(2, 3, 1, 5, 6.5, 7.5);
return SumOfSquares(a);
// 结果124

参考统计函数功能拓展 Norm SumsAndSquares

StdDev

用途:一般统计量相关函数。 参数:

返回:处理后的结果值。

范例

范例01一维数组求样本标准差

a := array(5.3, 3.9, 5.6, 5, 7.5, 7.6);
return StdDev(a);
// 结果1.46070759108956 //样本a的标准差

范例02二维数组指定列+指定步长计算样本标准差

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一维数组求平均值

a := array(2, 3, 1, 5, 6, 7);
return Mean(a);
// 结果4

范例02二维数组指定列+指定步长计算平均

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一维数组求和

a := array(2, 3, 1, 5, 6, 7);
return Sum(a);
// 结果24

范例02二维数组指定列+指定步长求和

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一维数组求最大值

a := array(5.3, 3.9, 5.6, 5, 6.5, 7.6);
return MaxValue(a);
// 结果7.6

范例02二维数组指定列+指定步长计算最大值

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一维数组求最小值

a := array(2, 3, 1, 5, 6, 7);
return MinValue(a);
// 结果1

范例02二维数组指定列+指定步长计算最小值

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一维数组求平方和的平方根

a := array(5, 3, 5, 5, 7, 7);
return Norm(a);
// 结果13.490737563232

范例02二维数组指定列+指定步长计算平方和的平方根

arr := rand(10, array("A", "B"));
ml := length(arr); // 移动步长--指定大于等于总长度数,则统计从首行到当前行的区间
arr[:, "A-平方和的平方根"] := Norm(arr, 0, ml, "A");
return arr;

参考统计函数功能拓展 SumOfSquares

SumsAndSquares

用途:进行数值统计计算。 参数:

返回:处理后的结果值。

范例

a := array(2, 3, 1, 5, 6, 7);
// b是总和,c是平方和
SumsAndSquares(a, b, c);
return array(b, c);

参考统计函数功能拓展 Sum SumOfSquares

MaxIntValue

用途:进行数值统计计算。 参数:

返回:处理后的结果值。

范例

a := array(5.3, 3.9, 5.6, 5, 7.5, 7.6);
return MaxIntValue(a);
// 结果7

参考统计函数功能拓展 MinValue MinIntValue MaxValue Min Max

SumInt

用途:进行数值统计计算。 参数:

返回:处理后的结果值。

范例

a := array(2, 3, 1, 5, 6.5, 7.5);
return SumInt(a);
// 结果24

参考统计函数功能拓展 Sum

Harmean

用途:进行数值统计计算。 参数:

返回:处理后的结果值。

范例

范例01一维数组计算调和平均数

Data := array(5, 3, 6, 8, 9, 10, 4);
return Harmean(Data);
// 结果5.44

范例02二维数组指定列+指定步长计算调和平均数

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一维数组求样本方差

a := array(5.3, 3.9, 5.6, 5, 7.5, 7.6);
return Variance(a);
// 结果2.13366666666666

范例02二维数组指定列+指定步长计算样本方差

arr := rand(10, array("A", "B"));
ml := length(arr); // 移动步长--指定大于等于总长度数,则统计从首行到当前行的区间
arr[:, "A-样本方差"] := Variance(arr, 0, ml, "A");
return arr;

参考统计函数功能拓展 StdDev PopnStdDev PopnVariance

MeanAndStdDev

用途:进行数值统计计算。 参数:

返回:处理后的结果值。

范例

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

用途:一般统计量相关函数。 参数:

返回:处理后的结果值。

范例

Data := array(5, 3, 6, 8, 9, 10, 4);
// 返回数组Data的平均绝对偏
return AveDev(Data);
// 结果2.2

参考统计函数功能拓展 StdDev

Skewness

用途:一般统计量相关函数。 参数:

返回:处理后的结果值。

范例

范例01一维数组求偏度

Data := array(5, 3, 6, 8, 9, 10, 4);
return Skewness(Data);
// 结果0.11

范例02二维数组指定列+指定步长计算偏度

arr := rand(10, array("A", "B"));
ml := length(arr); // 移动步长--指定大于等于总长度数,则统计从首行到当前行的区间
arr[:, "A-偏度"] := Skewness(arr, 0, ml, "A");
return arr;

参考统计函数功能拓展 skewness2 Kurtosis kurtosis2

TotalVariance

用途:一般统计量相关函数。 参数:

返回:处理后的结果值。

范例

a := array(5.3, 3.9, 5.6, 5, 7.5, 7.6);
return TotalVariance(a);
// 结果10.6683333333333

参考统计函数功能拓展 Variance

Product

用途:一般统计量相关函数。 参数:

返回:处理后的结果值。

范例

一维数组计算累乘值

Data := array(5, 3, 6, 8, 9, 10, 4);
return Product(Data);
// 结果259200 //返回5*3*6*8*9*10*4

范例02二维数组指定列+指定步长计算累乘值

arr := rand(10, array("A", "B")) * 10;
ml := length(arr); // 移动步长--指定大于等于总长度数,则统计从首行到当前行的区间
arr[:, "A-累乘"] := Product(arr, 0, ml, "A");
return arr;

参考统计函数功能拓展 Sum

PopnStdDev

用途:一般统计量相关函数。 参数:

返回:处理后的结果值。

范例

范例01一维数组求总体标准差

a := array(5.3, 3.9, 5.6, 5, 7.5, 7.6);
return PopnStdDev(a);
// 结果1.33343749593131

范例02二维数组指定列+指定步长计算总体标准差

arr := rand(10, array("A", "B"));
ml := length(arr); // 移动步长--指定大于等于总长度数,则统计从首行到当前行的区间
arr[:, "A-总体标准差"] := PopnStdDev(arr, 0, ml, "A");
return arr;

参考统计函数功能拓展 StdDev Variance PopnVariance

kurtosis2

用途:一般统计量相关函数。 参数:

返回:处理后的结果值。

范例

范例01一维数组计算峰度

Data := array(5, 3, 6, 8, 9, 10, 4);
return kurtosis2(Data);
// 结果1.57

范例02二维数组指定列+指定步长计算峰度

arr := rand(10, array("A", "B"));
ml := length(arr); // 移动步长--指定大于等于总长度数,则统计从首行到当前行的区间
arr[:, "A-峰度"] := kurtosis2(arr, 0, ml, "A");
return arr;

参考统计函数功能拓展 Skew skewness2 Kurtosis

Median

用途:一般统计量相关函数。 参数:

返回:处理后的结果值。

范例

Data := array(5, 3, 6, 8, 9, 10, 4);
return Median(Data);
// 结果6

参考统计函数功能拓展 Mean StdDev Geomean Harmean Mode

skewness2

用途:一般统计量相关函数。 参数:

返回:处理后的结果值。

范例

范例01一维数组求偏度

Data := array(5, 3, 6, 8, 9, 10, 4);
return skewness2(Data);
// 结果0.09

范例02二维数组指定列+指定步长计算偏度

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函数为例

正常数据的处理:

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

含字符串异常数据

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和字符串元素

空数组时候的默认输出:

return mean(array(), 0, 0, nil, 1, "默认输出值"); // 输出第6个参数

一维数组的处理和n*1二维数组类似注意第二个参数一般为0移动平均还是一维数组一般平均结果是实数。

a := rand(100);
return mean(a); // 结果为实数
return mean(a, 0, 10); // 长度为10的移动平均

次序统计量以Large函数为例

相比较统计函数的用法次序统计函数主要要注意的是第二个不可缺省的参数的设置问题比如Large(Data:Array;N:[Int,Array]):[real,Array];

N是一个整数的时候

a := 1 -  > 10;
a |= a;
return _large(a, 1); // 这样可以得到每列最大的元素

N是一个一维数组的时候

a := rand(100, 10);
return _large(a, 1 -  > 10); // 对列做的时候N的长度必须和列数目一致
return _large(a, ones(100), 1); // 对行做的时候N的长度必须和行数目一致
Kurtosis

用途:一般统计量相关函数。 参数:

返回:处理后的结果值。

范例

范例01一维数组计算峰度

Data := array(5, 3, 6, 8, 9, 10, 4);
return Kurtosis(Data);
// 结果:-1.64

结果:-1.64

范例02二维数组指定列+指定步长计算峰度

arr := rand(10, array("A", "B"));
ml := length(arr); // 移动步长--指定大于等于总长度数,则统计从首行到当前行的区间
arr[:, "A-峰度"] := Kurtosis(arr, 0, ml, "A");
return arr;

参考统计函数功能拓展 Skewness skewness2 kurtosis2

Mode

用途:一般统计量相关函数。 参数:

返回:处理后的结果值。

范例

Data := array(5, 3, 6, 8, 9, 10, 4);
return Mode(Data);
// 结果3

参考统计函数功能拓展 Mean StdDev Geomean Harmean Median

RandG

用途:一般统计量相关函数。 参数:

返回:处理后的结果值。

范例

return RandG(2, 3);
// 结果3.05   //3.05是均值为2,标准差为3的高斯分布的一个样本数据

参考简单函数对数组支持

Geomean

用途:进行数值统计计算。 参数:

返回:处理后的结果值。

范例

范例01一维数组计算几何平均数

Data := array(5, 3, 6, 8, 9, 10, 4);
return Geomean(Data);
// 结果5.93

范例02二维数组指定列+指定步长计算几何平均数

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一维数组求总体方差

a := array(5.3, 3.9, 5.6, 5, 7.5, 7.6);
return PopnVariance(a);
// 结果1.77805555555555

范例02二维数组指定列+指定步长计算总体方差

arr := rand(10, array("A", "B"));
ml := length(arr); // 移动步长--指定大于等于总长度数,则统计从首行到当前行的区间
arr[:, "A-总体方差"] := PopnVariance(arr, 0, ml, "A");
return arr;

参考统计函数功能拓展 StdDev PopnStdDev Variance

MomentSkewKurtosis

用途:一般统计量相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:一般统计量相关函数。 参数:

返回:处理后的结果值。

范例

Data := array(5, 3, 6, 8, 9, 10, 4);
return DevSq(Data);
// 结果41.71

参考统计函数功能拓展 StdDev

randomfrom

用途:一般统计量相关函数。 参数:

返回:处理后的结果值。

范例

Data := array(5, 3, 6, 8, 9, 10, 4);
return randomfrom(Data);
// 结果9

参考统计函数功能拓展

次序统计量
内容
  • Large
  • Small
  • Percentile
  • Percentrank
  • Quartile
  • Rank
  • Trimmean
  • Frequency
Large

用途:次序统计量相关函数。 参数:

返回:处理后的结果值。

范例

Data := array(5, 3, 6, 8, 9, 10, 4);
// 返回数组Data中第3大的数据
return Large(Data, 3);
// 结果8

参考统计函数功能拓展 Small Percentile

Small

用途:次序统计量相关函数。 参数:

返回:处理后的结果值。

范例

// 返回数组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

所求结果1j序列第(i1)个数j序列第(i+2)个数

范例

范例1序列百分点的值

// 返回数组Data的第3个百分点
Data := array(5, 3, 6, 8, 9, 10, 4);
return Percentile(Data, 0.3);
// 结果4.8

范例2二维数组各列百分点的值

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二维数组指定列指定步长的百分点的值

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

用途:次序统计量相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:次序统计量相关函数。 参数:

返回:处理后的结果值。

范例

// 返回数组Data中第3个四分位数,即75%。然后按照Percentile的算法求值
// (7-1)*75%=4.5i=4j=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

用途:次序统计量相关函数。 参数:

返回:处理后的结果值。

范例

Data := array(5, 3, 6, 8, 9, 10, 4);
return Rank(Data, 8);
// 结果3

参考统计函数功能拓展 Percentile Percentrank

Trimmean

用途:对字符串进行裁剪处理。 参数:

返回:处理后的结果值。

范例

// 去除个数=总个数7*0.7=4.9头和尾各去除2个数据剩下数据568求//均值
Data := array(5, 3, 6, 8, 9, 10, 4);
return Trimmean(Data, 0.7);
// 结果6.33333333333333

参考统计函数功能拓展

Frequency

用途:次序统计量相关函数。 参数:

返回:处理后的结果值。

范例

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日线收盘与大盘的协方差

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日线收盘与大盘价格的相关系数

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日线收盘与大盘收盘价格的回归斜率

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日线收盘与大盘收盘价的相回归截距

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日线收盘与大盘的乘积矩相关系数平方

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日线收盘与大盘的相对标准偏差

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日线收盘与大盘收盘价格的回归斜率和截距

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.=σ/μ,其中σ为标准差,μ为均值。范例

return VariationCoefficient(array(1, 2, 1, 2, 1, 2));
// 返回0.33
Skew

用途:统计函数相关函数。 参数:

返回:处理后的结果值。

算法sc=1n(ti-μσ)3*nn-1(n-2)其中n为序列长度其中σ为标准差μ为均值。范例

Skew(array(1, 2, 3, 4, 5, 7), s);
return s;
// 返回0.46
SelfStddev

用途:统计函数相关函数。 参数:

返回:处理后的结果值。

算法

t2=t-Rmar,并将t2中大于0的元素化为0。

对t2求标准差范例

return SelfStddev(array(1, 2, 3, 4, 5), 3);
// 返回0.89
RegressionChannel

用途:统计函数相关函数。 参数:

返回:处理后的结果值。

算法返回BETA系数以及ALPHA值并得到上行轨道以及下行轨道的ALPHA。依此得到指定X的上轨以及下轨并根据当前的Y得到其所在轨道中的百分比如果<0则低于下轨>100则超越上轨。依照Alpha和Beta值得到nowx的预期回归运行值。范例

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为标准差。范例

Kurt(array(1, 2, 3, 4, 5), s);
return s;
// 返回:-1.2
MeanAndPopnStdDevWithRate

用途:进行数值统计计算。 参数:

返回:处理后的结果值。

算法

μ=1nRi*Di1nRi

σ=1nRiinRiDi2-(1nRi*Di)21nRi

其中μ为均值,σ为标准差范例

MeanAndPopnStdDevWithRate(array(1, 2, 3), array(1, 1, 1), m, s);
return m;
// 返回2
BetaAndAlpha

用途:统计函数相关函数。 参数:

返回:处理后的结果值。

范例

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

范例

r := array(-1, 2, -3, 9);
return ExpdMax(r); // array(-1,2,2,9)

######## ExpdMin

范例

r := array(-1, 2, -3, 9);
return ExpdMin (r); // array(-1,-1,-3,-3)

######## ExpdSum

范例

r := array(-1, 2, -3, 9);
return ExpdSum (r); // array(-1,1,-2,7)

######## ExpdProduct

范例

r := array(-1, 2, -3, 9);
return ExpdProduct (r); // array(-1,-2,6,54)

######## ExpdVar

范例

r := array(-1, 2, -3, 9);
return ExpdVar (r, 0); // array(0,2.25,4.22,20.69)

######## ExpdStd

范例

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

用途:进行数值统计计算。 参数:

返回:处理后的结果值。

范例

A := array(5, 6, 8, Nan);
return NanMean(A);
// 结果6.33

####### NanSum

用途:进行数值统计计算。 参数:

返回:处理后的结果值。

范例

A := array(5, 6, 8, Nan);
return NanSum(A);
// 结果19

####### NanStd

用途:统计函数相关函数。 参数:

返回:处理后的结果值。

范例

A := array(5, 6, 8, Nan);
return NanStd(A);
// 结果1.53

####### NanVariance

用途:统计函数相关函数。 参数:

返回:处理后的结果值。

范例

A := array(5, 6, 8, Nan);
return NanVariance(A);
// 结果2.33

####### NanPopnStd

用途:统计函数相关函数。 参数:

返回:处理后的结果值。

范例

A := array(5, 6, 8, Nan);
return NanPopnStd(A);
// 结果1.25

####### NanPopnVariance

范例

A := array(5, 6, 8, Nan);
return PopnVariance(A);
// 结果1.56

####### NanRankArr

用途:统计函数相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:统计函数相关函数。 参数:

返回:处理后的结果值。

范例

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

a := rand(10);
b := rand(10);
return correlpaired(a, b); // array((0.17))

范例02

a := rand(10);
b := rand(10, 2);
return correlpaired(a, b); // array((-0.35,-0.19))

范例03

a := rand(10, 2);
b := rand(10, 4);
return correlpaired(a, b);

返回:

范例04

a := `array("A":rand(10));
b := `array("A":rand(10), "B":rand(10));
return correlpaired(a, b); // array((0.2,-0.08))
correlpaired_side

用途:统计函数相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

return Gammaln(array(1.5, 2.3, 3.4));
// 结果array(-0.120782237635245,0.15418945495963,1.09232805980274)
Hist

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

A := randnorm(0, 1, 10000);
return Hist(A, 30, center);

结果,一维数字数组

sf_Error

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

sf_Error(0.15, v);
return v;
// 结果0.168
erfc

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

return erfc(0.15);
// 0.832004028572637
sf_Gamma

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

sf_Gamma(5, v);
return v;
// 结果24

参考sf_IncompleteGamma

erf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

return erf(0.15);
// 结果0.168
erfcinv

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

return erfcinv(0.15);
// 结果1.01790246483203
sf_Beta

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

sf_Beta(2, 5, v);
return v;
// 结果0.03333

参考sf_Gamma

sf_IntegerBessel_1

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

a := 5;
x := 7;
sf_IncompleteGamma(a, x, v);
return v;
// 结果0.82701

参考sf_Gamma

Gamma

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

return Gamma(array(1.5, 2.3, 3.4));
// 结果array(0.886226925452758,1.16671190519816,2.98120642681033)
erfinv

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

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);

结果以列为样本进行估计muhatmuci为正态分布位置参数的点估计区间估计sigmahatsigmaci为正态分布形态参数的点估计区间估计.其中每一个样本区间的区间估计中含有两个值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

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

return Randnorm(0, 1, 10, array("a", "b"));

参考分布函数 sf_normpdf sf_normcdf sf_norminv Normfit

sf_F

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

f := 2;
n1 := 3;
n2 := 5;
sf_F(f, n1, n2, v);
return v;
// 结果0.76738

参考sf_Normal sf_t sf_X2

sf_geopdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := 1 -  > 10;
return sf_geopdf(x, 0.5);

参考sf_geocdf sf_geoinv Randgeo 分布函数

sf_RealBessel_1

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := array(-4, 0.1) -  > 4;
return sf_unidcdf(x, 0, 1);

参考sf_unidpdf sf_unidcdf sf_unidinv Randunid 分布函数

sf_normpdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := array(-2, 0.1) -  > 2;
return sf_normpdf(x, 0, 1);

参考分布函数 sf_normcdf sf_norminv Randnorm Normfit

sf_geoinv

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

y := array(0.01, 0.01) -  > 0.99;
return sf_geoinv(y, 0.5);

参考sf_geopdf sf_geocdf Randgeo 分布函数

sf_unidpdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := 1 -  > 10;
return sf_unidpdf(x, 10);

参考sf_unidpdf sf_unidcdf sf_unidinv Randunid 分布函数

sf_IncompleteBeta

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

a := 3;
b := 4;
x := 0.25;
sf_IncompleteBeta(a, b, x, v);
return v;
// 结果0.16943

参考sf_Beta

sf_normalinv2

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

sf_normalinv2(0.5 , v);
return v; // 返回结果0.
sf_norminv

用途:进行数值统计计算。 参数:

返回:处理后的结果值。

范例

y := array(0.01, 0.01) -  > 0.99;
return sf_norminv(y, 0, 1);

参考分布函数 sf_normpdf sf_normcdf Randnorm Normfit

Randunid

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

return Randunid(10, 10, array("a", "b"));

参考sf_unidpdf sf_unidcdf sf_unidinv 分布函数

sf_Normal

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := 0;
a := 0;
d := 1;
sf_Normal(x, a, d, v);
return v;
// 结果0.5

参考sf_t sf_X2 sf_F

sf_unidinv

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

y := array(0.01, 0.01) -  > 0.99;
return sf_unidinv(y, 10);

参考sf_unidpdf sf_unidcdf sf_unidinv Randunid 分布函数

sf_X2

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := 2.5;
n := 10;
sf_X2(x, n, v);
return v;
// 结果0.00912

参考sf_Normal sf_t sf_F

sf_IntegerBessel_2

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

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)范例

x := array(-4, 0.1) -  > 4;
return sf_normcdf(x, 0, 1);

参考分布函数 sf_normpdf sf_norminv Randnorm Normfit

sf_t

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

t := 2.5;
n := 10;
sf_t(t, n, v);
return v;
// 结果0.98428

参考sf_Normal sf_X2 sf_F

sf_geocdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := 1 -  > 10;
return sf_geocdf(x, 0.5);

参考sf_geopdf sf_geoinv Randgeo 分布函数

Randgeo

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

return Randgeo(10, 10, array("a", "b"));

参考sf_geopdf sf_geocdf sf_geoinv 分布函数

sf_normalinv

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

sf_normalinv(0.5, 0, 1, v);
return v; // 返回结果0.
Normfit

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := randnorm(0, 1, 10, array("a", "b"));
return Normfit(x, 0.05);

结果返回mu,sigma的估计以及他们的在alpha的显著性水平下的区间估计

sf_RealBessel_2

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

y := array(0.01, 0.01) -  > 0.99;
return sf_hygeinv(y, 100, 10, 20);

参考sf_hygepdf sf_hygecdf Randhyge 分布函数

poissfit

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := randpoiss(1, 100);
return poissfit(x, 0.05);

结果返回lambda的估计以及他们的在alpha的显著性水平下的区间估计

参考sf_poisspdf sf_poisscdf sf_poissinv Randpoiss 分布函数

sf_binocdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := 1 -  > 10;
return sf_binocdf(x, 10, 0.5);

参考sf_binopdf sf_binoinv Randbino binofit 分布函数

Randhyge

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

return Randhyge(100, 10, 20, 10, array("a", "b"));

参考sf_hygepdf sf_hygecdf sf_hygeinv 分布函数

sf_poissinv

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

y := array(0.01, 0.01) -  > 0.99;
return sf_poissinv(y, 10);

参考sf_poisspdf sf_poisscdf Randpoiss poissfit 分布函数

sf_poisscdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := 1 -  > 20;
return sf_poisscdf(x, 10);

参考sf_poisspdf sf_poissinv Randpoiss poissfit 分布函数

sf_nbininv

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

y := array(0.01, 0.01) -  > 0.99;
return sf_nbininv(y, 10, 0.5);

参考sf_nbinpdf sf_nbincdf Randnbin 分布函数

binofit

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := randbino(10, 0.5, 1);
return binofit(x, 10, 0.05);

结果返回p的估计以及在alpha的显著性水平下的区间估计

参考sf_binopdf sf_binocdf sf_binoinv Randbino 分布函数

sf_hygepdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := 1 -  > 20;
return sf_hygepdf(x, 100, 10, 20);

参考sf_hygecdf sf_hygeinv Randhyge 分布函数

sf_unifcdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := 1 -  > 10;
return sf_unifcdf(x, 1, 10);

参考sf_unifpdf Randunif uniffit 分布函数

sf_exppdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := array(0, 0.1) -  > 4.5;
return sf_exppdf(x, 1);

参考sf_expcdf sf_expinv Randexp expfit 分布函数

sf_binoinv

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

y := array(0.01, 0.01) -  > 0.99;
return sf_binoinv(y, 10, 0.5);

参考sf_binopdf sf_binocdf Randbino binofit 分布函数

uniffit

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := randunif(1, 10, 100);
return uniffit(x, 0.05);

结果返回a,b的估计以及他们的在alpha的显著性水平下的区间估计

参考sf_unifpdf sf_unifcdf sf_unifinv Randunif 分布函数

sf_nbinpdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := 1 -  > 20;
return sf_nbinpdf(x, 10, 0.5);

参考sf_nbincdf sf_nbininv Randnbin 分布函数

Randnbin

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

return Randnbin(10, 0.5, 10, array("a", "b"));

参考sf_nbinpdf sf_nbincdf sf_nbininv 分布函数

Randpoiss

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

return Randpoiss(10, 10, array("a", "b"));

参考sf_poisspdf sf_poisscdf sf_poissinv poissfit 分布函数

sf_hygecdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := 1 -  > 10;
return sf_hygecdf(x, 100, 10, 20);

参考sf_hygepdf sf_hygeinv Randhyge 分布函数

sf_poisspdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := 1 -  > 20;
return sf_poisspdf(x, 10);

参考sf_poisscdf sf_poissinv Randpoiss poissfit 分布函数

Randbino

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

return Randbino(10, 0.5, 10, array("a", "b"));

参考sf_binopdf sf_binocdf sf_binoinv binofit 分布函数

Randunif

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

return Randunif(1, 10, 10, array("a", "b"));

参考sf_unifpdf sf_unifcdf sf_unifinv uniffit 分布函数

sf_unifinv

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

y := array(0.01, 0.01) -  > 0.99;
return sf_unifinv(y, 1, 10);

参考sf_unifpdf sf_unifcdf Randunif uniffit 分布函数

sf_binopdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := 1 -  > 20;
return sf_binopdf(x, 10, 0.5);

参考sf_binocdf sf_binoinv Randbino binofit 分布函数

sf_nbincdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := 1 -  > 10;
return sf_nbincdf(x, 10, 0.5);

参考sf_nbinpdf sf_nbininv Randnbin 分布函数

sf_unifpdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := 1 -  > 10;
return sf_unifpdf(x, 1, 10);

参考sf_unifcdf Randunif uniffit 分布函数

sf_tcdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := array(-2.5, 0.1) -  > 2.5;
return sf_tcdf(x, 30);

参考sf_tpdf sf_tinv1 Randt 分布函数

sf_fpdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := array(0, 0.1) -  > 3;
return sf_fpdf(x, 20, 30);

参考sf_fcdf sf_finv1 Randf 分布函数

sf_tinv

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

sf_tinv(0.6, 30, v);
return v; // 返回结果0.255605364951908
expfit

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := randexp(1, 100);
return expfit(x, 0.05);

结果返回parm的估计已经他们的在alpha的显著性水平下的区间估计

参考sf_exppdf sf_expcdf sf_expinv Randexp 分布函数

Randgam

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

return Randgam(2, 2, 100, array("a", "b"));

参考sf_gampdf sf_gamcdf sf_gaminv 分布函数

sf_ch2inv

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

y := array(0.01, 0.01) -  > 0.99;
return sf_ch2inv(y, 30);

参考sf_ch2pdf sf_ch2cdf Randch2 分布函数

sf_ch2cdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := 0 -  > 50;
return sf_ch2cdf(x, 30);

参考sf_ch2pdf sf_ch2inv Randch2 分布函数

sf_finv1

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

y := array(0.01, 0.01) -  > 0.99;
return sf_finv1(y, 20, 30);

参考sf_fpdf sf_fcdf Randf 分布函数

Randt

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

return Randt(30, 10, array("a", "b"));

参考sf_tpdf sf_tcdf sf_tinv1 分布函数

sf_expcdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := array(0, 0.1) -  > 4.5;
return sf_expcdf(x, 1);

参考sf_exppdf sf_expinv Randexp expfit 分布函数

sf_finv

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

sf_finv(0.6, 20, 30, v);
return v; // 返回结果1.09737928787751
sf_gamcdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := array(0, 0.1) -  > 13;
return sf_gamcdf(x, 2, 2);

参考sf_gampdf sf_gaminv Randgam 分布函数

sf_tpdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := array(-2.5, 0.1) -  > 2.5;
return sf_tpdf(x, 30);

参考sf_tcdf sf_tinv1 Randt 分布函数

sf_x2inv

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

sf_x2inv(0.6, 30, v);
return v; // 返回结果31.3158632360391
sf_gampdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := array(0, 0.1) -  > 13;
return sf_gampdf(x, 2, 2);

参考sf_gamcdf sf_gaminv Randgam 分布函数

sf_gammainv

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

sf_gammainv(0.068094, 9, v);
return v; // 返回结果 5.000005596
sf_fcdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := array(0, 0.1) -  > 3;
return sf_fcdf(x, 20, 30);

参考sf_fpdf sf_finv1 Randf 分布函数

sf_ch2pdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := 0 -  > 50;
return sf_ch2pdf(x, 30);

参考sf_ch2cdf sf_ch2inv Randch2 分布函数

Randf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

return Randf(20, 30, 10, array("a", "b"));

参考sf_fpdf sf_fcdf sf_finv1 分布函数

Randexp

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

return Randexp(1, 10, array("a", "b"));

参考sf_exppdf sf_expcdf sf_expinv expfit 分布函数

Randch2

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

return Randch2(30, 10, array("a", "b"));

参考sf_ch2pdf sf_ch2cdf sf_ch2inv 分布函数

sf_gaminv

用途:进行数值统计计算。 参数:

返回:处理后的结果值。

范例

y := array(0.01, 0.01) -  > 0.99;
return sf_gaminv(y, 2, 2);

参考sf_gampdf sf_gamcdf Randgam 分布函数

sf_expinv

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

y := array(0.01, 0.01) -  > 0.99;
return sf_expinv(y, 1);

参考sf_exppdf sf_expcdf Randexp expfit 分布函数

sf_betapdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := array(0, 0.01) -  > 1;
return sf_betapdf(x, 2, 4);

参考sf_betacdf sf_betainv Randbeta 分布函数

sf_tinv1

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

y := array(0.01, 0.01) -  > 0.99;
return sf_tinv1(y, 30);

参考sf_tpdf sf_tcdf Randt 分布函数

RandCauchy

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

return RandCauchy(0, 2, 10, array("a", "b"));

参考sf_Cauchypdf sf_Cauchycdf sf_Cauchyinv 分布函数

sf_Laplacecdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := array(-8, 0.1) -  > 8;
return sf_Laplacecdf(x, 0, 2);

参考sf_Laplacepdf sf_Laplaceinv RandLaplace 分布函数

Randbeta

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

return Randbeta(2, 4, 100, array("a", "b"));

参考sf_betapdf sf_betacdf sf_betainv 分布函数

sf_Cauchypdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := array(-60, 1) -  > 60;
return sf_Cauchypdf(x, 0, 2);

参考sf_Cauchycdf sf_Cauchyinv RandCauchy 分布函数

sf_logninv

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

y := array(0.01, 0.01) -  > 0.99;
return sf_logninv(y, 0, 1);

参考sf_lognpdf sf_logncdf Randlogn 分布函数

sf_Laplaceinv

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

y := array(0.01, 0.01) -  > 0.99;
return sf_Laplaceinv(y, 0, 2);

参考sf_Laplacepdf sf_Laplacecdf RandLaplace 分布函数

sf_betacdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := array(0, 0.01) -  > 1;
return sf_betacdf(x, 2, 4);

参考sf_betapdf sf_betainv Randbeta 分布函数

sf_raylinv

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

y := array(0.01, 0.01) -  > 0.99;
return sf_raylinv(y, 1);

参考sf_raylpdf sf_raylcdf Randrayl 分布函数

sf_wblcdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := array(0, 0.05) -  > 3;
return sf_wblcdf(x, 1, 1.5);

参考sf_wblpdf sf_wblinv Randwbl 分布函数

sf_lognpdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := array(0, 0.1) -  > 5;
return sf_lognpdf(x, 0, 1);

参考sf_logncdf sf_logninv Randlogn 分布函数

sf_Cauchycdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := array(-60, 1) -  > 60;
return sf_Cauchycdf(x, 0, 2);

参考sf_Cauchypdf sf_Cauchyinv RandCauchy 分布函数

Randlogn

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

return Randlogn(0, 1, 10, array("a", "b"));

参考sf_lognpdf sf_logncdf sf_logninv 分布函数

Randrayl

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

return Randrayl(1, 100, array("a", "b"));

参考sf_raylpdf sf_raylcdf sf_raylinv 分布函数

sf_Laplacepdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := array(-8, 0.1) -  > 8;
return sf_Laplacepdf(x, 0, 2);

参考sf_Laplacecdf sf_Laplaceinv RandLaplace 分布函数

sf_raylpdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := array(0, 0.05) -  > 9;
return sf_raylpdf(x, 1);

参考sf_raylcdf sf_raylinv Randrayl 分布函数

sf_wblinv

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

y := array(0.01, 0.01) -  > 0.99;
return sf_wblinv(y, 1, 1.5);

参考sf_wblpdf sf_wblcdf Randwbl 分布函数

sf_logncdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := array(0, 0.1) -  > 5;
return sf_logncdf(x, 0, 1);

参考sf_lognpdf sf_logninv Randlogn 分布函数

sf_Cauchyinv

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

y := array(0.01, 0.01) -  > 0.99;
return sf_Cauchyinv(y, 0, 2);

参考sf_Cauchypdf sf_Cauchycdf RandCauchy 分布函数

sf_raylcdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := array(0, 0.05) -  > 3;
return sf_raylcdf(x, 1);

参考sf_raylpdf sf_raylinv Randrayl 分布函数

Randwbl

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

return Randwbl(1, 1.5, 100, array("a", "b"));

参考sf_wblpdf sf_wblcdf sf_wblinv 分布函数

sf_betainv

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

y := array(0.01, 0.01) -  > 0.99;
r := sf_betainv(y, 2, 4, x);
return x;

参考sf_betapdf sf_betacdf Randbeta 分布函数

RandLaplace

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

return RandLaplace(0, 2, 10, array("a", "b"));

参考sf_Laplacepdf sf_Laplacecdf sf_Laplaceinv 分布函数

sf_wblpdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

x := array(0, 0.05) -  > 3;
return sf_wblpdf(x, 1, 1.5);

参考sf_wblcdf sf_wblinv Randwbl 分布函数

sf_betainv1

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

y := array(0.01, 0.01) -  > 0.99;
return sf_betainv1(y, 2, 4);

参考sf_betapdf sf_betacdf Randbeta 分布函数

sf_mvtcdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

范例01

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

return sf_mvtcdf(zeros(length(u), 3), u, rho, 2);
Mvtcdfqmc

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

范例01

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

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

return sf_mvncdf(zeros(length(u), 3), u, zeros(1, 3), rho);
sf_copulacdf

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

范例01gaussian分布

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);

范例02t分布

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调用相同)

u := Randunif(0, 1, 300, 2);
return sf_copulacdf(u, "clayton", nil, 1);
sf_copulafit

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

范例01gaussian分布

// 返回数组,相关系数矩阵
u := Randunif(0, 1, 300, 3);
return sf_copulafit(u, "gaussian", "AML");

范例02t分布

// 返回数组,相关系数矩阵以及自由度
u := Randunif(0, 1, 300, 2);
return sf_copulafit(u, "t", "AML");

范例03阿基米德族clayton(frank、gumbel调用相同)

// 返回实数,参数估计值
u := Randunif(0, 1, 300, 2);
return sf_copulafit(u[:, 0:1], "clayton");
RandCopula

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

范例01gaussian分布

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);

范例02t分布

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调用相同)

alpha := 1;
n := 10;
return RandCopula("clayton", nil, alpha, n);
sf_exp

用途:统计分布相关函数。 参数:

返回:处理后的结果值。

范例

y := array(0.01, 0.01) -  > 0.99;
sf_exp(y, 3, v);
return v;
Norminv

用途:进行数值统计计算。 参数:

返回:处理后的结果值。

范例

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

用途:统计推断相关函数。 参数:

返回:处理后的结果值。

范例

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');

参考EstimateTNU Estimate SND Estimate_TND Estimate_SP Estimate_TP

Estimate_TNU

用途:统计推断相关函数。 参数:

返回:处理后的结果值。

范例

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);

参考EstimateSNU Estimate SND Estimate_TND Estimate_SP Estimate_TP

Estimate_ SND

范例

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

用途:统计推断相关函数。 参数:

返回:处理后的结果值。

范例

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);

参考EstimateSNU Estimate_TNU Estimate SND Estimate_SP Estimate_TP

Estimate_SP

用途:统计推断相关函数。 参数:

返回:处理后的结果值。

范例

mx := 0.3;
n := 120;
alpha := 0.05;
return Estimate_SP(mx, n, alpha);

参考EstimateSNU Estimate_TNU Estimate SND Estimate_TND Estimate_TP

Estimate_TP

用途:统计推断相关函数。 参数:

返回:处理后的结果值。

范例

P := array(0.478, 0.328);
N := array(1000.00, 750.00);
alpha := 0.05;
return Estimate_TP(P, N, alpha);

参考EstimateSNU Estimate_TNU Estimate SND Estimate_TND Estimate_SP

Hypoth_TailRes

用途:统计推断相关函数。 参数:

返回:处理后的结果值。

范例

return Hypoth_TailRes(50.110101, 0.06, "left", 0.05);
NormPlot

用途:统计推断相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:统计推断相关函数。 参数:

返回:处理后的结果值。

范例

return Hypoth_Kstest(randn(0, 1, 100), both, a, cdf);

参考NormPlot Hypoth_lillietest

Hypoth_lillietest

用途:统计推断相关函数。 参数:无。 返回:处理后的结果值。

范例

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

用途:统计推断相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:统计推断相关函数。 参数:

返回:处理后的结果值。

范例

x := array((120, 30), (479, 371));return Hypoth_KruskalWallis(x, 0.05);

结果表示接受原假设即x与y无关参考Hypoth_IndepTest

Hypoth_SNUTest

用途:统计推断相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:统计推断相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:统计推断相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:统计推断相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:统计推断相关函数。 参数:

返回:处理后的结果值。

范例

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下,判断以上各水平是否有显著差异

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对某指标是否有显著影响

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下,判断以上四组数据方差是否有显著差异:

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下,判断以上四组数据方差是否有显著差异:

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

用途:统计推断相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:统计推断相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:统计推断相关函数。 参数:

返回:处理后的结果值。

范例

x := array((6, 4), (20, 10));
Alpha := 0.05;
return Hypoth_McNemarTest(x, Alpha);

结果

配对检验

####### 内容

  • Hypoth_PNUTest
  • Hypoth_PSignTest
  • Hypoth_PWilcoxonTest

####### Hypoth_PNUTest

用途:统计推断相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:多元统计分析相关函数。 参数:

返回:处理后的结果值。

范例

A := rand(3, 4);
return Corr(A, 1); // 返回的是一般相关系数矩阵

输出结果:

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

用途:多元统计分析相关函数。 参数:

返回:处理后的结果值。

范例

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

结果

参考Corr Covariance Corr_partial Corrcoef Corr_partial Distance

Covariance

用途:多元统计分析相关函数。 参数:

返回:处理后的结果值。

范例

a := rand(4, 3);
return Covariance(A);

结果

参考Corr CorrelationMatrix Corr_partial Corrcoef Corr_partial Distance

Corrcoef

用途:多元统计分析相关函数。 参数:

返回:处理后的结果值。

范例

A := rand(7, 4);
return Corrcoef(A); // 返回简单相关系数分析

输出结果:

参考Corr Covariance Corr_partial CorrelationMatrix Corr_partial Distance

Corr_partial

用途:多元统计分析相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:多元统计分析相关函数。 参数:

返回:处理后的结果值。

范例

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;

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

用途:进行数值统计计算。 参数:

返回:处理后的结果值。

范例

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

用途:多元统计分析相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:多元统计分析相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:多元统计分析相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:多元统计分析相关函数。 参数:

返回:处理后的结果值。

范例

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代码

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和的线性组合VU=于是将研究两组变量的相关性问题转化成研究两个变量的相关性问题并且可以适当的调整系数a 和b使得U和V的相关性达到最大称这种相关为典型相关基于这种原则的分析方法称为典型相关分析。

第一步先定义典型相关设X=和Y=为随机向量用X和Y的线性组合和之间相关性来研究X与Y之间的相关性并希望找到a与b使得最大。由相关系数定义

(4. 1)

对任意的αβ和cd有

(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
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
// 首先选取数据并且对数据做标准化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分别表示平均位次。范例

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

用途:进行数值统计计算。 参数:

返回:处理后的结果值。

范例

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个时使用范例
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

用途:多元统计分析相关函数。 参数:

返回:处理后的结果值。

范例

A := Covariance(rand(4, 3));
return Cov2CorrMatrix(A);
CorrMatrixAdjust

用途:多元统计分析相关函数。 参数:

返回:处理后的结果值。

范例

A := Corr(rand(6, 6));
return CorrMatrixAdjust(A, 1, 5);
corr_Kendall

用途:多元统计分析相关函数。 参数:

返回:处理后的结果值。

范例

x := array(3, 8, 4, 7, 2);
y := array(5, 10, 8, 10, 6);
return corr_Kendall(x, y);

结果0.7379

HISTC

用途:多元统计分析相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:回归相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:回归相关函数。 参数:

返回:处理后的结果值。

范例

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代码:

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-StatWald统计量

Z-StatWald统计量的平方根

P-Value卡方检验p值即接受零假设的临界值

Hypothesis是否通过检验0或1参考Regress_Binary Regress_CMLS Regression

####### Regression

用途:回归相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:回归相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:回归相关函数。 参数:

返回:处理后的结果值。

范例

判断股票涨幅与各财务指标的相关系

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

用途:回归相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:回归相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:回归相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:回归相关函数。 参数:

返回:处理后的结果值。

范例

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

范例

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

范例

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+μii=1,2,3,...,n

用矩阵形式表示为:

Y=Xβ+μ

其中ββ为系数矩阵Y为因变量的n个观测值组成的n×1的列向量X为一个n×(k+1)的矩阵。

一般的多元线性回归中,假设满足最小二乘回归的经典假设时,β系数的计算公式为:

β=(XX)-1 XY

但是当误差项μ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范例

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

使用极大似然法估计模型中的各个参数:

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);

下面我们继续看看样本内的误判率:

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

范例

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

用途:回归相关函数。 参数:

返回:处理后的结果值。

范例

// 对序列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

用途:回归相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:回归相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:回归相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:回归相关函数。 参数:

返回:处理后的结果值。

范例

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|之间存在系统关系,异方差问题存在。范例

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

用途:回归相关函数。 参数:

返回:处理后的结果值。

范例

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范例

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

用途:回归相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:回归相关函数。 参数:

返回:处理后的结果值。

范例

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

用途:回归相关函数。 参数:

返回:处理后的结果值。

范例

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

范例

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

用途:回归相关函数。 参数:

返回:处理后的结果值。

范例

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

残差标准化得到uu=e/tunessqrt1-h

tune为默认调节常数

s为尺度因子s=medianabse0-mediane00.6745

h为杠杆向量H=X(XTX)-1XTh为H的对角线元素

使用加权函数wfunx求出权重向量W其第i个元素为wi=w(ui0)

利用β=(XTWX)-1XTWY求得β(1)代替β(0)求得新残差e

返回步骤2依次迭代计算β(i)当相邻两步的回归系数的差的绝对值的最大值小于预先设定的标准误差时迭代结束即max?β(i)-β(i-1)<ε范例

x := 1 -  > 100;
y := 3 * x + 100;
y[:5] := 1000;
return robustfit_M(y, x, 0.05, 1, 'andrews', 1.339);

####### Regress_GRStest

用途:回归相关函数。 参数:

返回:处理后的结果值。

范例

// 截距项矩阵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相应位置上的值然后两者进行矩阵的左除范例

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利用最小二乘法进行回归得到系数矩阵范例

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的数组范例

x := array(0.00, 1.00, 2.00);
return SingleLinearRegression_CallBack(x);
// 结果:

####### 多项式回归

######## 内容

  • PolynomialRegression

######## PolynomialRegression

算法

(1)计算每个X对应的由0到M为指数的指数函数值F

(2)运用最小二乘方法进行回归得到系数矩阵;范例

x := array(0.00, 1.00, 2.00);
y := array(1.00, 2.00, 3);
return PolynomialRegression(x, y, 1);
// 结果:

####### 多元回归

######## 内容

  • MultipleRegression
  • 中间函数

######## MultipleRegression

算法

采用字符串的方式调用CallBack函数得到F运用最小二乘法进行回归得到系数矩阵范例

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中取自然对数后的值的数组范例

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的取值的数组范例

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)运用最小二乘方法进行回归得到系数矩阵;范例

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)运用最小二乘方法进行回归得到系数矩阵;范例

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的数值范例

X := array(1.00, -5.00, 6.00);
return SingleUnLineralRegression_CallBack(X);
// 结果:

######## 多项式回归

######### 内容

  • PolynomialRegression_Pgm

######### PolynomialRegression_Pgm

算法

(1)计算每个X对应的由0到M为指数的指数函数值F

(2)运用最小二乘方法进行回归得到系数矩阵;范例

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)运用最小二乘方法进行回归得到系数矩阵;范例

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)运用最小二乘方法进行回归得到系数矩阵;范例

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的数组范例

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

用途:灰色系统相关函数。 参数:

返回:处理后的结果值。

范例

初值化:代码如下

x := array((1, 2, 3), (2, 3, 4));
un := array();
return GM_Initial(x, "ini", un);

均值化:

TSL代码如下

x := array((1, 2, 3), (2, 3, 4));
un := array();
return GM_Initial(x, "mean", un);

按行区间值化

TSL代码如下

x := array((1, 2, 3), (2, 3, 4));
un := array();
return GM_Initial(x, "rrange", un);

归一化

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

用途:灰色系统相关函数。 参数:

返回:处理后的结果值。

范例

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代码如下

x := array(1, 2, 3, 4);
return GM_AGO(x, "add", 2);
  1. 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

用途:灰色系统相关函数。 参数:

返回:处理后的结果值。

范例

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代码如下

x := array((1, 2, 3), (2, 3, 4));
return GM_Scorr(x, "abs");

灰色相对关联度: TSL代码如下

x := array((1, 2, 3), (2, 3, 4));
return GM_Scorr(x, "ret");

灰色综合关联度: 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和主因子对应的特征根获得主因子及其得分范例

// 设置样本矩阵
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=0m=n-1;

从nI=0到m-1进行循环将nI的值赋值给数组z对应下标为nI的值当k<m时进行以下步骤

j=m-1m=0从i=k到j进行循环若以i为下标对应p的值大于以i+1为下标对应p的值把两者的值调换位置令m=i并把对应的下标取值在数组z中进行同样的调换

j=k+1k=0从i=m到j进行递减循环若以i-1为下标对应p的值大于以i为下标对应p的值把两者的值调换位置令k=i并把对应的下标取值在数组z中进行同样的调换范例

p := array(2.72, 1.24, 1.31, 0.02, 0.88, 2.18);
return mbbub(p, z);

####### ComponentScoreMatrix

用途:主成分分析相关函数。 参数:

返回:处理后的结果值。

算法

将Cm进行转置得到CmT获得R的逆矩阵rinv将两个矩阵经过矩阵的乘法得到矩阵t将t进行转置获得tT范例

// 设置样本矩阵
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));
zT_s := Standarize_II(zT); // 标准化
mt_Transposition(zT_s, Z); // 转置
R := CorrelationMatrix(Z); // 相关系数矩阵
Eigen_Jacobi(R, EigenValue, EigenVector); // 特征值&特征向量
Cm := ComponentMatrix(EigenValue, EigenVector, MaxEigenValue); // 载荷矩阵
return ComponentScoreMatrix(Cm, R);
// 结果:

####### FactorScoreMatrix

用途:主成分分析相关函数。 参数:

返回:处理后的结果值。

算法

将Cs和Z进行转置得到CmT和zT将两个矩阵经过矩阵的乘法得到矩阵r将r进行转置获得rT范例

// 设置样本矩阵
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));
zT_s := Standarize_II(zT); // 标准化
mt_Transposition(zT_s, Z); // 转置
R := CorrelationMatrix(Z); // 相关系数矩阵
Eigen_Jacobi(R, EigenValue, EigenVector); // 特征值&特征向量
Cm := ComponentMatrix(EigenValue, EigenVector, MaxEigenValue); // 载荷矩阵
Cs := ComponentScoreMatrix(Cm, R); // 因子得分矩阵
return FactorScoreMatrix(Cs, zt);
// 结果:

####### Eastrq

####### ComponentMatrix

用途:主成分分析相关函数。 参数:

返回:处理后的结果值。

算法

计算特征根开平方根乘以对应位置的特征向量得到数组Z;

将数组Z进行转置得到矩阵ZT对特征根进行排序按照从小到大的顺序找到特征根的累计方差贡献率大于或等于85%为止对应在数组ZT的值得到矩阵R转置得到RT范例

// 设置样本矩阵
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));
zT_s := Standarize_II(zT); // 标准化
mt_Transposition(zT_s, Z); // 转置
R := CorrelationMatrix(Z); // 相关系数矩阵
Eigen_Jacobi(R, EigenValue, EigenVector); // 特征值&特征向量
return ComponentMatrix(EigenValue, EigenVector, MaxEigenValue);
// 结果:

####### RotatedComponentMatrix

用途:主成分分析相关函数。 参数:

返回:处理后的结果值。

算法

计算相对方差,然后把矩阵进行规范化,最后进行方差的最大旋转范例

// 设置样本矩阵
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));
zT_s := Standarize_II(zT); // 标准化
mt_Transposition(zT_s, Z); // 转置
R := CorrelationMatrix(Z); // 相关系数矩阵
Eigen_Jacobi(R, EigenValue, EigenVector); // 特征值&特征向量
Cm := ComponentMatrix(EigenValue, EigenVector, MaxEigenValue); // 载荷矩阵
return RotatedComponentMatrix(Cm);
// 结果:

####### Eigen_Jacobi

用途:主成分分析相关函数。 参数:

返回:处理后的结果值。

####### GetEigenValue

算法

将数组a行下标与列下标相同对应的值赋值给EigenValue

####### FScoreResult

用途:主成分分析相关函数。 参数:

返回:处理后的结果值。

算法

通过矩阵的乘法获得矩阵F矩阵F的第一列为数组R的第一项数组R的其他项为矩阵FactorArr的值范例

// 设置样本矩阵
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));
zT_s := Standarize_II(zT); // 标准化
mt_Transposition(zT_s, Z); // 转置
R := CorrelationMatrix(Z); // 相关系数矩阵
Eigen_Jacobi(R, EigenValue, EigenVector); // 特征值&特征向量
Cm := ComponentMatrix(EigenValue, EigenVector, MaxEigenValue); // 载荷矩阵
Cs := ComponentScoreMatrix(Cm, R); // 因子得分系数矩阵
FArr := FactorScoreMatrix(Cs, zT_s); // 样本公共因子得分
return FScoreResult(FArr, MaxEigenValue);
// 结果:
时间序列分析
内容
  • Time_Diff
  • Time_AutoCov
  • Time_ACF
  • Time_PACF
  • Time_RandomTest
  • Time_DanielTest
  • AR
  • ARMA
  • Time_ARCH
  • Time_GARCH
  • Times_ADFTest
  • Times_Cointergration_test
  • Times_ECM
  • Times_Granger
  • Time_ARp
  • Time_MAq
  • Time_ARMA
  • Time_GreenFun
  • Time_InvFun
  • Time_Analyse
  • Time_ChoseP
  • Times_Cointergration
  • GM_Estimate
  • Time_ARCHTest
  • GarchFit
  • Times_johansen
  • Times_GrangerCausality
  • 因果推断
Time_Diff

用途:日期时间处理函数。 参数:

返回:日期或时间值。

范例

A := rand(100, 10);
return Time_Diff(A, 1); // 得到A的一阶差分

参考diff

Time_AutoCov

用途:日期时间处理函数。 参数:

返回:日期或时间值。

范例

y := array(64.00, 60.00, 60.1, 59.95, 61.5, 71.5, 75.05, 77.5, 73.2, 75.3);
L := 5;
return Time_AutoCov(y, L);
// 结果:-2.1
Time_ACF

用途:日期时间处理函数。 参数:

返回:日期或时间值。

算法

其中N为序列x的长度为序列x的均值k为滞后阶数。范例

y := array(64.00, 60.00, 60.1, 59.95, 61.5, 71.5, 75.05, 77.5, 73.2, 75.3);
return Time_ACF(y);

array(1.00,0.7607,0.4403,0.0142,-0.2972,-0.4878,-0.4229,-0.284,-0.1641,-0.0593)参考Time_PACF Time_RandomTest AR ARMA

Time_PACF

用途:日期时间处理函数。 参数:

返回:日期或时间值。

范例

y := array(64.00, 60.00, 60.1, 59.95, 61.5, 71.5, 75.05, 77.5, 73.2, 75.3);
return Time_PACF(y);

array(1.00,0.7607,-0.3281,-0.4815,-0.0442,-0.0491,0.2401,-0.1081,-0.4253,0.027)参考Time_ACF Time_RandomTest AR ARMA

Time_RandomTest

用途:日期时间处理函数。 参数:

返回:日期或时间值。

范例

y := randNorm(0, 1, 200);
m := 6;
alpha := 0.05;
return Time_RandomTest(y, m, alpha);

结果表明序列为纯随机序列参考Time_ACF Time_PACF AR ARMA

Time_DanielTest

用途:日期时间处理函数。 参数:

返回:日期或时间值。

范例

检验上证指数的平稳性

SetSysParam(pn_date(), inttodate(20101222));
N := 40;
SetSysParam(pn_stock(), "SH000001");
y := Nday3(N, StockZf3());
alpha := 0.05;
return Time_DanielTest(y, alpha);

表示日期20101222推前总共40个数据的上证指数为平稳序列参考Times_ADFTest Times_Cointergration_test Times_ECM

AR

用途:时间序列分析相关函数。 参数:

返回:处理后的结果值。

范例

elps := Randnorm(0, 1, 200);
y := array();
y[0] := 0;
y[1] := 0;
for i := 2 to 199 do y[i] := -0.5 * y[i - 1] + 0.3 * y[i - 2] + elps[i];
return AR(y, 2, 'ls');

参考Time_ACF Time_PACF Time_RandomTest ARMA

ARMA

用途:时间序列分析相关函数。 参数:

返回:处理后的结果值。

范例

elps := randnorm(0, 1, 200);
y := array();
y[0] := 0;
for i := 1 to 199 do y[i] := 0.8 * y[i - 1] + elps[i] - 0.4 * elps[i - 1];
return ARMA(y, 1, 1);

参考Time_ACF Time_PACF Time_RandomTest AR

Time_ARCH

用途:日期时间处理函数。 参数:

返回:日期或时间值。

范例

// 以招商银行(收益率)为例用ARCH(q)预测2008-6-20的波动率//
SetSysParam(pn_stock(), "SH600036");
SetSysParam(pn_date(), inttodate(20080619));
N := TradeDays(IntToDate(20070101), IntToDate(20080619));
r := Nday3(N, StockLnZf3());
q := 1;
l := 1;
return Time_ARCH(r, q, l);

参考AR ARMA Time_GARCH Time_ARCHTest

Time_GARCH

用途:日期时间处理函数。 参数:

返回:日期或时间值。

范例

// 以招商银行(收益率)为例用GARCH(1,1)预测2008-6-20的波动率
setsysparam(PN_Precision(), -1);
SetSysParam(pn_stock(), "SH600036");
SetSysParam(pn_date(), inttodate(20080619));
N := TradeDays(IntToDate(20070101), IntToDate(20080619));
rseries := Nday3(N, StockLnZf3());
Model := "GARCH";
return Time_GARCH(rseries, Model);

参考AR ARMA Time_ARCH Time_ARCHTest

Times_ADFTest

用途:日期时间处理函数。 参数:

返回:日期或时间值。

范例

// 检验上证指数的平稳性(是否存在单位根)(结果可参照eviews)
SetSysParam(pn_date(), inttodate(20101222));
N := 40;
SetSysParam(pn_stock(), "SH000001");
y := Nday3(N, StockZf3());
diff := 0; // 不进行差分运算//
style := 0; // 类型为无常数项和趋势项//
F := "SBIC";
p := 1; // 滞后阶数为1阶//
return Times_ADFTest(y, diff, style, F, p, 0.05);

统计量的绝对值都大于临界值的绝对值所以2010-12-22推前总共40个数据的上证指数在5%的显著性水平下为平稳序列即不存在单位根参考Times_Cointergration_test Times_ECM Times_Granger

Times_Cointergration_test

用途:日期时间处理函数。 参数:

返回:日期或时间值。

范例

SetSysParam(PN_Rate(), 1);
SetSysParam(pn_date(), inttodate(20120918));
SetSysParam(PN_Cycle(), cy_day());
SetSysParam(pn_Rateday(), -1);
SetSysParam(pn_stock(), "SH600036");
close1 := nday3(500, close());
SetSysParam(pn_stock(), "SH600000");
close2 := nday3(500, close());
return Times_Cointergration_test(close1, close2, 1, 0.05, 1, "AIC");

协整通过参考Times_ADFTest Times_ECM Times_Granger

Times_ECM

用途:日期时间处理函数。 参数:

返回:日期或时间值。

范例

SetSysParam(PN_Rate(), 1);
SetSysParam(pn_date(), inttodate(20120918));
SetSysParam(PN_Cycle(), cy_day());
SetSysParam(pn_Rateday(), -1);
SetSysParam(pn_stock(), "SH600036");
close1 := nday3(500, close());
SetSysParam(pn_stock(), "SH600000");
close2 := nday3(500, close());
ret := Times_Cointergration_test(close1, close2, 1, 0.05, 1, "AIC");
resid := ret["resid"];
return Times_ECM(close1, close2, resid, 0.05, 2, 2);

ECM项为负结果表明上证指数与深证综指存在长期稳定的协整关系可在短期内保持均衡参考Times_ADFTest Times_Cointergration_test Times_Granger

Times_Granger

用途:日期时间处理函数。 参数:

返回:日期或时间值。

范例

// 判断序列y与x的Granger因果关系可选择滞后的阶数q(结果可参照eviews)
y := array(7.54676829158648, 7.54414161372032, 7.58345615393818, 7.60165217843263, 7.61018920393381, 7.64528769816112, 7.6195966295892, 7.63970000624999, 7.61661831598208, 7.57774129868065, 7.58292686220974, 7.58832874061354, 7.58924477198461, 7.6087168475262, 7.61009012340108, 7.59476365558267, 7.54814493579901, 7.53037269335155, 7.52424817135246, 7.52376220234772, 7.52320034387805, 7.51366014679793, 7.50703673600832);
x := array(4.15888308335967, 4.0943445622221, 4.09600984154116, 4.09351088147352, 4.11903717481247, 4.26969744969996, 4.25561270981822, 4.31815455807947, 4.3502779363593, 4.29319542096727, 4.32148013480585, 4.33729074083249, 4.35926964755127, 4.37197629882038, 4.36691299686383, 4.32941668440158, 4.29045944114839, 4.28634138453947, 4.28634138453947, 4.28634138453947, 4.30203600897739, 4.30135873160643, 4.29864502573483);
q := 2;
alpha := 0.05;
return Times_Granger(y, x, q, alpha);

表示X是Y的Granger原因参考Times_ADFTest Times_Cointergration_test Times_ECM

Time_ARp

用途:日期时间处理函数。 参数:

返回:日期或时间值。

范例

elps := Randnorm(0, 1, 200);
y := array();
y[0] := 0;
y[1] := 0;
for i := 2 to 199 do y[i] := -0.5 * y[i - 1] + 0.3 * y[i - 2] + elps[i];
return Time_ARp(y, 2, 0);;

参考AR ARMA

Time_MAq

用途:日期时间处理函数。 参数:

返回:日期或时间值。

范例

{已知一个MA模型通过产生样本去模拟MA模型求出拟合系数再跟原模型系数比较}
elps := Randnorm(0, 1, 200);
y := array();
y[0] := 0;
y[1] := 0;
for i := 2 to 199 do y[i] := elps[i] - 0.9 * elps[i - 1] + 0.3 * elps[i - 2];
return Time_MAq(y, 2, 0);

参考AR ARMA

Time_ARMA

用途:日期时间处理函数。 参数:

返回:日期或时间值。

范例

{已知一个ARMA模型通过产生样本去模拟ARMA模型求出拟合系数再跟原模型系数比较}
elps := Randnorm(0, 1, 200);
y := array();
y[0] := 0;
for i := 1 to 199 do y[i] := 0.8 * y[i - 1] + elps[i] - 0.4 * elps[i - 1];
return Time_ARMA(y, 1, 1, 0);

参考AR ARMA

Time_GreenFun

用途:日期时间处理函数。 参数:

返回:日期或时间值。

范例

Ap := array(1, -0.5);
Mq := array(0);
return Time_GreenFun(Ap, Mq);

参考AR ARMA

Time_InvFun

用途:日期时间处理函数。 参数:

返回:日期或时间值。

范例

x := array(64, 60, 59, 50, 67, 45);
y := array(34, 23);
return Time_InvFun(x, y);

参考AR ARMA

Time_Analyse

用途:日期时间处理函数。 参数:

返回:日期或时间值。

范例

{以招商银行(日收盘价)为例用AR、MA或ARMA建模并预测2008 - 6 - 20的收盘价及波动值 / }
SetSysParam(pn_stock(), "SH600036");
SetSysParam(Pn_Cycle(), cy_day());
SetSysParam(pn_date(), inttodate(20080619));
N := TradeDays(IntToDate(20070601), IntToDate(20080619));
r := Nday3(N, close());
Model := "ARMA";
// 调用Time_Analyse模型根据已知条件建立确定的模型//
case Model of
    "AR":begin
        p := 1;q := 0;l := 1;
    end;
    "MA":begin
        p := 0;q := 1;l := 1;
    end;
    "ARMA":begin
        p := 1;q := 1;l := 1;
    end;
end;
return Time_Analyse(r, Model, p, q, l);

参考AR ARMA

Time_ChoseP

用途:日期时间处理函数。 参数:

返回:日期或时间值。

范例

x := array(64, 60, 59, 50, 67, 45);
return Time_ChoseP(x, "AR", "SBIC");
// 结果1

x := array(64, 60, 59, 50, 67, 45);
return Time_ChoseP(x, "MA", "SBIC");
// 结果2

x := array(64, 60, 59, 50, 67, 45);
return Time_ChoseP(x, "ARMA", "AIC");
// 结果2

参考AR ARMA

Times_Cointergration

用途:日期时间处理函数。 参数:

返回:日期或时间值。

范例

// 判断上证指数与深证综指(对数收益率)的协整关系(结果可参照eviews)
SetSysParam(pn_date(), inttodate(20100730));
N := 20;
SetSysParam(pn_stock(), "SH000001");
y := Nday3(N, StockZf3());
SetSysParam(pn_stock(), "SZ399106");
x := Nday3(N, StockZf3());
alpha := 0.05;
return Times_Cointergration(y, x, alpha);

参考Times_Cointergration_test

GM_Estimate

用途:时间序列分析相关函数。 参数:

返回:处理后的结果值。

范例

x := array(1, 2, 3, 4);
return GM_Estimate(x, 2);

参考GM_Initial GM_Corr GM_AGO GM_Icorr GM_Scorr

Time_ARCHTest
  • Time_Diff
  • Time_AutoCov
  • Time_ACF
  • Time_PACF
  • Time_RandomTest
  • Time_DanielTest
  • AR
  • ARMA
  • Time_ARCH
  • Time_GARCH
  • Times_ADFTest
  • Times_Cointergration_test
  • Times_ECM
  • Times_Granger
  • Time_ARp
  • Time_MAq
  • Time_ARMA
  • Time_GreenFun
  • Time_InvFun
  • Time_Analyse
  • Time_ChoseP
  • Times_Cointergration
  • GM_Estimate
  • Time_ARCHTest
  • GarchFit
  • Times_johansen
  • Times_GrangerCausality
  • 因果推断
GarchFit

用途:时间序列分析相关函数。 参数:

返回:处理后的结果值。

范例

以1995年1月至2000年8月日元兑换美元汇率值序列JPY如图8-9为例介绍怎样用天软来进行ARCH建模序列共1427个值

图8-9日元兑换美元汇率值(JPY)序列图8-10DJPY时间序列

JPY序列显然是一个非平稳时间序列对JPY进行差分DJPY表示收益见图8-10因为DJPY是一个平稳时间序列应该使用DJPY建立时间序列模型。按照ARMA模型中讲的那样对DJPY拟合ARMA模型根据自相关系数以及偏自相关系数AIC准则等我们最终将模型定为AR(3)模型。

dJPY := diff(JPY);

m := mean(dJPY);

dJPY := dJPY-m;

ret := ARMA(dJPY,3,0);

得到的结果是:

图8-11 AR(3)残差

该模型的残差如图8-11所示我们怀疑残差含有异方差使用Time_ARCHTest函数检验。

Time_ARCHTest(ret["e"],1,0.05);

图8-12 AR(3)残差

拒绝原假设认为模型含有异方差建立ARCH模型首先建立ARCH(7)模型(尝试多次最大滞后选为7为宜)。

图8-13ARCH模型结果图8-14异方差估计情况

modelspec:= array(

("R":3,

"M":0,

"AR":NIL,

"MA":NIL,

"Regress":NIL,

"VarianceModel":"GARCH",

"C":nan,

"P":0,

"Q":7,

"GARCH":array(),

"ARCH":array(),

"Leverage":NIL));

t := garchfit(ModelSpec,dJPY);

得到的异方差如图8-14。ARCH模型中的的滞后项太多应该尝试建立GARCH(1,1)模型:

modelspec := array(

("R":3,

"M":0,

"AR":NIL,

"MA":NIL,

"Regress":NIL,

"VarianceModel":"GARCH",

"C":nan,

"P":1,

"Q":1,

"GARCH":array(),

"ARCH":array(),

"Leverage":NIL));

t := garchfit(ModelSpec,dJPY);

图8-15GARCH模型结果图8-16方差估计情况

Times_johansen
  • Time_Diff
  • Time_AutoCov
  • Time_ACF
  • Time_PACF
  • Time_RandomTest
  • Time_DanielTest
  • AR
  • ARMA
  • Time_ARCH
  • Time_GARCH
  • Times_ADFTest
  • Times_Cointergration_test
  • Times_ECM
  • Times_Granger
  • Time_ARp
  • Time_MAq
  • Time_ARMA
  • Time_GreenFun
  • Time_InvFun
  • Time_Analyse
  • Time_ChoseP
  • Times_Cointergration
  • GM_Estimate
  • Time_ARCHTest
  • GarchFit
  • Times_johansen
  • Times_GrangerCausality
  • 因果推断
Times_GrangerCausality

用途:日期时间处理函数。 参数:

返回:日期或时间值。

范例

只说明该函数的用法不考虑实际背景应用我们继续使用招商银行浦发银行的收盘价数据来做Granger因果检验。

return Times_GrangerCausality(close1|close2, 2);

array(("result":0,"cause":1,"F-Stat":123.8121,"P-Value":0.00),

("result":1,"cause":0,"F-Stat":1.5181,"P-Value":0.2201))

1是0的Granger原因0不是1的Granger原因。即浦发银行是招商银行股价波动的原因。

因果推断

####### 内容

  • Time_VolatilitySpillover

####### Time_VolatilitySpillover

范例见Demo_Time_VolatilitySpillover_01

优化
内容
  • NonLP_Hooke_Jeeves
  • Prog_L
  • NonLP_minPS
  • NonLP_Fibonacci
  • NonLP_Range
  • Fmin
  • NonLP_BSearch
  • Prog_M
  • NonLP_minFactor
  • NonLP_GP
  • NonLP_Fminsearch
  • NonLP_Fmincon
  • NonLP_minSUMT
  • Prog_Q
  • Prog_N
  • NonLP_Nelder
  • NonLP_Fminbnd
  • NonLP_Golden
  • TSOptimizer
  • Quadprog
  • LinearProgramming
  • NonLP_Rosenbrock
  • QuadLagR
  • OZProg
  • 有约束优化算法
  • 无约束优化算法
  • 测试
  • QuadTrackRoute
  • IntLinProg
NonLP_Hooke_Jeeves

用途:优化相关函数。 参数:

返回:处理后的结果值。

范例

目标:

function obj(x);
begin
    return 3 * x[0] ^ 2 + x[1] ^ 2 - 2 * x[0] * x[1] + 4 * x[0] + 3 * x[1];
end;

函数求解:

x0 := array(1, 1); // 初始值;
return ret := NonLP_Hooke_Jeeves("obj", x0, 0.2);

参考NonLP_Fminsearch NonLP_Nelder NonLP_Rosenbrock

Prog_L

用途:优化相关函数。 参数:

返回:处理后的结果值。

范例

f := array(-2, -3);
a := array((1, 2), (4, 0), (0, 4)); // 二维数组
b := array(-2, 6, 2); // 一维数组
aeq := array(); // 二维数组
beq := array(); // 一维数组
lb := array(); // 一维数组
ub := array(); // 一维数组
// options := array(); // 算法设置采用默认精度
ozarr := array(0); // 设置第0 个变量为0 or1
intarr := array(); // 整数约束为空;
x0 := array(1, 2);
ret := Prog_L(f, a, b, aeq, beq, lb, ub, x0, options, ozarr, intarr);
return ret;

参考Prog_Q Prog_N Prog_M NonLP_Fminsearch NonLP_Fminbnd

NonLP_minPS

用途:进行数值统计计算。 参数:

返回:处理后的结果值。

范例

{线性不等式约束
x[0] + x[1] <= 3;
4 * x[0] + x[1] <= 9; }
A := array((1, 1), (4, 1));
B := array(3, 9);
// 初始值S
X0 := array(1, 1);
// 分别设置的变量,约束条件,目标函数的迭代精度;不设置采用默认值
return NonLP_minPS('obj', x0, A, B, 'constr');

目标函数

function obj(x);
begin
    return 2 * x[0] ^ 2 - 4 * x[0] * x[1] + 4 * x[1] ^ 2 - 6 * x[0] - 3 * x[1];
end;

非线性约束:

function constr(x);
begin
    ne := array();
    e := array();
    ne[0] := x[0] + x[1] ^ 2 - 5; // x[0]+x[1]^2<5非线性不等式约束
    return array(ne, e);
end;

参考Prog_N Fmin NonLP_minSUMT NonLP_minFactor NonLP_Fmincon

NonLP_Fibonacci

用途:优化相关函数。 参数:

返回:处理后的结果值。

范例

// 目标函数
function obj(x);
begin
    return a ^ 2 - 5 * a + 8;
end;

求解最小值:

A := 1; // 下界;
B := 7; // 上界;
return ret := NonLP_Fibonacci("obj", 1, 7);

参考NonLP_Fminbnd NonLP_Golden NonLP_GP NonLP_Range NonLP_BSearch

NonLP_Range

用途:优化相关函数。 参数:

返回:处理后的结果值。

范例

目标:

function obj(x);
begin
    return 3 * x[0] ^ 2 + x[1] ^ 2 - 2 * x[0] * x[1] + 4 * x[0] + 3 * x[1];
end;

函数求解:

x0 := array(1, 1); // 初始值;
return ret := NonLP_Range("obj", x0, 0.2);

参考NonLP_Fminbnd NonLP_BSearch NonLP_Golden NonLP_Fibonacci NonLP_GP

Fmin

用途:进行数值统计计算。 参数:

返回:处理后的结果值。

范例

Find values of x that minimize

f(x) = x1x2x3, starting at the point x = [10;10;10],

subject to the constraints:

0 ≤ x1 + 2x2 + 2x3 ≤ 72.

TSL代码

fun := "Fmin_FunCall"; // 回调目标函数
x0 := array(10, 10, 10); // 初值
A := array((-1, -2, -2), (1, 2, 2)); // 线性不等式左边
B := array(0, 72); // 线性不等式右边
Aeq := array(); //
Beq := array(); //
lb := array();
ub := array();
nonlcon := ""; // 回调非线性约束为空
return Fmin(fun, x0, A, B, Aeq, Beq, lb, ub, nonlcon);

x1=24,x2=12,x3=12,最优值f(x)=-3456

回调函数:

Function Fmin_FunCall(x);

Begin

return -x[0]*x[2]*x[1];

End;参考Prog_N NonLP_minSUMT NonLP_minPS NonLP_minFactor NonLP_Fmincon

NonLP_BSearch

用途:优化相关函数。 参数:

返回:处理后的结果值。

范例

目标:

function obj(x);
begin
    return 3 * x[0] ^ 2 + x[1] ^ 2 - 2 * x[0] * x[1] + 4 * x[0] + 3 * x[1];
end;

函数求解:

x0 := array(1, 1); // 初始值;
return ret := NonLP_BSearch("obj", x0, 0.2);

参考NonLP_Fminbnd NonLP_Range NonLP_Golden NonLP_Fibonacci NonLP_GP

Prog_M

用途:优化相关函数。 参数:

返回:处理后的结果值。

范例

function UndefineFunc147(); // 主函数
begin
    goal := array(1, 1); // 目标约束
    wight := array(1, 0.5); // 目标权重
    // 线性等式约束
    aeq := array((1, 1, 1));
    beq := array(1);
    // 上下界约束
    lb := array(0, 0, 0);
    ub := array();
    // 初始值
    x0 := array(1, 1, 1);
    // 算法设定
    options := array('tolx':1.0e - 6, 'tolcon':1.0e - 6, 'tolfun':1.0e - 6);
    // 线性不等式约束
    A := array((1, 1), (4, 1));
    B := array(3, 9);
    return Prog_M('UndefineFunc147.obj', x0, goal, wight, a, b, aeq, beq, lb, ub, 'UndefineFunc147.cons', options);
end;
function obj(x); // 目标函数
begin
    f1 := -3 * x[0] - x[1] - 5 * x[2] + 6; // 目标1
    f2 := 3 * x[0] + 4 * x[1] + 5 * x[2] - 6; // 目标2
    f := array(f1, f2);
    return f;
end;
function cons(x); // 约束条件
begin
    c := array();
    c[0] := x[0] ^ 2 - x[1]; // x[0]^2<=x[1]; 不等式
    ceq := array();
    ceq[0] := x[0] ^ 2 - 0.1; // x[0]^2=0.1; 等式约束
    ceq[1] := x[1] ^ 2 - 0.3; // x[1]^2=0.3; 等式约束
    return array(c, ceq);
end;

参考Prog_L Prog_Q Prog_N NonLP_Fminsearch NonLP_Fminbnd

NonLP_minFactor

用途:进行数值统计计算。 参数:

返回:处理后的结果值。

范例

参考有约束非线性优化总函数NonLP_Fmincon的范例和参考

// 线性等式约束
AEQ := array();
BEQ := array();
// 初始值
x0 := array(1, 1);
// 分别设置的变量,约束条件,目标函数的迭代精度;不设置采用默认值
return NonLP_minFactor('obj', X0, AEQ, BEQ, 'constr');

目标函数

function obj(x);
begin
    return 2 * x[0] ^ 2 - 4 * x[0] * x[1] + 4 * x[1] ^ 2 - 6 * x[0] - 3 * x[1];
end;

非线性约束:

function constr(x);
begin
    ne := array();
    e := array();
    // ne[0]:= x[0]+x[1]^2-5; // x[0]+x[1]^2<5非线性不等式约束
    e[0] := x[1] ^ 2 + x[0] ^ 2 - 4; // x[1]^2=4非线性等式约束
    return array(ne, e);
end;

参考Prog_N Fmin NonLP_minSUMT NonLP_minPS NonLP_Fmincon

NonLP_GP

用途:优化相关函数。 参数:

返回:处理后的结果值。

范例

// 目标函数
function obj(x);
begin
    return a ^ 2 - 5 * a + 8;
end;

求解最小值:

A := 1; // 下界;
B := 7; // 上界;
return ret := NonLP_GP("obj", 1, 7);

参考NonLP_Fminbnd NonLP_Golden NonLP_Fibonacci NonLP_Range NonLP_BSearch

NonLP_Fminsearch

用途:进行数值统计计算。 参数:

返回:处理后的结果值。

范例

function UndefineFunc150();
begin
    x0 := array(1, 1); // 初始值;
    methods := 3; //
    return ret := NonLP_Fminsearch("UndefineFunc150.obj", x0, methods);
end;
function obj(x);
begin
    return 3 * x[0] ^ 2 + x[1] ^ 2 - 2 * x[0] * x[1] + 4 * x[0] + 3 * x[1];
end;

参考Prog_L Prog_Q Prog_N Prog_M NonLP_Fminbnd

NonLP_Fmincon

用途:进行数值统计计算。 参数:

返回:处理后的结果值。

范例

{线性不等式约束
x[0] + x[1] <= 3;
4 * x[0] + x[1] <= 9; }
A := array((1, 1), (4, 1));
B := array(3, 9);
// 线性等式约束
AEQ := array();
BEQ := array();
// 初始值
x0 := array(1, 1);
// 分别设置的变量,约束条件,目标函数的迭代精度;不设置采用默认值
return NonLP_Fmincon('obj', x0, a, b, aeq, beq, 'constr', 1);

目标函数

function obj(x);
begin
    return 2 * x[0] ^ 2 - 4 * x[0] * x[1] + 4 * x[1] ^ 2 - 6 * x[0] - 3 * x[1];
end;

非线性约束:

function constr(x);
begin
    ne := array();
    e := array();
    ne[0] := x[0] + x[1] ^ 2 - 5; // x[0]+x[1]^2<5非线性不等式约束
    e[0] := x[1] ^ 2 + x[0] ^ 2 - 4; // x[1]^2=4非线性等式约束
    return array(ne, e);
end;

参考Prog_N Fmin NonLP_minSUMT NonLP_minPS NonLP_minFactor

NonLP_minSUMT

用途:进行数值统计计算。 参数:

返回:处理后的结果值。

范例

{线性不等式约束
x[0] + x[1] <= 3;
4 * x[0] + x[1] <= 9; }
A := array((1, 1), (4, 1));
B := array(3, 9);
// 线性等式约束
AEQ := array();
BEQ := array();
// 初始值
x0 := array(1, 1);
// 分别设置的变量,约束条件,目标函数的迭代精度;不设置采用默认值
return NonLP_minSUMT('obj', X0, A, B, Aeq, Beq, 'constr', "NM");

目标函数

function obj(x);
begin
    return 2 * x[0] ^ 2 - 4 * x[0] * x[1] + 4 * x[1] ^ 2 - 6 * x[0] - 3 * x[1];
end;

非线性约束:

function constr(x);
begin
    ne := array();
    e := array();
    ne[0] := x[0] + x[1] ^ 2 - 5; // x[0]+x[1]^2<5非线性不等式约束
    e[0] := x[1] ^ 2 + x[0] ^ 2 - 4; // x[1]^2=4非线性等式约束
    return array(ne, e);
end;

参考Prog_N Fmin NonLP_minPS NonLP_minFactor NonLP_Fmincon

Prog_Q

用途:优化相关函数。 参数:

返回:处理后的结果值。

范例

H := array((2, 0), (0, 2)); // 二次项
f := array(-8, -10); // 一次项
A := array((3, 2));b := array(6); // 不等式约束
Aeq := array((1, 1));beq := array(2.54); // 等式约束
Lb := array(0, 0);
Ub := array(); // 上下界约束
ret := Prog_Q(h, f, a, b, aeq, beq, lb, ub);

参考Prog_L Prog_N Prog_M NonLP_Fminsearch NonLP_Fminbnd

Prog_N

用途:优化相关函数。 参数:

返回:处理后的结果值。

范例

function UndefineFunc149();
begin
    {线性不等式约束
    x[0] + x[1] <= 3;
    4 * x[0] + x[1] <= 9; }
    A := array((1, 1), (4, 1));
    B := array(3, 9);
    // 线性等式约束
    AEQ := array();
    BEQ := array();
    {上下界约束:
    0 < x[0];0 < x[1]
    x[0] < 5;x[1] < 5 }
    ub := array(5, 5);
    lb := array(0, 0);
    // 初始值
    x0 := array(1, 1);
    // 算法设定:
    options := array('tolx':1.0e - 6, 'tolcon':1.0e - 6, 'tolfun':1.0e - 6);
    // 分别设置的变量,约束条件,目标函数的迭代精度;不设置采用默认值
    return Prog_N('UndefineFunc149.obj', x0, a, b, aeq, beq, lb, ub, 'UndefineFunc149.constr', options);
end;
// 目标函数
function obj(x);
begin
    return 2 * x[0] ^ 2 - 4 * x[0] * x[1] + 4 * x[1] ^ 2 - 6 * x[0] - 3 * x[1];
end;
// 非线性约束:
function constr(x);
begin
    ne := array();
    e := array();
    ne[0] := x[0] + x[1] ^ 2 - 5; // x[0]+x[1]^2<5非线性不等式约束
    e[0] := x[1] ^ 2 + x[0] ^ 2 - 4; // x[1]^2=4非线性等式约束
    return array(ne, e);
end;

参考Prog_L Prog_Q Prog_M NonLP_Fminsearch NonLP_Fminbnd

NonLP_Nelder

用途:优化相关函数。 参数:

返回:处理后的结果值。

范例

目标:

function obj(x);
begin
    return 3 * x[0] ^ 2 + x[1] ^ 2 - 2 * x[0] * x[1] + 4 * x[0] + 3 * x[1];
end;

函数求解:

x0 := array(1, 1); // 初始值;
methods := 3; //
return ret := NonLP_Nelder("obj", x0, 0.2);

参考NonLP_Fminsearch NonLP_Hooke_Jeeves NonLP_Rosenbrock

NonLP_Fminbnd

用途:进行数值统计计算。 参数:

返回:处理后的结果值。

范例

目标:

function obj(x);

begin

return a^2-5*a+8;

End;

A := 1 ;//下界;

B := 7;//上界;

methods :=0;//

Return ret := NonLP_Fminbnd("obj",a,b,methods);

参考Prog_L Prog_Q Prog_N Prog_M NonLP_Fminsearch

NonLP_Golden

用途:优化相关函数。 参数:

返回:处理后的结果值。

范例

// 目标函数
function obj(x);
begin
    return a ^ 2 - 5 * a + 8;
end;

求解最小值:

A := 1; // 下界;
B := 7; // 上界;
return ret := NonLP_Golden("obj", 1, 7);

参考NonLP_Fminbnd NonLP_Fibonacci NonLP_GP NonLP_Range NonLP_BSearch

TSOptimizer

范例

obj := createobject("testopt");
obj.fx0 := array(1, 1); // 初始值
obj.flb := array(0, 0); // 设置下界
obj.fub := array(5, 5); // 设置上界
obj.foptions := array('tolx':1.0e - 6, 'tolcon':1.0e - 6, 'tolfun':1.0e - 6); // 设置计算参数
obj.prog();
return obj.fresult;
type testopt = class(tsoptimizer)
function obj(x); virtual; // 重写目标
begin
    return 2 * x[0] ^ 2 - 4 * x[0] * x[1] + 4 * x[1] ^ 2 - 6 * x[0] - 3 * x[1];
end;
function con(x);virtual; // 重写约束
begin
    ne := array();
    e := array();
    ne[0] := x[0] + x[1] ^ 2 - 5;
    e[0] := x[1] ^ 2 + x[0] ^ 2 - 4;
    return array(ne, e);
end;
end;
Quadprog

用途:优化相关函数。 参数:

返回:处理后的结果值。

范例

Find x that minimize

f(x) = 1/2x1^2+x2^2-x1x2-2x1-6x2

subject to

x1 + x2 ≤ 2

x1 + 2x2 ≤ 2

2x1 + x2 ≤ 3

0 ≤ x1, 0 ≤ x2.

TSL代码

H := array((1, -1), (-1, 2));
f := array(-2, -6);
A := array((1, 1), (-1, 2), (2, 1));
B := array(2, 2, 3);
Aeq := array();
Beq := array();
return Quadprog(H, f, A, B, Aeq, Beq);
// 结果: x1=0.6667,x2=1.3333,f(x)=-8.2222

参考Prog_Q QuadTrackRoute QuadLagR

LinearProgramming

用途:进行数值统计计算。 参数:

返回:处理后的结果值。

范例

Find x that minimizes

f(x) = 5x1 4x2 6x3,

subject to

x1 x2 + x3 ≤ 20

3x1 + 2x2 + 4x3 ≤ 42

3x1 + 2x2 ≤ 30

0 ≤ x1, 0 ≤ x2, 0 ≤ x3.

TSL代码

f := array(-5, -4, -6);
A := array((1, -1, 1), (3, 2, 4), (3, 2, 0));
B := array(20, 42, 30);
Aeq := array();
Beq := array();
return LinearProgramming(f, A, B, Aeq, Beq);
// 结果x1=0,x2=15,x3=3,f(x)=-78

参考Prog_L IntLinProg OZProg

NonLP_Rosenbrock

用途:优化相关函数。 参数:

返回:处理后的结果值。

范例

目标:

function obj(x);
begin
    return 3 * x[0] ^ 2 + x[1] ^ 2 - 2 * x[0] * x[1] + 4 * x[0] + 3 * x[1];
end;

函数求解:

x0 := array(1, 1); // 初始值;
return ret := NonLP_Rosenbrock("obj", x0, 0.2);

参考NonLP_Fminsearch NonLP_Nelder NonLP_Hooke_Jeeves

QuadLagR

用途:优化相关函数。 参数:

返回:处理后的结果值。

范例

Find x that minimize

f(x) = 2x1^2+x2^2+x1x2-x1-x2

subject to

x1 + x2 = 1

TSL代码

H := array((4, 1), (1, 2));
f := array(-1, -1);
Aeq := array((1, 1));
Beq := array(1);
return QuadLagR(H, f, Aeq, Beq);

结果解析x1=0.25,x2=0.75,最小值f(x)=-0.125参考Prog_Q Quadprog QuadTrackRoute

OZProg

用途:优化相关函数。 参数:

返回:处理后的结果值。

范例

Find x that Maximum

f(x) =3x1-2x2+5x3

subject to

x1+2x2-x3≤ 2

x1 + 4x2+x3≤ 4

x1 + x2≤ 3

4x1 +x3≤ 6

x1,x2,x3=0或1

TSL代码

f := array(-3, 2, -5);
A := array((1, 2, -1), (1, 4, 1), (1, 1, 0), (4, 0, 1));
B := array(2, 4, 3, 6);
return OZProg(f, A, B);
// 结果x1=1,x2=0,x3=1,f(x)=-8

参考Prog_L LinearProgramming IntLinProg

有约束优化算法

####### 内容

  • SUMT_Method

####### SUMT_Method

算法

(1)获得N=数组X0的长度,r=1,c=10,epsi=0.0001STARTINGStep = 1.28LEASTStep = 0.005

(2)从nI=0到N-1进行循环将数组D0对应位置数值取值为STARTINGStepDmi对应位置数值取值为LEASTStep

(3)iSum = 0xN = X0

(4)将xN赋值给X调用Hooke_Jeeves_Method函数获得最优解xNiSum=iSum + CallBackNum;

(5)err = 0从nI=0到N-1进行循环err = err + (X[nI] - xN[nI]) * (X[nI] - xN[nI])若err>epsir = r / c否则结束返回xN

无约束优化算法

####### 内容

  • Hooke_Jeeves_Method

####### Hooke_Jeeves_Method

算法

(1)N=数组X0的长度X0的值赋值给XX的值赋值给Y将D0赋值给Dt采用字符串的方式调用TZZHCallBack函数得到函数初始值F0,并赋值给Fy

(2)把Y的值赋值给XFy赋值给Fs

(3)从nI=0到N-1进行循环将X和Dt对应位置数据相加得到新的数组X调用TZZHCallBack函数得到函数值Fx若Fx<Fs或|Fx-Fs|<0.00001*|Fs|Xs=XFs

Fx若不满足条件将X对应位置的数据和Dt对应位置的数据的2倍相减得到新的数组X调用TZZHCallBack函数得到函数值Fx若Fx<Fs或|Fx-Fs|<0.00001*|Fs|Xs=XFs = Fx否则将X和Dt对应位置数据相加得到新的数组X

(4)若第(3)步最终得到的Fs <Fy从nI=0到N-1进行循环将Xs对应位置的数据的2倍减X0对应位置的数据得到新的数组Y调用TZZHCallBack函数得到函数值Fy将Xs赋值给X0如果Fy<Fs将Xs赋值给YFs赋值给Fy

(5)当第(4)中的开始条件Fs <Fy不满足时从nI=0到N-1进行循环将Dt对应位置的数据乘0.5得到新的数组DtDtSum的初始值为0若Dt对应位置的数据小于DMin对应位置的数据DtSum加1

(6)以上(2)-(5)直到DtSum=N为止返回Y

测试

####### 内容

  • H_J_Method_Pgm
  • Sumt_Method__Pgm
  • Sumt_Method_CallBack
  • 中间函数

####### H_J_Method_Pgm

用途:优化相关函数。 参数:

返回:处理后的结果值。

算法

运用H-J法求解无约束最优化问题范例

CallBack := 'H_J_CallBack';
return H_J_Method_Pgm(CallBack);
// 结果:

####### Sumt_Method__Pgm

算法

运用SUMT法求解最优化问题范例

return Sumt_Method__Pgm();
// 结果:

####### Sumt_Method_CallBack

用途:进行数值统计计算。 参数:

返回:处理后的结果值。

算法

设置X对应下标为0的值为X1, X对应下标为1的值为X2fS1 =0fS2 =0

设置函数Fx=(X1 - 3)^2 + (X2 - 2)^2g=6-X1-X2

若g<0fS1 =Ln(-g)否则fS2 = g^2Gx = - r * fS1 + fS2 / r

返回Fx + Gx范例

x := array(1.00, 2.00); // 设置一维数字数组
return Sumt_Method_CallBack(x, 1);
// 结果13

####### 中间函数

######## 内容

  • H_J_CallBack

######## H_J_CallBack

算法

(1)设置X对应下标为0的值为X1, X对应下标为1的值为X2

(2)设置函数Fx=X1 _ X1 + 2 _ X2 _ X2 - 4 _ X1 - 2 _ X1 _ X2

(3)返回函数Fx的值范例

x := array(1.00, 2.00); // 设置一维数字数组
return H_J_CallBack(x, 0);
// 结果1
QuadTrackRoute

用途:优化相关函数。 参数:

返回:处理后的结果值。

范例

Find x that minimize

f(x) = 2x1^2+2x2^2-x1x2+8x1-6x2

subject to

x1 + x2 ≤ 2

2*x1 - x2 ≤ 1

TSL代码

H := array((4, -1), (-1, 4));
f := array(8, -6);
A := array((1, 1), (2, -1));
B := array(2, 1);
Aeq := array();
Beq := array();
x0 := array(0, 0);
return QuadTrackRoute(H, f, A, B, Aeq, Beq, x0);

结果分析x1=-1.733333,x2=1.066667,最小值f(x)=-10.13333参考Prog_Q Quadprog QuadLagR

IntLinProg

用途:优化相关函数。 参数:

返回:处理后的结果值。

范例

Find x that Maximum

f(x) =40x1+90x2

subject to

9x1+7x2≤ 56

7x1 + 20x2≤ 70

0 ≤ x1, 0 ≤ x2

x1,x2整数

TSL代码

f := array(-40, -90);
A := array((9, 7), (7, 20));
B := array(56, 70);
Aeq := array();
Beq := array();
IntPar := array();
return IntLinProg(f, A, B, Aeq, Beq, Intpar);
// 结果x1=4,x2=2,f(x)=-340

参考Prog_L LinearProgramming OZProg

小波分析
内容
  • Wavedec
  • wrcoef
  • wavelet
Wavedec

用途:对序列进行小波分解,返回系数向量与长度向量。 参数data 为输入序列level 为分解层数wname 为小波名称。

返回:wave[0] 为分解向量 Cwave[1] 为记录向量 L。

范例

SetSysParam(PN_Stock(), "SH000300");
SetSysParam(pn_date(), inttodate(20120731));
close_300 := nday(800, "时间", DateTimeToStr(sp_time(1)), "收盘价", close());
close_3 := close_300[:, "收盘价"];
return wave := Wavedec(close_3, 3, "db3");

参考 wrcoef, wavelet

wrcoef

用途:基于 Wavedec 的结果重构近似或细节信号。 参数mode 指定近似或细节c 为分解系数l 为长度向量wname 为小波名称level 为层数。 返回:重构后的序列。

参数:

范例

SetSysParam(PN_Stock(), "SH000300");
SetSysParam(pn_date(), inttodate(20120731));
close_300 := nday(800, "时间", DateTimeToStr(sp_time(1)), "收盘价", close());
close_3 := close_300[:, "收盘价"];
wave := Wavedec(close_3, 3, "db3");
c := wave[0];
l := wave[1];
return wrcoef('a', c, l, "db3", 3); // 去除前 3 层高频谐波
// return wrcoef('d', c, l, "db3", 3); // 第 3 次分解得到的高频

参考 Wavedec, wavelet

wavelet

用途:对序列进行小波变换/去噪,常与 Wavedec、wrcoef 配合使用。 参数data 为输入序列wname 为小波名称n 为层数options 为去噪选项。 返回:处理后的序列。

范例

s := array(2484.83, 2479.05, 2482.34, 2437.79, 2447.75, 2512.96, 2443.06, 2433.16);
n := 2;
wname := "db14";
options := array('brief': 1, 'sigma': 0, 'which': 1, 'alpha': 2, "thr": 0, 'sorh': 's');
return s | wavelet(s, wname, n, options);

参考 Wavedec, wrcoef

财务函数

注意PaymentTime为0表示期初1表示期末

内容
  • DoubleDecliningBalance
  • FutureValue
  • InterestPayment
  • InterestRate
  • InternalRateOfReturn
  • NumberOfPeriods
  • NetPresentValue
  • Payment
  • PeriodPayment
  • PresentValue
  • SLNDepreciation
  • SYDDepreciation
DoubleDecliningBalance

用途:财务函数相关函数。 参数:

返回:处理后的结果值。

范例

Cost := 100;
Salvage := 32;
life := 3;
Period := 2;
return DoubleDecliningBalance(COST, Salvage, life, Period);

1.3333参考简单函数对数组支持 FutureValue InterestPayment InterestRate InternalRateOfReturn NumberOfPeriods NetPresentValue Payment PeriodPayment PresentValue SLNDepreciation SYDDepreciation

FutureValue

用途:财务函数相关函数。 参数:

返回:处理后的结果值。

范例

Rate := 0.05;
Nperiods := 5;
Payment := 100;
PresentValue := -10000;
PaymentTime := 1;
return FutureValue(Rate, Nperiods, Payment, PresentValue, PaymentTime);

结果5.3253参考简单函数对数组支持 DoubleDecliningBalance InterestPayment InterestRate InternalRateOfReturn NumberOfPeriods NetPresentValue Payment PeriodPayment PresentValue SLNDepreciation SYDDepreciation

InterestPayment

用途:财务函数相关函数。 参数:

返回:处理后的结果值。

范例

Rate := 0.1;
Period := 5;
Nperiods := 12;
PresentValue := 120;
FutureValue := 500;
PaymentTime := 0;
return InterestPayment(Rate, Period, Nperiods, PresentValue, FutureValue, PaymentTime);

结果1.456参考简单函数对数组支持 DoubleDecliningBalance FutureValue InterestRate InternalRateOfReturn NumberOfPeriods NetPresentValue Payment PeriodPayment PresentValue SLNDepreciation SYDDepreciation

InterestRate

用途:财务函数相关函数。 参数:

返回:处理后的结果值。

范例

NPeriod := 5;
Payment := -100;
PresentValue := 1000000;
FutureValue := 100;
PaymentTime := 0;
return InterestRate(NPeriod, Payment, PresentValue, FutureValue, PaymentTime);

结果:-0.8972参考简单函数对数组支持 DoubleDecliningBalance FutureValue InterestPayment InternalRateOfReturn NumberOfPeriods NetPresentValue Payment PeriodPayment PresentValue SLNDepreciation SYDDepreciation

InternalRateOfReturn

用途:财务函数相关函数。 参数:

返回:处理后的结果值。

范例

Guess := 100;
data := array(10, 20);
return InternalRateOfReturn(Guess, Data);

结果:-1参考简单函数对数组支持 DoubleDecliningBalance FutureValue InterestPayment InterestRate NumberOfPeriods NetPresentValue Payment PeriodPayment PresentValue SLNDepreciation SYDDepreciation

NumberOfPeriods

用途:财务函数相关函数。 参数:

返回:处理后的结果值。

范例

Rate := 0.1;
Payment := 100;
PresentValue := 101;
FutureValue := -105;
PaymentTime := 0;
return NumberOfPeriods(Rate, Payment, PresentValue, FutureValue, PaymentTime);

结果0.038参考简单函数对数组支持 DoubleDecliningBalance FutureValue InterestPayment InterestRate InternalRateOfReturn NetPresentValue Payment PeriodPayment PresentValue SLNDepreciation SYDDepreciation

NetPresentValue

用途:财务函数相关函数。 参数:

返回:处理后的结果值。

范例

Rate := 0.1;
CashFlows := array(100, 1000);
PaymentTime := 0;
return NetPresentValue(Rate, CashFlows, PaymentTime);

结果917.3554参考简单函数对数组支持 DoubleDecliningBalance FutureValue InterestPayment InterestRate InternalRateOfReturn NumberOfPeriods Payment PeriodPayment PresentValue SLNDepreciation SYDDepreciation

Payment

用途:财务函数相关函数。 参数:

返回:处理后的结果值。

范例

Rate := 0.1;
Nperiods := 100;
PresentValue := 0;
FutureValue := 10000;
PaymentTime := 0;
return Payment(Rate, Nperiods, PresentValue, FutureValue, PaymentTime);

结果:-0.0726参考简单函数对数组支持 DoubleDecliningBalance FutureValue InterestPayment InterestRate InternalRateOfReturn NumberOfPeriods NetPresentValue PeriodPayment PresentValue SLNDepreciation SYDDepreciation

PeriodPayment

用途:财务函数相关函数。 参数:

返回:处理后的结果值。

范例

Rate := 0.1;
Period := 10;
Nperiods := 30;
PresentValue := 0;
FutureValue := 10000;
PaymentTime := 0;
return PeriodPayment(Rate, Period, Nperiods, PresentValue, FutureValue, PaymentTime);

结果:-143.3455参考简单函数对数组支持 DoubleDecliningBalance FutureValue InterestPayment InterestRate InternalRateOfReturn NumberOfPeriods NetPresentValue Payment PresentValue SLNDepreciation SYDDepreciation

PresentValue

用途:财务函数相关函数。 参数:

返回:处理后的结果值。

范例

Rate := 0.1;
Nperiods := 30;
FutureValue := 10000;
PaymentTime := 0;
return PresentValue(Rate, Nperiods, Payment, FutureValue, PaymentTime);

结果:-573.0855参考简单函数对数组支持 DoubleDecliningBalance FutureValue InterestPayment InterestRate InternalRateOfReturn NumberOfPeriods NetPresentValue Payment PeriodPayment SLNDepreciation SYDDepreciation

SLNDepreciation

用途:财务函数相关函数。 参数:

返回:处理后的结果值。

范例

return SLNDepreciation(20000, 2000, 5);
// 结果3600
// 第一年应提折旧额=(20000-2000)/5=3600
// 第二年应提折旧额=(20000-2000)/5=3600
// 第三年应提折旧额=(20000-2000)/5=3600
// 第四年应提折旧额=(20000-2000)/5=3600
// 第五年应提折旧额=(20000-2000)/5=3600

结果1800参考简单函数对数组支持 DoubleDecliningBalance FutureValue InterestPayment InterestRate InternalRateOfReturn NumberOfPeriods NetPresentValue Payment PeriodPayment PresentValue SYDDepreciation

SYDDepreciation

用途:财务函数相关函数。 参数:

返回:处理后的结果值。

范例

return SYDDepreciation(20000, 2000, 5, 2);
// 结果4800
// 第一年应提折旧额=(20000-2000)*5/((1+5)*5/2)=6000
// 第二年应提折旧额=(20000-2000) *4/((1+5)*5/2)=4800
// 第三年应提折旧额=(20000-2000) *3/((1+5)*5/2)=3600
// 第四年应提折旧额=(20000-2000) *2/((1+5)*5/2)=2400
// 第五年应提折旧额=(20000-2000) *1/((1+5)*5/2)=1200

结果2400参考简单函数对数组支持 DoubleDecliningBalance FutureValue InterestPayment InterestRate InternalRateOfReturn NumberOfPeriods NetPresentValue Payment PeriodPayment PresentValue SLNDepreciation

增长率与比率
内容
  • AccumulativeYTMtoYTM
  • YTMToAccumulativeYTM
  • RatioValue
  • OutPutValueByUnit
  • OutPutLnGrowRatio
  • OutPutGrowValue
  • OutPutGrowValue2
  • OutPutGrowRatio
  • OutPutGrowRatio2
  • MultyValue
  • OutPutGrowValue3
  • OutPutGrowRatio3
  • RatioValue_Math
AccumulativeYTMtoYTM

用途:增长率与比率相关函数。 参数:

返回:处理后的结果值。

算法

日收益率=(当天复合收益率+1)/(1+前天复合收益率)-1;范例

// 源数据单位为1,设dw=2,同时返回复合收益率和转换后的日收益率
t1 := array(('日期':20180801T, '复合收益率':0.1),
('日期':20180802T, '复合收益率':0.4),
('日期':20180803T, '复合收益率':0.7));
r1 := AccumulativeYTMtoYTM(t1, '复合收益率', 2);
// 源数据单位为%,设dw=3,同时返回复合收益率和转换后的日收益率
t2 := array(('日期':20180801T, '复合收益率(%)':10),
('日期':20180802T, '复合收益率(%)':40),
('日期':20180803T, '复合收益率(%)':70));
r2 := AccumulativeYTMtoYTM(t2, '复合收益率(%)', 3);
return r1|r2;

结果返回:

YTMToAccumulativeYTM

用途:增长率与比率相关函数。 参数:

返回:处理后的结果值。

算法复合收益率=(当天日收益率+1)*(1+昨日复合收益率)-1;范例

范例01

// 源数据单位为1,dw=2,同时返回日收益率和转换后的复合收益率
t1 := array(('日期':20180801T, '日收益率':0.3),
('日期':20180802T, '日收益率':0.6),
('日期':20180803T, '日收益率':0.9));
r1 := YTMToAccumulativeYTM(t1, '日收益率', 2, 0);
// 源数据单位为%,dw=3,同时返回日收益率和转换后的复合收益率
t2 := array(('日期':20180801T, '日收益率(%)':30),
('日期':20180802T, '日收益率(%)':60),
('日期':20180803T, '日收益率(%)':90));
r2 := YTMToAccumulativeYTM(t2, '日收益率(%)', 3, 0);
return r1|r2;

范例2

// 计算基金OF000009易方达天天理财A的累计收益率(%)
SetSysParam(PN_Stock(), "OF000009");
t := array(('日期':20150104T, '每万份基金单位收益':4.3769),
('日期':20150105T, '每万份基金单位收益':1.2507),
('日期':20150106T, '每万份基金单位收益':1.4671));
r := YTMToAccumulativeYTM(t, '每万份基金单位收益', 5, 0);
return r;
RatioValue

用途:增长率与比率相关函数。 参数:

返回:处理后的结果值。

算法

若v1与v2都是实数且v2<>0则v=v1/v2否则v=0

若v1<0且v2<0则v=-v

返回v。范例

// 返回-1与-2的比率。
return RatioValue(-1, -2);
// 结果:-0.5
OutPutValueByUnit

用途:增长率与比率相关函数。 参数:

返回:处理后的结果值。

算法

若DataType_="Real"则v=Data/DataUnit

若DataType_<>"Real"则v=Data

返回v。范例

// 返回1234.5以10为单位转换后的结果
return OutPutValueByUnit(1234.5, 'Real', 10);
// 结果123.45
OutPutLnGrowRatio

用途:增长率与比率相关函数。 参数:

返回:处理后的结果值。

算法若v1>0且v2>0返回v1的自然对数 - v2的自然对数*100

否则返回0。范例

// 取3与4的对数增长率
return OutPutLnGrowRatio(3, 4);
// 结果:-28.77
OutPutGrowValue

用途:增长率与比率相关函数。 参数:

返回:处理后的结果值。

算法若v1与v2都为实数返回v1-v2

否则返回0。范例

// 返回13与14的差值
return OutPutGrowValue(13, 14);
// 结果:-1
OutPutGrowValue2

用途:增长率与比率相关函数。 参数:

返回:处理后的结果值。

算法若v1与v2都为不等于0的实数返回v1-v2

否则返回0。范例

// 返回13与14差值
return OutPutGrowValue2(13, 14);
// 结果:-1
OutPutGrowRatio

用途:增长率与比率相关函数。 参数:

返回:处理后的结果值。

算法若v1与v2都为不等于0的实数返回v1-v2/v2的绝对值*100

否则返回0。范例

// 返回13到14的增长率(%)
return OutPutGrowRatio(14, 13);
// 结果7.69
OutPutGrowRatio2

用途:增长率与比率相关函数。 参数:

返回:处理后的结果值。

算法

若v1与v2都为不等于0的实数返回v1-v2/v2的绝对值*100

若v1与v2其中有一个为0返回"-"

否则返回0。范例

// 返回13到14的增长率(%)
return OutPutGrowRatio2(14, 13);
// 结果7.69
MultyValue

用途:增长率与比率相关函数。 参数:

返回:处理后的结果值。

算法

若v1与v2都是实数则v=v1*v2否则v=0

若v1<0且v2<0则v=-v

返回v。范例

// 返回取-3与-5的乘积。
return MultyValue(-3, -5);
// 结果:-15
OutPutGrowValue3

用途:增长率与比率相关函数。 参数:

返回:处理后的结果值。

算法若v1与v2都为大于等于0的实数返回v1-v2

否则,返回空字符串。范例

// 返回13与14的差值
return OutPutGrowValue3(13, 14);
// 结果:-1
OutPutGrowRatio3

用途:增长率与比率相关函数。 参数:

返回:处理后的结果值。

算法若v1与v2都为实数且v2>0返回(v1-v2)/v2的绝对值*100

否则,返回空字符串。范例

// 返回14到13的增长率(%)
return OutPutGrowRatio3(14, 13);
// 结果7.69
RatioValue_Math

用途:增长率与比率相关函数。 参数:

返回:处理后的结果值。

范例

return RatioValue_Math(0, 0);
// 结果0
概率分布
内容
  • 线性变换
线性变换

####### 内容

  • Norm_LinearTransform

####### Norm_LinearTransform

用途:概率分布相关函数。 参数:

返回:处理后的结果值。

算法假设随机变量X服从正态分布其线性组合Y依然服从正态分布

1X、Y为单个变量X~N(μ,σ2)μ与σ2为实数Y=a+bX

EY=a+bμ

DY=b2σ2

2X、Y为多元变量假设

X=X1,X2,?,XnT~Nμ,Σ , μ=μ1,μ2,?,μnT, Σ=var(X1)cov(X1,Xn)cov(X1,Xn)var(Xn)

Y=Y1Ym=a1+b11X1+b12X2+?+b1nXnam+bm1X1+bm2X2+?+bmnXn=A+B*X

其中A=a1am B=b11b1nbm1bmn

EY=A+Bμ

DY=BΣBT范例

范例01

A := 1.5;
B := 2;
Mu := 1;
Sigma := 10;
return Norm_LinearTransform(Mu, Sigma, A, B);

范例2

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

用途:信号处理相关函数。 参数:

返回:处理后的结果值。

范例

y := MarketTradeDayQk(20220101T, 20220131T);
return filter_hp(y, 10);