两样本的尺度参数的秩检验———Siegel-Tuikey检验

积分函数的计算

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时:

r123456789
a(r)965213478
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=1na(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=1g(τj3τj)12N(N1)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)) SyN(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) SyE(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=1b>1 S y S_y Sy较大拒绝原假设,样本较为分散
b=1b<1 S y S_y Sy较小拒绝原假设,样本较为集中
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值