VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > 简明python教程 >
  • ARMR模型简单实践(1)

1.概念简述

(1)AR模型

AR 模型(auto regressive model)自回归模型,模型参量法高分辨率谱分析方法之一,也是现代谱估计中常用的模型。
用AR模型法求信具体作法是:
①选择AR模型,在输入是冲激函数或白噪声的情况下,使其输出等于所研究的信号,至少,应是对该信号的一个好的近似。
②利用已知的自相关函数或数据求模型的参
数。
③利用求出的模型参数估计该信号的功率谱。 
(2)MA模型
MA模型(moving average model)滑动平均模型,模型参量法谱分析方法之一,也是现代谱估中常用的模型。
用MA模型法求信号谱估计的具体作法是:①选择MA模型,在输入是冲激函数或白噪声情况下,使其输出等于所研究的信号,至少应是对该信号一个好的近似。②利用已知的自相关函数或数据求MA模型的参数。③利用求出的模型参数估计该信号的功率谱。
在ARMA参数谱估计中,大多数估计ARMA参数的两步方法都首先估计AR参数,然后在这些AR参数基础上,再估计MA参数,然后可求出ARMA参数的谱估计。所以MA模型参数估计常作为ARMA参数谱估计的过程来计算。
 
2.使用pythonADF检验

在ARMA/ARIMA这样的自回归模型中,模型对时间序列数据的平稳是有要求的,因此,需要对数据或者数据的n阶差分进行平稳检验,而一种常见的方法就是ADF检验,即单位根检验。

平稳随机过程

在数学中,平稳随机过程(Stationary random process)或者严平稳随机过程(Strictly-sense stationary random process),又称狭义平稳过程,是在固定时间和位置的概率分布与所有时间和位置的概率分布相同的随机过程:即随机过程的统计特性不随时间的推移而变化。这样,数学期望和方差这些参数也不随时间和位置变化。

平稳在理论上有严平稳和宽平稳两种,在实际应用上宽平稳使用较多。宽平稳的数学定义为:

对于时间序列 ytyt,若对任意的t,k,mt,k,m,满足:

$$E(y_t) = E(y_{t+m})\\

cov(y_t, y_{t+k}) = cov(y_{t+k}, y_{t+k+m})$$

则称时间序列 ytyt 是宽平稳的。

平稳是自回归模型ARMA的必要条件,因此对于时间序列,首先要保证应用自回归的n阶差分序列是平稳的。

(1)肉眼检验
1
2
3
4
5
6
7
8
9
10
11
12
def draw_rend(timerise, size):
    # print(timerise)
    = plt.figure(facecolor='white')  # 画图板
    rol_mean = timerise.rolling(window=size).mean()  # 对数据时间移动平均计算
    rol_std = timerise.rolling(window=size).std()
    # rol_ = timerise.rolling(window=size).std()
    timerise.plot(color='c', label='原数据')
    rol_std.plot(color='red', label="移动方差")
    rol_mean.plot(color='blue', label="移动平均值")
    plt.title("愿数据,均值,方差")
    plt.legend(loc='best')
    plt.show()

  

 
该数据显然是不平稳的,我们来看看一阶差分:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def teststationayity(ts):
    dftest = adfuller(ts)  # 实例化检验得到数值源
    # print(dftest)
    dfoutput = pd.Series(dftest[0:4], index=['Test Statistic''p_value''#Lags Used',
                                             'Number of Observation Uesd'])
    # print(dfoutput)
    #n阶差分
    # _data=pd.Series(ts)
    # data=_data.diff(1)[1:]
    # # print(data)
    # data.plot()
    # plt.show()
    # plt.savefig('./diff_1.svg')
 
    for key, value in dftest[4].items():
        dfoutput['Critical Value({})'.format(key)] = value
    return dfoutput

相关教程