用于非参数mann-kendall趋势测试系列的python包。

pymannkendall的Python项目详细描述


Pymannkendall

生成状态pypipypi-licensepypi-statusdownloadspypi-python版本状态doi

什么是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斜率估计函数。功能简介如下:

  1. 原始mann-kendall检验(原始_检验):原始mann-kendall检验是非参数检验,不考虑序列相关性或季节性影响。

  2. hamed和rao修正的mk检验(hamed和rao修正的mk检验):这个修正的mk检验由hamed和rao(1998)提出的解决序列自相关问题的方法。他们建议采用方差校正方法来改进趋势分析。用户可以通过在该函数中插入滞后数来考虑前n个显著滞后。默认情况下,它会考虑所有重要的延迟。

  3. Yue和Wang修正的MK检验(Yue-Wang_修正的检验):这也是Yue,S.,&Wang,C.Y.(2004)提出的考虑序列自相关的方差修正方法。用户还可以为计算设置所需的有效n滞后。

  4. 使用预白化方法的修正mk检验(预白化方法的修正):Yue和Wang(2002)建议在应用趋势检验之前使用预白化时间序列的检验。

  5. 使用无趋势预白化方法的修正mk试验(无趋势预白化试验):Yue和Wang(2002)也提出了在应用趋势试验之前去除趋势成分,然后对时间序列进行预白化的试验。

  6. 多变量mk检验(多变量检验):这是hirsch(1982)提出的多参数mk检验。他用这种方法进行季节性mk检验,把每个月作为一个参数。

  7. 季节性MK检验(季节性检验):对于季节性时间序列数据,Hirsch,R.M.,Slack,J.R.和Smith,R.A.(1982)提出了这个检验来计算季节性趋势。

  8. 区域mk检验(regional mk test):基于Hirsch(1982)提出的季节性mk检验,Helsel,D.R.和Frans,L.M.,(2006)建议采用区域mk检验来计算区域尺度的总体趋势。

  9. 相关多变量mk检验(相关多变量检验):hipel(1994)提出的参数相关的多变量mk检验。

  10. 相关季节性MK检验(相关季节性检验):当时间序列与前一个或多个月/季节显著相关时,使用Hipel(1994)提出的方法。

  11. 部分mk检验(部分_检验):在实际事件中,许多因素都会影响研究的主要响应参数,从而使趋势结果产生偏差。为了克服这个问题,libiseller(2002)提出了部分mk检验。它需要两个参数作为输入,一个是响应参数,另一个是独立参数。

  12. 泰尔-森斜率估计器(sen s-slope):泰尔(1950)和森(1968)提出的估计单调趋势幅度的方法。

  13. 季节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

用法

下面给出一个使用pymannkendall的快速示例。这里提供了更多的示例

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年)

< Buff行情>

Hussain等人(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希望维持一个积极的社区。其他详细信息请参见行为准则

参考文献

  1. Bari,S.H.,Rahman,M.T.U.,Hoque,M.A.,和Hussain,M.M.(2016年)。孟加拉国北部地区季节和年降雨量趋势分析。大气研究,176148158欧元。doi:10.1016/j.atmosres.2016.02.008

  2. 考克斯,D.R.和斯图尔特,A.(1955)。一些快速信号测试的趋势,在位置和分散。生物计量学,42(1/2),80–95欧元。doi:10.2307/2333424

  3. Hamed,K.H.,&Rao,A.R.(1998年)。对自相关数据进行修正的mann-kendall趋势检验。水文学杂志,204(1-4),182–196欧元。doi:10.1016/s0022-1694(97)00125-x

  4. Helsel,D.R.,&Frans,L.M.(2006年)。区域肯德尔趋势检验。环境科学与技术,40(13),4066–4073欧元。doi:10.1021/es051650b

  5. Hipel,K.W.,&McLeod,A.I.(1994年)。水资源和环境系统的时间序列建模(第45卷)。爱思唯尔。

  6. Hirsch,R.M.,Slack,J.R.,&Smith,R.A.(1982年)。月水质数据趋势分析技术。水资源研究,18(1),107–121欧元。Doi:10.1029/wr018i001p0107

  7. Kendall,M.(1975年)。秩相关测度。查尔斯·格里芬,伦敦,202,15。

  8. Libiseller,C.,&;Grimvall,A.(2002年)。协变量存在下趋势检测的部分mann-kendall检验的性能。环境测量学:国际环境测量学会的官方期刊,13(1),71–84欧元。doi:10.1002/env.507

  9. 曼恩,H.B.(1945)。非参数趋势检验。计量经济学:计量经济学学会期刊,245–259欧元。doi:10.2307/1907187

  10. Sen,P.K.(1968年)。基于Kendall挈s Tau的回归系数估计。美国统计协会期刊,63(324),1379–1389欧元。doi:10.1080/01621459.1968.10480934

  11. 泰尔,H.(1950)。线性和多项式回归分析的秩不变方法(第1-3部分)。在< EM >内德。Akad。威瑟森PROCSer。a(第53卷,第1397页,1412欧元)。

  12. Yue,S.,&Wang,C.(2004年)。用有效样本量修正的mann-kendall检验来检测序列相关水文序列的趋势。水资源管理,18(3),201–218欧元。doi:10.1023/b:warm.0000043140.61082.60

  13. Yue,S.,&Wang,C.Y.(2002年)。预白化消除序列相关对mann"kendall检验的影响的适用性。水资源研究,38(6),4–1欧元。doi:10.1029/2001wr000861

  14. Yue,S.,Pilon,P.,Phinney,B.,&Cavadias,G.(2002年)。自相关对水文序列趋势探测能力的影响。水文过程,16(9),1807–1829欧元。doi:10.1002/hyp.1095

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
相对于框架java窗口的鼠标位置错误   Java 8流peek api   java将数据附加到文件中   java使用ExoPlayer 2.8播放播放列表中的特定文件   JavaSpring国际化:如何动态设置语言环境值   java如何在mysql中实现两个表之间的两个关联   java在gradle可执行jar文件中包含运行时参数   surefire插件中的java maven多套测试套件   java试图理解堆分析以确定内存泄漏或所需的大量内存   java识别字符串有数字   数组如何解决错误“java.lang.ArrayIndexOutOfBoundsException:5”   java Swt文件对话框选择的文件太多?   java此登录代码易受SQL注入攻击吗?   Java[3]中的文件<identifier>预期编译错误   java如何在spring webflux中发送列表   jar中未找到java文件异常   如何在java中合并2D数组?   java如何评测本机JNI库