finviz-crawler
持续抓取Finviz财经新闻,本地存储并支持查询与AI摘要。
下载 46
使用参数与非参数方法检测时间序列数据中的长期趋势,适用于环境等领域的统计分析。
openclaw skills install @wu-uk/lake-warming-attribution-trend-analysis命令、参数、文件名以原文为准
趋势分析用于判断时间序列是否存在统计上显著的长期上升或下降趋势。本指南涵盖参数方法(线性回归)和非参数方法(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 斜率对异常值具有鲁棒性,且不依赖正态性假设,适用于环境数据。
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 斜率 |
| 斜率接近零但显著 | 样本量过大 | 检查实际意义 |
已收录 1 个 Skill