《现代气候统计诊断与预测技术》趋势显著性检验

def kendall_t(data):
    '''
    kendall_t趋势显著性检验,《现代气候统计诊断与预测技术》--魏凤英55页
    Parameters
    ----------
    data:为一列数据

    Returns
    -------
    1为显著上升;
    -1为显著下降;
    0为不显著
    '''
    n = np.size(data, 0)  # 数据个数
    # 计算秩统计量ri(统计后面所有数值大于该数值的个数)
    ri = np.zeros([np.size(data, 0) - 1, np.size(data, 1)])  # 长度为数据长度-1
    for i in range(0, len(data) - 1):
        for j in range(i + 1, len(data)):
            if data[j] > data[i]:
                ri[i, 0] += 1
    # 计算统计量Z,Z区间为[-1,1]
    z = np.sum(ri) * 4 / (n * (n - 1)) - 1
    # 计算显著性水平Z0.05
    z005 = 1.96 * np.sqrt((4 * n + 10) / (9 * n * (n - 1)))
    # 如果|Z|>Z005,则显著
    if abs(z) > z005 and z > 0:
        significance = 1
    elif abs(z) > z005 and z < 0:
        significance = -1
    else:
        significance = 0
    return significance

你可能感兴趣的:(python,人工智能,机器学习)