trend-analysis

使用参数与非参数方法检测时间序列数据中的长期趋势,适用于环境等领域的统计分析。

已扫描
适合谁
科研人员、环境数据分析员
不适合谁
无统计基础的普通用户、无需长期趋势分析的日常办公者
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @wu-uk/lake-warming-attribution-trend-analysis

Skill 说明

命令、参数、文件名以原文为准

趋势分析指南

概述

趋势分析用于判断时间序列是否存在统计上显著的长期上升或下降趋势。本指南涵盖参数方法(线性回归)和非参数方法(Sen's 斜率)。

参数方法:线性回归

线性回归通过拟合一条直线来分析数据,并检验斜率是否显著不同于零。

from scipy import stats

slope, intercept, r_value, p_value, std_err = stats.linregress(years, values)

print(f"斜率: {slope:.2f} 单位/年")
print(f"p值: {p_value:.2f}")

假设条件

  • 时间与变量之间存在线性关系
  • 残差服从正态分布
  • 方差齐性(方差恒定)

非参数方法:Sen's 斜率与曼-肯德尔检验

Sen's 斜率对异常值具有鲁棒性,且不依赖正态性假设,适用于环境数据。

import pymannkendall as mk

result = mk.original_test(values)

print(result.slope)  # Sen's 斜率(每单位时间的变化速率)
print(result.p)      # 显著性检验的 p 值
print(result.trend)  # 'increasing'(上升)、'decreasing'(下降)或 'no trend'(无趋势)

方法对比

方法优点缺点
线性回归易于解释,提供 R²对异常值敏感
Sen's 斜率对异常值鲁棒,无需正态性假设统计功效略低

显著性水平

p值解释
p < 0.01极显著趋势
p < 0.05显著趋势
p < 0.10边缘显著
p >= 0.10无显著趋势

示例:年降水量趋势分析

import pandas as pd
import pymannkendall as mk

# 加载年降水量数据
df = pd.read_csv('precipitation.csv')
precip = df['Precipitation'].values

# 执行曼-肯德尔检验
result = mk.original_test(precip)
print(f"Sen's 斜率: {result.slope:.2f} mm/年")
print(f"p值: {result.p:.2f}")
print(f"趋势: {result.trend}")

常见问题

问题原因解决方案
p值 = NaN数据点过少至少需要 8–10 年数据
结果冲突不同方法假设不同环境数据优先信任 Sen's 斜率
斜率接近零但显著样本量过大检查实际意义

最佳实践

  • 至少使用 10 个数据点以确保结果可靠
  • 环境时间序列推荐使用 Sen's 斜率
  • 同时报告斜率大小和 p 值
  • 结果保留两位小数
WU
@wu-uk

已收录 1 个 Skill

相关推荐