积分函数的计算
a(r)为单谷函数,将样本按顺序排列后。
a(1)=N,a(N)=N-1,a(N-1)=N-2,
a(2)=N-3,a(3)=N-4,
a(N-2)=N-5,a(N-3)=N-6,
……
例如N=9时:
r | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|
a(r) | 9 | 6 | 5 | 2 | 1 | 3 | 4 | 7 | 8 |
def ar(a,b):
```
a为合并后从小至大排列
b为和a等长的空数列
```
i = len(a) - 1
i_u = (int)(len(a) / 2)
count = len(a) - 1
state = 0 # left
b[0] = count + 1
while i != i_u:
# b[i]=count
if state == 0 and i >= 0:
b[i] = count
b[i - 1] = count - 1
i -= (count - 1)
state = 1
elif (state == 1 and i + 1 <= len(a) - 1):
b[i] = count
b[i + 1] = count - 1
i += (count - 1)
state = 0
count -= 2
if count > len(a):
break
return b
若样本中含有结,则采用平均法重新对积分函数赋值
def a_average(a,b):
# b为初始积分,由ar函数得到
unique_a_2=np.unique(a)
for value in unique_a_2:
indices = np.where(a_2==value)
b[indices] =np.mean(b[indices])
return b
检验统计量
S
y
=
∑
i
=
1
n
a
(
R
i
)
S_y= \sum_{i=1}^n a(R_i)
Sy=i=1∑na(Ri)
找出样本二的积分值进行累加
渐进检验
样本数量较大时使用,样本较小时查表即可
方差
D ( S y ) = n m ( N + 1 ) 12 D(S_y)=\frac{nm(N+1)}{12} D(Sy)=12nm(N+1)
当积分函数含有结时,方差需要修正:
D
(
S
y
)
=
n
m
(
N
+
1
)
12
−
∑
j
=
1
g
(
τ
j
3
−
τ
j
)
n
m
12
N
(
N
−
1
)
D(S_y)=\frac{nm(N+1)}{12}-\sum_{j=1}^{g} (\tau_j^3 - \tau_j)\frac{nm}{12N(N-1)}
D(Sy)=12nm(N+1)−j=1∑g(τj3−τj)12N(N−1)nm
其中g为样本中结的个数,
τ
j
\tau_j
τj为第
j
j
j个结的长度。
def var_motify(m, n, a):
'''
:param m: 样本一元素个数
:param n: 样本二元素个数
:param a: 合并后样本数据(从小到大排列)
:return:
'''
N = m + n
D0 = (n * m * (N + 1)) / 12
D1 = 0
mid = 0
key = np.unique(a)
key_a = {}# 保存结
for k in key:
v = a_2[a_2 == k].size
key_a[k] = v
for i in a:
if i==mid:
continue
mid=i
D1 += n * m*(key_a[i] ** 3 - key_a[i]) / (12 * N * (N - 1))
return D0 - D1
期望
E ( S y ) = n ( N + 1 ) 2 E(S_y)=\frac{n(N+1)}{2} E(Sy)=2n(N+1)
def expect(m,n):
return n*(m+n+1)/2
计算公式
S
y
∼
N
(
E
(
S
y
)
,
D
(
S
y
)
)
S_y \sim N(E(S_y),D(S_y))
Sy∼N(E(Sy),D(Sy))
即
S
y
−
E
(
S
y
)
D
(
S
y
)
∼
N
(
0
,
1
)
\frac{S_y-E(S_y)}{\sqrt{D(S_y)}} \sim N(0,1)
D(Sy)Sy−E(Sy)∼N(0,1)
def end(Sy,E_Sy,D_Sy):
# E=n*(m+n+1)/2
return (Sy-E_Sy)/(D_Sy**0.5)
Endd=norm.cdf(end(Sy,E_Sy,D_Sy))# 得到概率值
由于为单谷函数
原假设H0 | 备择假设H1 | |
---|---|---|
b=1 | b>1 | S y S_y Sy较大拒绝原假设,样本较为分散 |
b=1 | b<1 | S y S_y Sy较小拒绝原假设,样本较为集中 |