MK

博客分类: python 阅读次数: comments

MK

Python实现MK检验算法

Python 实现MK检验算法,需要用到numpy模块。需要注意输入文件数据格式为一行一数据如附件data.png.输出文件格式,第一列为UF,第二列为UB,第三四列为-1.96,1.96,如附件output.png。

import numpy as np
def getuf(data):
    l = len(data)
    s = np.zeros(l,dtype=np.int32)
    uf = np.zeros(l)
    for i in range(1,l):
        r = 0
        for j in range(i):
            if(data > data[j]):
                r = r + 1
        s = s[i-1] + r
        index = i + 1
        e = (index * (index-1)) / 4
        v = index * (index - 1) * (2 * index + 5) / 72
        uf = (s - e) / np.sqrt(v)
        uf = round(uf,2)
    return uf
def main():
    ufinput = np.loadtxt("data.txt")
    uf = getuf(ufinput)
    ubinput = ufinput[::-1]
    temp = getuf(ubinput) * (-1)
    ub = temp[::-1]
    a1 = np.empty_like(uf)
    a1[:] = -1.96
    a2 = a1 * (-1)
    output = np.array([uf, ub, a1, a2])
    np.savetxt("output.txt", output.T, "%.2f", delimiter = "\t")
if __name__ == '__main__':
    main()

一些MK突变检验的例子

关于MK突变检验的理解及疑问

MK检验 图的UF UB交点问题及2个小小问题,请高手不吝赐教啦

up-rs-esp

python改写MK趋势检验

github1

github2 question test

论文

中国年降雨量的一阶自相关系数不显著,且其 3 种趋势检验方法结果的差异不明显,可以直接采用普通 Mann-Kendall 对其进行趋势检验。年平均气温和蒸发皿蒸发量的一阶自相关系数显著性较高,需要采用修正 Mann-Kendall 方法进行趋势检验。[章诞武, 丛振涛, 倪广恒. 基于中国气象资料的趋势检验方法对比分析[J]. 水科学进展, 2013, 24(4):490-496.]