当前位置: 首页 > news >正文

时间序列噪声模型分析软件推荐与使用经验

最近在论文大修2024年投稿的一篇文章,大修了2轮,最后一次还是重新投稿,其中有一个问题一直被审稿人怼,他认为我计算时间序列的趋势的时候,没有考虑时间的相关性,即对噪声模型的估计不合理,会影响对趋势和其不确定度的估计。我之前从来没意识到这个问题:

要用最小二乘法(Least Squares)估计一个时间序列的趋势及其不确定度,你可以将时间序列拟合为一个线性模型:

(1)最小二乘估计(OLS)

假设有 nn个数据点 (ti,yi)(ti​,yi​),可以构造设计矩阵:

(2)估计不确定度(标准误)

python 代码:

import numpy as np
import matplotlib.pyplot as plt

# 模拟数据
t = np.arange(0, 10, 1)  # 年份
y = 2.0 + 0.3 * t + np.random.normal(0, 0.2, len(t))  # 加上噪声

# 构造设计矩阵
X = np.vstack([np.ones(len(t)), t]).T

# 最小二乘解
beta_hat = np.linalg.inv(X.T @ X) @ X.T @ y
a, b = beta_hat

# 残差与方差
residuals = y - X @ beta_hat
sigma2 = np.sum(residuals**2) / (len(t) - 2)
cov_beta = sigma2 * np.linalg.inv(X.T @ X)
b_std = np.sqrt(cov_beta[1, 1])

print(f"趋势估计:{b:.4f} ± {b_std:.4f} (单位/年)")
 

但是实际上上述是假设残差是符合正态分布,而实际上很多地球物理的观测结果是存在有色噪声影响的。因此用上述的程序计算的结果是否合理需要评估。

在我这次的论文大修中,审稿人给我推荐了两个有用的处理工具:

HECTOR 或 estnoise 这两款工具 —— 它们都易于使用,且免费提供,可以在回归参数估计的同时估算随机特性。需要注意的是,HECTOR 还支持估计时变的季节信号,这在某些研究中可能具有参考价值。但如果作者坚持使用缩放方法,那就必须以稳健的方式来执行。

  • Hector - TeroMovigo

  • https://www.usgs.gov/node/279390

在这里我推荐使用Hector,因为这个可以估算时变的季节性信号。而我们的时间许多很多是有季节性变化的。

(3)Hector介绍

Hector 是一款开源的学术软件包,专为在时间序列数据中估计轨迹模型(如含年度信号的线性趋势)而设计,尤其适用于存在时间相关噪声的情况。在地球物理研究中,轨迹估计至关重要,因为我们关注的现象往往包括气温上升、由气候变化引起的海平面上升、以及由地壳垂向运动或构造板块运动引起的位置变化等。在这类时间序列中,噪声通常具有时间相关性,这会显著影响线性趋势估计的精度,因此推荐使用像 Hector 这样的程序工具。Hector 假设用户预先了解其观测数据中可能存在的时间相关噪声类型,并通过最大似然估计(MLE)方法同时估计线性趋势和所选噪声模型的参数。Hector 由 TeroMovigo 团队开发和维护,旨在为学术界持续提供支持。有关其底层方法的详细介绍,可参考著作 《Geodetic Time Series Analysis in Earth Sciences》。此外,还有一些其他知名程序可用于类似任务,如 CATS 和 est_noise。已有研究对 Hector 和 est_noise 进行了广泛比较,结果表明两者在输出结果上高度一致。如果你在学术出版物中使用 Hector,请引用以下文献以致谢:Bos, M.S., Fernandes, R.M.S., Williams, S.D.P., and Bastos, L. (2013).
Fast Error Analysis of Continuous GNSS Observations with Missing DataJournal of Geodesy, 87(4), 351–360.doi: 10.1007/s00190-012-0605-0

这个软件在Linux系统是可以直接运行下载的程序包,而本人使用的mac系统只能自己编译源代码

Hector 软件包主要设计用于在类 Unix 操作系统(如 Linux 或 macOS)上运行。如果你不想使用预编译的静态可执行文件,也可以自行编译源代码。在这种情况下,需要同时安装 BoostFFTW3 和 OpenBLAS 等库。对于 Mac 用户,可以使用 **Xcode(clang 编译器)**和 Homebrew 来编译源代码。如需下载最新版本(2.1)的静态可执行文件(适用于多种 Linux 发行版)、源代码与示例数据Python 3 脚本使用手册,请点击以下链接:

• hector_2.0_OL8.tar.bz2 (Oracle Linux 8)
• hector_2.0_SL7.tar.bz2 (Scientific Linux 7)
• hector_2.0_Ubuntu18.04.tar.bz2 (Ubuntu 18.04 LTS)
• hector_2.0_Ubuntu20.04.tar.bz2 (Ubuntu 20.04 LTS)
• hector_2.0_Ubuntu21.04.tar.bz2 (Ubuntu 21.04)
• hector_2.1_Ubuntu20.04.tar.bz2 (Ubuntu 20.04 LTS)
• hector_2.1_Ubuntu21.04.tar.bz2 (Ubuntu 21.04)
• hector_2.1_Ubuntu22.04.tar.bz2 (Ubuntu 22.04 LTS)
• hector-2.1_CentOS7.tar.bz2 (CentOS7)
• hector-2.1_CentOS9.tar.bz2 (CentOS9)
• source code hector-2.0
• source code hector-2.1
• Python3 scripts hector-2.0
• Python3 scripts hector-2.1
• examples
• manual hector-2.0
• manual hector-2.1

(4)Hector使用

如果在Linux中,可以直接运行程序

而在mac系统中,则需要先安装一个Docker,配置一个linux环境

1️⃣ 安装 Docker Desktop

前往官网下载安装:

🔗 https://www.docker.com/products/docker-desktop/

安装后打开 Docker,确保状态栏图标为绿色,表示运行正常。

2️⃣ 创建一个 Linux 容器(如 Ubuntu)

docker pull ubuntu:22.04

然后启动一个交互式容器:

docker run -it --name hector_env ubuntu:22.04

第一次运行会进入 Linux shell,类似 Ubuntu 终端环境。

执行数据处理命令:

./estimatetrend estimatetrend.ctl

可以得到以下的结果:

后续还可以估计时间序列的频谱信号特征,以及建模的信号特征:

./estimatespectrum estimatespectrum.ctl

./modelspectrum modelspectrum.ctl

更具体的处理流程需要参见说明手册。

❤️欢迎点赞收藏❤️

相关文章:

  • [9-1] USART串口协议 江协科技学习笔记(13个知识点)
  • 基于生产-消费模式,使用Channel进行文件传输(Tcp方式)
  • Rocky Linux上安装Go
  • 66常用控件_QTableWidget的使用
  • Win11安装Dify
  • APM32微控制器键盘PCB设计实战教程
  • Scratch节日 | 拯救屈原 | 端午节
  • WPF的布局核心:网格布局(Grid)
  • 数学概念解释数据集(200条)收集分享,为AI智能体应用助力~
  • MVCC 原理与并发控制实现
  • 长安链智能合约命令解析(全集)
  • LeetCode 3373.连接两棵树后最大目标节点数目 II:脑筋急转弯+广度优先搜索(黑白染色法)
  • ArkUI(方舟UI框架)介绍
  • nacos服务注册
  • C语言编程--20.合并K个升序列表
  • React 编译器
  • React 第四十九节 Router中useNavigation的具体使用详解及注意事项
  • 项目更改权限后都被git标记为改变,怎么去除
  • 2025年渗透测试面试题总结-匿名[校招]安全研究员(SAST方向)(题目+回答)
  • Android bindservice绑定服务,并同步返回service对象的两个方法
  • 上海模板网站建设/全球外贸b2b网站
  • wordpress 无权限/百家号关键词seo优化
  • 游戏网站制作板式/长沙seo技术培训
  • 网站推广都做什么内容/ui设计培训班哪家好
  • 站长号/小程序搭建
  • 烟台商机互联做网站吗/刘连康seo培训哪家强