用于非参数mann-kendall趋势测试系列的python包。
pymannkendall的Python项目详细描述
Pymannkendall
什么是mann-kendall检验?
mann-kendall趋势检验(有时称为mk检验)用于分析时间序列数据的一致性增加或减少趋势(单调趋势)。这是一个非参数检验,这意味着它适用于所有分布(即数据不必满足正态性假设),但数据应该没有序列相关性。如果数据具有序列相关性,则可能在显著水平上影响(p值)。这可能会导致误解。为了克服这一问题,研究者提出了几种修正的mann-kendall检验(hamed和rao修正的mk检验、yue和wang修正的mk检验、预白化法修正的mk检验等)。季节性mann-kendall检验也被用来消除季节性的影响。
mann-kendall检验是一种强大的趋势检验,因此针对空间条件,发展了多元mk检验、区域mk检验、相关mk检验、部分mk检验等修正的mann-kendall检验。pymannkendal
是非参数mann-kendall趋势分析的纯python实现,它集合了几乎所有类型的mann-kendall测试。目前,该软件包有11个mann-kendall检验和2个sen斜率估计函数。功能简介如下:
原始mann-kendall检验(原始_检验):原始mann-kendall检验是非参数检验,不考虑序列相关性或季节性影响。
hamed和rao修正的mk检验(hamed和rao修正的mk检验):这个修正的mk检验由hamed和rao(1998)提出的解决序列自相关问题的方法。他们建议采用方差校正方法来改进趋势分析。用户可以通过在该函数中插入滞后数来考虑前n个显著滞后。默认情况下,它会考虑所有重要的延迟。
Yue和Wang修正的MK检验(Yue-Wang_修正的检验):这也是Yue,S.,&Wang,C.Y.(2004)提出的考虑序列自相关的方差修正方法。用户还可以为计算设置所需的有效n滞后。
使用预白化方法的修正mk检验(预白化方法的修正):Yue和Wang(2002)建议在应用趋势检验之前使用预白化时间序列的检验。
使用无趋势预白化方法的修正mk试验(无趋势预白化试验):Yue和Wang(2002)也提出了在应用趋势试验之前去除趋势成分,然后对时间序列进行预白化的试验。
多变量mk检验(多变量检验):这是hirsch(1982)提出的多参数mk检验。他用这种方法进行季节性mk检验,把每个月作为一个参数。
季节性MK检验(季节性检验):对于季节性时间序列数据,Hirsch,R.M.,Slack,J.R.和Smith,R.A.(1982)提出了这个检验来计算季节性趋势。
区域mk检验(regional mk test):基于Hirsch(1982)提出的季节性mk检验,Helsel,D.R.和Frans,L.M.,(2006)建议采用区域mk检验来计算区域尺度的总体趋势。
相关多变量mk检验(相关多变量检验):hipel(1994)提出的参数相关的多变量mk检验。
相关季节性MK检验(相关季节性检验):当时间序列与前一个或多个月/季节显著相关时,使用Hipel(1994)提出的方法。
部分mk检验(部分_检验):在实际事件中,许多因素都会影响研究的主要响应参数,从而使趋势结果产生偏差。为了克服这个问题,libiseller(2002)提出了部分mk检验。它需要两个参数作为输入,一个是响应参数,另一个是独立参数。
泰尔-森斜率估计器(sen s-slope):泰尔(1950)和森(1968)提出的估计单调趋势幅度的方法。
季节sen斜率估计量(季节sen斜率):hipel(1994)提出的当数据具有季节性影响时估计单调趋势大小的方法。
功能详细信息:
所有mann-kendall检验函数的输入参数几乎相同。这些是:
- x:向量(列表、numpy数组或pandas系列)数据
- α:显著性水平(默认为0.05)
- 滞后:第一个有效滞后数(仅在hamed_rao_modification_test和yue_wang_modification_test中可用)
- 周期:季节性周期。月数据为12,周数据为52(仅在季节性测试中可用)
所有mann-kendall测试都返回一个命名元组,其中包含:
- 趋势:显示趋势(增加、减少或无趋势)
- h:真(如果趋势存在)或假(如果趋势不存在)
- p:显著性检验的p值
- z:标准化测试统计
- 陶:肯德尔陶李>
- s:Mann Kendal的分数
- 方差s:方差s
- 斜率:sen的斜率
sen的斜率函数需要数据向量。季节性sen的斜率也有可选的输入周期,默认值为12。两个sen的slope函数都只返回slope值。
依赖关系
要安装pymannkendall
,需要以下软件包:
安装
您可以使用pip安装pymannkendall
。对于Linux用户
sudopipinstallpymannkendall
或者,对于Windows用户
pipinstallpymannkendall
或者您可以克隆repo并安装它:
git clone https://github.com/mmhs013/pymannkendall
cd pymannkendall
python setup.py install
测试
pymannkendall
在每次提交时使用pytest
包自动测试,但测试可以手动运行:
pytest -v
用法
下面给出一个使用 输出如下: 然而,输出是一个命名元组,因此您可以按名称调用特定的结果: 或者,您可以直接这样解压缩结果: 如果您发布的结果是您使用的 Hussain等人(2019年)。pymannkendall:一个用于非参数mann-kendall系列趋势测试的python包。开源软件杂志,4(39),1556,https://doi.org/10.21105/joss.01556pymannkendall
的快速示例。这里提供了更多的示例importnumpyasnpimportpymannkendallasmk# Data generation for analysisdata=np.random.rand(360,1)result=mk.original_test(data)print(result)
Mann_Kendall_Test(trend='no trend',h=False,p=0.9535148145990886,z=0.05829353811789905,Tau=0.002073661405137728,s=134.0,var_s=5205500.0,slope=8.408683160625719e-06)
print(result.slope)
trend,h,p,z,Tau,s,var_s,slope=mk.original_test(data)
引文
Pymannkendall
,请引用Hussain等人(2019年):@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,S.H.,Rahman,M.T.U.,Hoque,M.A.,和Hussain,M.M.(2016年)。孟加拉国北部地区季节和年降雨量趋势分析。大气研究,176148158欧元。doi:10.1016/j.atmosres.2016.02.008
考克斯,D.R.和斯图尔特,A.(1955)。一些快速信号测试的趋势,在位置和分散。生物计量学,42(1/2),80–95欧元。doi:10.2307/2333424
Hamed,K.H.,&Rao,A.R.(1998年)。对自相关数据进行修正的mann-kendall趋势检验。水文学杂志,204(1-4),182–196欧元。doi:10.1016/s0022-1694(97)00125-x
Helsel,D.R.,&Frans,L.M.(2006年)。区域肯德尔趋势检验。环境科学与技术,40(13),4066–4073欧元。doi:10.1021/es051650b
Hipel,K.W.,&McLeod,A.I.(1994年)。水资源和环境系统的时间序列建模(第45卷)。爱思唯尔。
Hirsch,R.M.,Slack,J.R.,&Smith,R.A.(1982年)。月水质数据趋势分析技术。水资源研究,18(1),107–121欧元。Doi:10.1029/wr018i001p0107
Kendall,M.(1975年)。秩相关测度。查尔斯·格里芬,伦敦,202,15。
Libiseller,C.,&;Grimvall,A.(2002年)。协变量存在下趋势检测的部分mann-kendall检验的性能。环境测量学:国际环境测量学会的官方期刊,13(1),71–84欧元。doi:10.1002/env.507
曼恩,H.B.(1945)。非参数趋势检验。计量经济学:计量经济学学会期刊,245–259欧元。doi:10.2307/1907187
Sen,P.K.(1968年)。基于Kendall挈s Tau的回归系数估计。美国统计协会期刊,63(324),1379–1389欧元。doi:10.1080/01621459.1968.10480934
泰尔,H.(1950)。线性和多项式回归分析的秩不变方法(第1-3部分)。在< EM >内德。Akad。威瑟森PROCSer。a(第53卷,第1397页,1412欧元)。
Yue,S.,&Wang,C.(2004年)。用有效样本量修正的mann-kendall检验来检测序列相关水文序列的趋势。水资源管理,18(3),201–218欧元。doi:10.1023/b:warm.0000043140.61082.60
Yue,S.,&Wang,C.Y.(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