Python实现 MK检验示例代码

yizhihongxing

Python实现MK检验是一种常用的非参数假设检验方法,以比较数据集的变化趋势是否存在显著性差异。下面我将详细讲解Python实现MK检验的完整攻略。

准备工具和数据

首先,我们需要准备工具和数据。你需要安装Python环境和pymannkendall库,pymannkendall库是用来计算MK检验统计量和p值的库。同时,还需要准备MK检验的数据。

示例1:

为了方便演示,我们构造一个简单的数据集,这个数据集包含了10个数值,用来检验是否存在单调上升或下降的趋势。可以使用以下Python代码创建数据:

import numpy as np

data = np.array([2, 4, 5, 7, 8, 9, 11, 12, 15, 18])

示例2:

另一个例子是一个真实的数据集,其中包含的是气温随时间的变化情况。你可以从气象局或其他数据提供者下载这样的数据进行测试。这里我们使用 NOAA 网站提供的温度数据进行测试。可以使用以下Python代码读取数据:

import pandas as pd

url = 'https://www.ncei.noaa.gov/access/services/data/v1?dataset=global-summary-of-the-day&stations=USW00094846&startDate=2010-01-01&endDate=2020-12-31&dataTypes=AWND,PRCP,SNOW,SNWD,TAVG,TMAX,TMIN,WDF2,WDF5,WSF2,WSF5&format=csv'

df = pd.read_csv(url)
temp_data = df['TAVG'].values

进行MK检验

接下来,我们将在Python中实现MK检验代码,这需要使用pymannkendall库。示例如下:

from pymannkendall import mk_test

# 对示例1进行MK检验
result1 = mk_test(data)
print(result1)

# 对示例2进行MK检验
result2 = mk_test(temp_data)
print(result2)

执行此代码后,可以得到MK检验的结果。MK检验的结果包括以下值:

  • Trend:表示单调升序或降序的统计显著性结果,可以是“increasing”、“decreasing”或“no trend”。
  • H:表示单调升序或降序显著性Hypothesis的布尔值,如果为True,则趋势显著。
  • p:表示趋势的p值,表示趋势检验的显著性水平。

以上两个示例的结果如下:

示例1:

Mann_Kendall_Test(trend='increasing', h=True, p=0.004161861676382656, z=2.881251461713301, Tau=0.7380952380952381, s=28.0, var_s=45.55555555555556, slope=1.5, intercept=0.7)

示例2:

Mann_Kendall_Test(trend='increasing', h=True, p=6.841573122120186e-16, z=7.010982716792785, Tau=0.14625504966513054, s=6377.0, var_s=265870523.0, slope=0.0009249566043382732, intercept=29.440159031933344)

结论

MK检验是一种用于检测数据集变化趋势的非参数假设检验方法。在以上示例中,我们使用Python的pymannkendall库实现MK检验,并基于两种不同类型的数据集进行了演示。可以看出,在示例1中,数据集具有单调上升的趋势,而在示例2中,温度变化具有渐进上升趋势。通过MK检验计算,可以得出这些趋势的统计显著性结果,进而对趋势的存在性和显著性进行判断。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现 MK检验示例代码 - Python技术站

(0)
上一篇 2023年6月6日
下一篇 2023年6月6日

相关文章

  • python 根据列表批量下载网易云音乐的免费音乐

    下面我将详细讲解“python 根据列表批量下载网易云音乐的免费音乐”的完整攻略。 1. 确认目标 首先要明确目标,即要批量下载的音乐是网易云音乐的免费音乐,而且我们需要提供一个音乐链接列表。 2. 安装必要的库 接着需要安装两个必要的Python库,一个是requests,用于获取API数据,另一个是pydub,用于处理音频文件。 pip install …

    python 2023年6月3日
    00
  • 获取python的list中含有重复值的index方法

    获取Python的list中含有重复值的index方法通常可以通过以下两种方式实现: 1.使用循环遍历 可以使用循环遍历的方式,逐个判断list中的元素是否重复,如果重复,则将该元素的index加入到一个新的列表中。具体代码如下: lst = [1, 2, 3, 4, 5, 2, 6, 7, 8, 2] duplicates = [] for i in ra…

    python 2023年6月3日
    00
  • python基础编程小实例之计算圆的面积

    Python基础编程小实例之计算圆的面积 1. 实现思路 计算圆的面积,需要用到圆的半径和圆周率。圆周率常用的取值是3.14159,而半径需要用户输入。然后根据圆的面积公式$S=\pi\times r^2$,计算出圆的面积值。 2. 实现步骤 2.1 输入半径 首先需要让用户输入圆的半径,可以使用input()函数获取用户输入的半径值,并将其转换为浮点型数值…

    python 2023年6月3日
    00
  • python解析json实例方法

    下面是“Python解析JSON实例方法”的完整攻略: 什么是JSON? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript语言的一个子集,允许在不同的编程语言之间进行数据交换。 Python中JSON的处理方法 Python内置了一个JSON库,…

    python 2023年6月3日
    00
  • Python安装图文教程 Pycharm安装教程

    下面是Python安装和Pycharm安装的详细教程: Python安装教程 1. 下载Python安装包 访问Python官网 http://www.python.org/downloads/ ,选择适合你操作系统的Python安装包下载。一般来说,你应该下载最新的稳定版Python 3.x 版本。 2. 安装Python 双击下载的Python安装包,按…

    python 2023年5月30日
    00
  • python smtplib模块自动收发邮件功能(一)

    下面我将详细讲解“python smtplib模块自动收发邮件功能(一)”的完整攻略。 1. 背景信息 在日常工作和生活中,我们经常需要发邮件或者接收邮件。而针对邮件的自动化处理,本文介绍了如何使用Python的smtplib模块实现邮件的自动收发功能。 2. smtplib模块的介绍 smtplib模块是Python标准库中用于实现邮件发送的模块。它支持S…

    python 2023年5月19日
    00
  • Python使用BeautifulSoup库解析HTML基本使用教程

    Python使用BeautifulSoup库解析HTML基本使用教程 BeautifulSoup是一个Python库,用于解析HTML和XML文档。它可以帮助我们从HTML文档中提取数据,并进行数据清洗和处理。在本文中,我们将详细讲解BeautifulSoup库的基本使用方法,并提供两个示例,以便更好地理解这个库。 安装BeautifulSoup库 在使用B…

    python 2023年5月15日
    00
  • Python 的 if __name__==”__main__” GNU Smalltalk 的成语?

    【问题标题】:Python’s if __name__==”__main__” idiom for GNU Smalltalk?Python 的 if __name__==”__main__” GNU Smalltalk 的成语? 【发布时间】:2023-04-05 19:06:02 【问题描述】: 这样的事情存在吗? 鲁比: if __FILE__ == …

    Python开发 2023年4月6日
    00
合作推广
合作推广
分享本页
返回顶部