Python自激励阈值自回归(SETAR)、ARMA、BDS检验、预测分析太阳黑子时间序列数据
  MFqKcJmbshKy 2023年11月24日 27 0

这篇文章展示了自激励阈值自回归SETAR的使用,用于分析经常被客户研究的太阳黑子数据集。具体而言,研究SETAR模型的估计和预测。

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

 

 

import numpy as np
import pandas as pd
......

 

 

dta.index = pd.Index(sm.......m_range('1700', '2008'))

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

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

 

 

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

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

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

 

 

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

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

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

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

 

 

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

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

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

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

 

 

f_sat, pae,bsf_tas = stoest()

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

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

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

 

 

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

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

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

 

 

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

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

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

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

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

 

 

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

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

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

 

 

predit_am_mo30 = arma_mod30.predict('1990', '2012', dynamic=True)

 

 

ax = dta.ix['1950':].pot(igsze=(12,8))......

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

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

 

 

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

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

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

 

 

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

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

 

 

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

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


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

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月24日 0

暂无评论

推荐阅读
MFqKcJmbshKy