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技术站