Python自激励阈值自回归(SETAR)、ARMA、BDS检验、预测分析太阳黑子时间序列数据

简介: Python自激励阈值自回归(SETAR)、ARMA、BDS检验、预测分析太阳黑子时间序列数据

全文链接 :https://tecdat.cn/?p=33896


这篇文章展示了自激励阈值自回归SETAR的使用,用于分析经常被客户研究的太阳黑子数据集。具体而言,研究SETAR模型的估计和预测点击文末“阅读原文”获取完整代码数据


我们在这里考虑原始的太阳黑子序列以拟合ARMA示例,尽管文献中许多来源在建模之前对序列进行变换。

import numpy as np
import pandas as pd
......
dta.index = pd.Index(sm.......m_range('1700', '2008'))

image.png

点击标题查阅往期内容


R语言时间序列TAR阈值自回归模型


01

02

03

04


首先,我们将用ARMA对数据进行AR(3)过程拟合。

arma_mod30 = sm.tsa.ARMA(dta, (3,0)).fit()......0.hqic

image.png

为了测试非线性,可以使用线性AR(3)模型的残差进行BDS检验。

bds.bds(arm......sid, 3)

image.png

这表明可能存在潜在的非线性结构。为了试图捕捉这个结构,我们将对数据拟合SETAR(2)模型,允许两种制度,并且每个制度都是AR(3)过程。在这里,我们没有指定延迟或阈值值,因此它们将从模型中最优选择。

注意:在摘要中,\gamma参数是阈值值。

ser_23 = star......).fit()

image.png

AIC和BIC准则更喜欢SETAR模型而不是AR模型。

注意:这是一个自助法检验,所以在改进之前速度可能会比较慢。

f_sat, pae,bsf_tas = stoest()

image.png

零假设是SETAR(1),因此我们可以拒绝它,选择SETAR(2)作为备择假设。

不过需要注意的是,order_test()的默认假设是存在异方差性,这在这里可能是不合理的。

f_stat_h, pvalue_h, bs_f_stats_h = ......g')
print pvalue

image.png

需要注意,在考虑时序残差时,BDS检验仍然拒绝原假设,尽管比AR(3)模型的拒绝程度更小。我们可以查看残差图,看看误差是否具有零均值,但可能不具有同方差性。

print bds.bds(setar_mod23.resid, 3)
setar_mod23.resid.plot(figsize=(10,5));

image.png

image.png

相对于ARMA模型,这里估计了两种新类型的参数。延迟参数和阈值。延迟参数选择要使用作为阈值变量的过程滞后,并且阈值指示将数据点分隔为(此处为两个)状态的阈值变量。

似然比统计量小于临界值的替代阈值包含在置信集中,置信区间的下限和上限分别是置信集中最小和最大的阈值。

setarmd23.plo......ght=5);

image.png

我们可以查看样本内动态预测和样本外预测。

predit_am_mo30 = arma_mod30.predict('1990', '2012', dynamic=True)
ax = dta.ix['1950':].pot(igsze=(12,8))......

image.png

看起来,SETAR模型的动态预测能够稍微更好地跟踪观察到的数据点,而不是AR(3)模型。我们可以通过均方根预测误差进行比较,并看到SETAR表现略好一些。

def rsf(y, yhat):
    return (y.sb(yhat**2).man()
prnt 'AR(3):        ', rse(dta.SNACTIVI......od23)

image.png

然而,如果扩展预测窗口,则明显SETAR模型是唯一一个适合数据形状的模型,因为数据是循环的。

preict_am_mo30_long = ama_md30.predict('1960', '2012', dynamic=True)......
ax.legend();

image.png

print 'AR(3):        ', rmsfe(dta.S......ong)

image.png

相关文章
|
20天前
|
BI Python
SciPy 教程 之 Scipy 显著性检验 8
本教程介绍SciPy中显著性检验的应用,包括如何利用scipy.stats模块进行显著性检验,以判断样本与总体假设间的差异是否显著。通过示例代码展示了如何使用describe()函数获取数组的统计描述信息,如观测次数、最小最大值、均值、方差等。
25 1
|
21天前
|
Python
SciPy 教程 之 Scipy 显著性检验 7
SciPy 教程之 Scipy 显著性检验第7部分,介绍显著性检验的基本概念及其在 SciPy 中的应用。显著性检验用于评估样本数据与假设之间的差异是否由随机因素引起。SciPy 的 `scipy.stats` 模块提供了执行显著性检验的功能,包括 KS 检验等方法,用于检测数据是否符合特定分布。示例代码展示了如何使用 KS 检验验证一组数据是否符合正态分布。
19 2
|
23天前
|
Python
SciPy 教程 之 Scipy 显著性检验 3
本教程介绍Scipy显著性检验,包括其基本概念、原理及应用。显著性检验用于判断样本与总体假设间的差异是否显著,是统计学中的重要工具。Scipy通过`scipy.stats`模块提供了相关功能,支持双边检验等方法。
25 1
|
29天前
|
图形学 Python
SciPy 空间数据2
凸包(Convex Hull)是计算几何中的概念,指包含给定点集的所有凸集的交集。可以通过 `ConvexHull()` 方法创建凸包。示例代码展示了如何使用 `scipy` 库和 `matplotlib` 绘制给定点集的凸包。
27 1
|
1月前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
1月前
|
数据采集 Web App开发 iOS开发
如何使用 Python 语言的正则表达式进行网页数据的爬取?
使用 Python 进行网页数据爬取的步骤包括:1. 安装必要库(requests、re、bs4);2. 发送 HTTP 请求获取网页内容;3. 使用正则表达式提取数据;4. 数据清洗和处理;5. 循环遍历多个页面。通过这些步骤,可以高效地从网页中提取所需信息。
|
2月前
|
数据可视化 算法 JavaScript
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
本文探讨了如何利用图论分析时间序列数据的平稳性和连通性。通过将时间序列数据转换为图结构,计算片段间的相似性,并构建连通图,可以揭示数据中的隐藏模式。文章介绍了平稳性的概念,提出了基于图的平稳性度量,并展示了图分区在可视化平稳性中的应用。此外,还模拟了不同平稳性和非平稳性程度的信号,分析了图度量的变化,为时间序列数据分析提供了新视角。
62 0
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
|
24天前
|
Python
SciPy 教程 之 Scipy 显著性检验 1
本教程介绍Scipy显著性检验,包括统计假设、零假设和备择假设等概念,以及如何使用scipy.stats模块进行显著性检验,以判断样本与总体假设间是否存在显著差异。
24 0
|
29天前
|
索引 Python
SciPy 空间数据1
SciPy 通过 `scipy.spatial` 模块处理空间数据,如判断点是否在边界内、计算最近点等。三角测量是通过测量角度来确定目标距离的方法。多边形的三角测量可将其分解为多个三角形,用于计算面积。Delaunay 三角剖分是一种常用方法,可以对一系列点进行三角剖分。示例代码展示了如何使用 `Delaunay()` 函数创建三角形并绘制。
31 0
|
1月前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
67 0