当前位置:   article > 正文

趋势检验方法(二)MK趋势检验_mk检验

mk检验

MK(Mann-Kendall)检验

a基本原理:

使用MK算法检验时序数据大致趋势,趋势分为无明显趋势(稳定)、趋势上升、趋势下降。

MK检验的基础:

  1. 当没有趋势时,随时间获得的数据是独立同分布的,数据随着时间不是连续相关的。
  2. 所获得的时间序列上的数据代表了采样时的真实条件,样本要具有代表性。
  3. MK检验不要求数据是正态分布,也不要求变化趋势是线性的。
  4. 如果有缺失值或者值低于一个或多个检测限制,是可以计算MK检测的,但检测性 能会受到不利影响。
  5. 独立性假设要求样本之间的时间足够大,这样在不同时间收集的测量值之间不存在 相关性。

b MK算法原理:

上面置信度为1-alpha,写错了

c方法优缺点:

优点:功能强大,不需要样本遵从一定的分布,部分数据缺失不会对结果造成影响,不受少数异常值的干扰,适用性强。

不但可以检验时间序列的变化趋势,还可以检验时间序列是否发生了突变。

缺点:暂未发现,待后续补充。

d算法入口:

目前MK检验还没有可直接调用的函数,具体MK模板可以根据下面所写的实例去修改

e实例参考:

  1. from scipy.stats import norm
  2. import numpy as np
  3. def mk(x, alpha=0.1): # 0<alpha<0.5 1-alpha/2为置信度
  4. n = len(x)
  5. # 计算S的值
  6. s = 0
  7. for j in range(n - 1):
  8. for i in range(j + 1, n):
  9. s += np.sign(x[i] - x[j])
  10. # 判断x里面是否存在重复的数,输出唯一数队列unique_x,重复数数量队列tp
  11. unique_x, tp = np.unique(x, return_counts=True)
  12. g = len(unique_x)
  13. # 计算方差VAR(S)
  14. if n == g: # 如果不存在重复点
  15. var_s = (n * (n - 1) * (2 * n + 5)) / 18
  16. else:
  17. var_s = (n * (n - 1) * (2 * n + 5) - np.sum(tp * (tp - 1) * (2 * tp + 5))) / 18
  18. # 计算z_value
  19. if n <= 10: # n<=10属于特例
  20. z = s / (n * (n - 1) / 2)
  21. else:
  22. if s > 0:
  23. z = (s - 1) / np.sqrt(var_s)
  24. elif s < 0:
  25. z = (s + 1) / np.sqrt(var_s)
  26. else:
  27. z = 0
  28. # 计算p_value,可以选择性先对p_value进行验证
  29. p = 2 * (1 - norm.cdf(abs(z)))
  30. # 计算Z(1-alpha/2)
  31. h = abs(z) > norm.ppf(1 - alpha / 2)
  32. # 趋势判断
  33. if (z < 0) and h:
  34. trend = 'decreasing'
  35. elif (z > 0) and h:
  36. trend = 'increasing'
  37. else:
  38. trend = 'no trend'
  39. return trend

f参考文献:

python中的Mann-Kendall单调趋势检验--及原理说明python中的Mann-Kendall单调趋势检验--及原理说明_liucheng_zimozigreat的博客-CSDN博客_mann-kendall检验

norm.ppf() norm.cdf() 【Matlab】正态分布常用函数normpdf_normcdf_norminv_normrnd_normfit_itsc的博客-CSDN博客_matlab正态分布函数

知乎 时序数据常用趋势检测方法 时序数据常用趋势检测方法 - 知乎

序列的趋势存在性检验:Cox-Stuart test和Mann-Kendall test序列的趋势存在性检验:Cox-Stuart test和Mann-Kendall test_老身聊发少年狂的博客-CSDN博客_趋势存在性检验

时间序列数据趋势分析 Cox-Stuart、Mann-Kendall、Dickey-Fuller时间序列数据趋势分析 Cox-Stuart、Mann-Kendall、Dickey-Fuller_LaoChen_ZeroonE的博客-CSDN博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/472168
推荐阅读
相关标签
  

闽ICP备14008679号