用于非参数 Mann-Kendall 系列趋势测试的 python 包。
项目描述
pyMann肯德尔
什么是曼肯德尔检验?
Mann-Kendall 趋势检验(有时称为 MK 检验)用于分析时间序列数据的持续增加或减少趋势(单调趋势)。这是一个非参数检验,这意味着它适用于所有分布(即数据不必满足正态性假设),但数据不应具有序列相关性。如果数据具有序列相关性,它可能会影响显着水平(p 值)。这可能会导致误解。为了克服这个问题,研究人员提出了几种改进的 Mann-Kendall 测试(Hamed and Rao Modified MK Test、Yue and Wang Modified MK Test、Modified MK test using Pre-Whitening method等)。还开发了季节性 Mann-Kendall 检验以消除季节性的影响。
Mann-Kendall 检验是一种强大的趋势检验,因此针对空间条件开发了其他几种改进的 Mann-Kendall 检验,如多变量 MK 检验、区域 MK 检验、相关 MK 检验、部分 MK 检验等。pyMannkendal是非参数 Mann-Kendall 趋势分析的纯 Python 实现,它汇集了几乎所有类型的 Mann-Kendall 检验。目前,这个包有 11 个 Mann-Kendall 检验和 2 个 sen 的斜率估计函数。功能简述如下:
-
原始 Mann-Kendall 检验 ( original_test ):原始 Mann-Kendall 检验是一种非参数检验,不考虑序列相关性或季节性影响。
-
Hamed 和 Rao 修改的 MK 测试 ( hamed_rao_modification_test ):Hamed 和 Rao (1998)提出的这个修改的 MK 测试,用于解决序列自相关问题。他们提出了一种方差校正方法来改进趋势分析。用户可以通过在此函数中插入滞后数来考虑前 n 个显着滞后。默认情况下,它考虑了所有重要的滞后。
-
Yue and Wang Modified MK Test ( yue_wang_modification_test ):这也是由Yue, S., & Wang, CY (2004)提出的考虑序列自相关的方差校正方法。用户还可以为计算设置他们想要的显着 n 滞后。
-
使用 Pre-Whitening 方法的改进 MK 测试 ( pre_whitening_modification_test ):Yue 和 Wang (2002)建议在应用趋势测试之前使用 Pre-Whitening 时间序列进行该测试。
-
使用无趋势预白化方法 ( trend_free_pre_whitening_modification_test ) 改进的 MK 测试:该测试也是由Yue 和 Wang (2002)提出的,在应用趋势测试之前去除趋势分量,然后对时间序列进行预白化。
-
多变量 MK 检验 ( multivariate_test ):这是Hirsch (1982)提出的多个参数的 MK 检验。他将此方法用于季节性 mk 测试,他将每个月视为一个参数。
-
季节性 MK 检验 ( seasonal_test ):对于季节性时间序列数据,Hirsch, RM, Slack, JR 和 Smith, RA (1982)提出了这个检验来计算季节性趋势。
-
区域 MK 测试 ( regional_test ):基于Hirsch (1982)提出的季节性 mk 测试,Helsel, DR 和 Frans, LM, (2006)建议使用区域 mk 测试来计算区域范围内的总体趋势。
-
相关多变量 MK 测试 ( correlated_multivariate_test ):Hipel (1994)提出的这种多变量 mk 测试,其中参数是相关的。
-
相关季节性 MK 检验 ( correlated_seasonal_test ):当时间序列与前一个或多个月份/季节显着相关时,使用Hipel (1994)提出的这种方法。
-
部分 MK 检验 ( partial_test ):在实际事件中,许多因素会影响主要研究的响应参数,这可能会使趋势结果产生偏差。为了克服这个问题,Libiseller (2002)提出了这种部分 mk 检验。它需要两个参数作为输入,一个是响应参数,另一个是独立参数。
-
Theil-Sen's Slope Estimator ( sens_slope ):该方法由Theil (1950)和Sen (1968)提出,用于估计单调趋势的大小。截距是使用Conover, WJ (1980)方法计算的。
-
季节性 Theil-Sen 斜率估计器 ( seasonal_sens_slope ):此方法由Hipel (1994)提出,用于在数据具有季节性影响时估计单调趋势的大小。截距是使用Conover, WJ (1980)方法计算的。
功能详情:
所有 Mann-Kendall 测试函数都具有几乎相似的输入参数。那些是:
- x : 向量(列表、numpy 数组或 pandas 系列)数据
- alpha:显着性水平(默认为 0.05)
- lag:第一个重要滞后的数量(仅在 hamed_rao_modification_test 和 yue_wang_modification_test 中可用)
- 周期:季节性周期。每月数据为 12,每周数据为 52(仅在季节性测试中可用)
并且所有 Mann-Kendall 测试都返回一个命名元组,其中包含:
- 趋势:告诉趋势(增加,减少或没有趋势)
- h : True(如果趋势存在)或 False(如果趋势不存在)
- p:显着性检验的 p 值
- z : 归一化测试统计
- 陶:肯德尔陶
- s : Mann-Kendal 的分数
- var_s : 方差 S
- 斜率:泰尔森估计器/斜率
- intercept:Kendall-Theil Robust Line 的截距,用于季节性测试,全周期循环视为单位时间步长
sen 的斜率函数需要数据向量。季节性 sen 的斜率也有可选的输入周期,默认值为 12。两个 sen 的斜率函数都只返回斜率值。
依赖项
要安装pyMannKendall,需要以下软件包:
安装
您可以pyMannKendall使用 pip 安装。对于 Linux 用户
sudo pip install pymannkendall
或者,对于 Windows 用户
pip install pymannkendall
或者,您可以使用 conda
conda install -c conda-forge pymannkendall
或者您可以克隆 repo 并安装它:
git clone https://github.com/mmhs013/pymannkendall
cd pymannkendall
python setup.py install
测试
pyMannKendall在此处pytest每次提交时使用包自动测试,但可以手动运行测试:
pytest -v
用法
下面给出了一个简单的使用示例pyMannKendall。此处提供了更多示例。
import numpy as np
import pymannkendall as mk
# Data generation for analysis
data = np.random.rand(360,1)
result = mk.original_test(data)
print(result)
输出是这样的:
Mann_Kendall_Test(trend='no trend', h=False, p=0.9507221701045581, z=0.06179991635055463, Tau=0.0021974620860414733, s=142.0, var_s=5205500.0, slope=1.0353584906597959e-05, intercept=0.5232692553379981)
而输出是一个命名元组,因此您可以按名称调用特定结果:
print(result.slope)
或者,您可以像这样直接解压缩结果:
trend, h, p, z, Tau, s, var_s, slope, intercept = mk.original_test(data)
引文
如果您发布您使用的结果,请通过引用Hussain 等人 (2019)pyMannKendall来给予信任:
侯赛因等人,(2019 年)。pyMannKendall:用于非参数 Mann Kendall 系列趋势测试的 python 包。开源软件杂志,4(39),1556,https ://doi.org/10.21105/joss.01556
@article{Hussain2019pyMannKendall,
journal = {Journal of Open Source Software},
doi = {10.21105/joss.01556},
issn = {2475-9066},
number = {39},
publisher = {The Open Journal},
title = {pyMannKendall: a python package for non parametric Mann Kendall family of trend tests.},
url = {http://dx.doi.org/10.21105/joss.01556},
volume = {4},
author = {Hussain, Md. and Mahmud, Ishtiak},
pages = {1556},
date = {2019-07-25},
year = {2019},
month = {7},
day = {25},
}
贡献
pyMannKendall是一个社区项目,欢迎贡献。更多信息可以在贡献指南中找到。
行为守则
pyMannKendall希望保持一个积极的社区。更多详细信息可在行为准则中找到。
参考
-
Bari, SH, Rahman, MTU, Hoque, MA, & Hussain, MM (2016)。孟加拉国北部地区季节和年降雨量趋势分析。大气研究,176、148-158。doi: 10.1016/j.atmosres.2016.02.008
-
康诺弗,WJ,(1980 年)。一些基于秩的方法(第 5 章)、实用非参数统计(第 2 版)、John Wiley 和 Sons。
-
Cox, DR, & Stuart, A. (1955)。一些关于位置和分散趋势的快速符号测试。生物计量学,42(1/2),80-95。doi: 10.2307/2333424
-
Hamed, KH 和 Rao, AR (1998)。自相关数据的修改后的 Mann-Kendall 趋势检验。水文学杂志,204(1-4),182-196。doi: 10.1016/S0022-1694(97)00125-X
-
Helsel, DR 和 Frans, LM (2006)。区域肯德尔测试趋势。环境科学与技术,40(13),4066-4073。doi: 10.1021/es051650b
-
Hipel, KW 和 McLeod, AI (1994)。水资源和环境系统的时间序列建模(第 45 卷)。爱思唯尔。
-
Hirsch, RM, Slack, JR 和 Smith, RA (1982)。月度水质数据趋势分析技术。水资源研究,18(1),107-121。doi: 10.1029/WR018i001p00107
-
杰奎琳·迪茨,E.,(1987 年)。简单线性回归中稳健估计量的比较:稳健估计量的比较。统计模拟和计算中的通信,16(4),pp.1209-1227。doi: 10.1080/03610918708812645
-
肯德尔,M. (1975)。排名相关度量。查尔斯·格里芬,伦敦,202,15。
-
Libiseller, C. 和 Grimvall, A. (2002)。在存在协变量的情况下,用于趋势检测的部分 Mann-Kendall 检验的性能。环境计量学:国际环境计量学会官方期刊,13(1),71-84。doi: 10.1002/env.507
-
HB 曼恩 (1945)。针对趋势的非参数检验。计量经济学:计量经济学会杂志,245-259。doi: 10.2307/1907187
-
森,PK (1968)。基于 Kendall 的 tau 估计回归系数。美国统计协会杂志,63(324),1379-1389。doi: 10.1080/01621459.1968.10480934
-
泰尔,H. (1950)。线性和多项式回归分析的秩不变方法(第 1-3 部分)。在内德。阿卡德。韦滕施。过程。爵士。A(第 53 卷,第 1397-1412 页)。
-
岳 S. 和王 C. (2004)。Mann-Kendall 检验通过有效样本量修改以检测序列相关水文系列的趋势。水资源管理,18(3),201-218。doi: 10.1023/B:WARM.0000043140.61082.60
-
岳 S. 和王 CY(2002 年)。预白化以消除序列相关对 Mann-Kendall 检验的影响的适用性。水资源研究,38(6),4-1。doi: 10.1029/2001WR000861
-
Yue, S.、Pilon, P.、Phinney, B. 和 Cavadias, G. (2002)。自相关对水文序列趋势检测能力的影响。水文过程,16(9),1807-1829。doi: 10.1002/hyp.1095
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
pymannkendall -1.4.2.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 3daf310c11d993211fc3f971d7218da215c6dc99b6eb3e20884a534021df9919 |
|
| MD5 | 1c78e950c0d0f145b7cf3de80d73d97b |
|
| 布莱克2-256 | edbda731911424b09e8fecedf70cb29ae2886b323509e5bccec295dd5e961f51 |
pymannkendall -1.4.2-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | feaed61fa55a62c59eb3e625eac520b85ce4f3da539fc73c076aa8644a8def70 |
|
| MD5 | c039394c62e96eb825149587bdf0fcac |
|
| 布莱克2-256 | 03727eeda485b586ddaaa274225bb2aa365f3a24c94790283d7c230bcecbb28e |