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

相关文章
|
22小时前
|
数据采集 数据可视化 Python
Python分析香港26281套在售二手房数据
Python分析香港26281套在售二手房数据
|
1天前
|
数据采集 存储 数据挖掘
Python DataFrame初学者指南:轻松上手构建数据表格
【5月更文挑战第19天】本文是针对初学者的Pandas DataFrame指南,介绍如何安装Pandas、创建DataFrame(从字典或CSV文件)、查看数据(`head()`, `info()`, `describe()`)、选择与操作数据(列、行、缺失值处理、数据类型转换、排序、分组聚合)以及保存DataFrame到CSV文件。通过学习这些基础,你将能轻松开始数据科学之旅。
|
1天前
|
机器学习/深度学习 运维 算法
python时间序列异常检测ADTK
`adtk`是Python中用于无监督时间序列异常检测的工具包,包含简单算法、特征加工和流程控制。安装使用`pip install adtk`。数据要求为`DatetimeIndex`格式。异常检测包括滑动窗口统计特征、季节性拆解、降维和重构。提供了ThresholdAD、QuantileAD、InterQuartileRangeAD、GeneralizedESDTestAD等离群点检测算法,以及PersistAD和LevelShiftAD检测突变。此外,SeasonalAD用于季节性异常检测,Pipeline可组合多种算法。5月更文挑战第16天
19 5
python时间序列异常检测ADTK
|
1天前
|
数据挖掘 数据处理 Python
【Python DataFrame 专栏】Python DataFrame 入门指南:从零开始构建数据表格
【5月更文挑战第19天】本文介绍了Python数据分析中的核心概念——DataFrame,通过导入`pandas`库创建并操作DataFrame。示例展示了如何构建数据字典并转换为DataFrame,以及进行数据选择、添加修改列、计算统计量、筛选和排序等操作。DataFrame适用于处理各种规模的表格数据,是数据分析的得力工具。掌握其基础和应用是数据分析之旅的重要起点。
【Python DataFrame 专栏】Python DataFrame 入门指南:从零开始构建数据表格
|
1天前
|
机器学习/深度学习 数据处理 Python
如何利用Python实现高效的数据清理与预处理
数据清理和预处理是数据科学家和分析师工作中不可或缺的一环,而Python作为一门强大的编程语言,可以使这个过程变得更加高效和便捷。本文将介绍一些常见的数据清理和预处理技术,并演示如何使用Python来实现这些技术。
|
5天前
|
数据可视化 数据挖掘 Python
Python用 tslearn 进行时间序列聚类可视化
Python用 tslearn 进行时间序列聚类可视化
|
5天前
|
Python 数据可视化 索引
PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化
PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化
PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化
|
自然语言处理 数据可视化 数据挖掘
如何用Python做舆情时间序列可视化?
如何批量处理评论信息情感分析,并且在时间轴上可视化呈现?舆情分析并不难,让我们用Python来实现它吧。 痛点 你是一家连锁火锅店的区域经理,很注重顾客对餐厅的评价。
1797 0
|
16小时前
|
数据采集 算法 Python
2024年Python最全python基础入门:高阶函数,小米面试编程题
2024年Python最全python基础入门:高阶函数,小米面试编程题
|
17小时前
|
数据采集 人工智能 前端开发
干货满满,转行逆袭,0编程基础学Python拿高薪offer如何做?都在这里!
干货满满,转行逆袭,0编程基础学Python拿高薪offer如何做?都在这里!