时间序列预处理


对于平稳非随机序列进行进一步建模分析。
平稳性->对应建模类型进一步分析
非随机性->有进一步分析的价值
非平稳序列->需要进一步检验变换处理之后才能确定拟合模型


一、特征统计量

1)均值

E(X)----np.mean(x)

2)方差

σ²=DX=E(X-μ)²

3)自协方差和自相关系数

自协方差 γ(t,s)=E(Xt-μt)(Xs-μs)
自相关系数 ρ(t,s)=γ(t,s)/((DXt*DXs)**0.05)

自己过去行为对自身现在的影响

def mydrawts(y,pname):
    myname='OK'
    ##draw ax
    fig = plt.figure(figsize=(10,8))
    ts_ax=plt.subplot2grid((2,2),(0,0),colspan=2)
    acf_ax=plt.subplot2grid((2,2),(1,0))
    pacf_ax=plt.subplot2grid((2,2),(1,1))
    ##draw plot
    ts_ax.plot(y,'*-')
    ts_ax.set_title('Time Series Analysis Plots(custom %s)'%myname)
    
    ##calclate acf    
    myacf=np.ones((17))
    ###自相关系数

    uy=np.mean(y)
    i=0
    under=0
    for i in range(len(y)):
        under=under+(y[i]-uy)*(y[i]-uy)
        i=i+1
    #index 17 is out of bounds for axis 0 with size 17
    for k in range(1,17):
        # k的参与运算
        temp = 0
        temp = np.sum((y[:-k] - uy) * (y[k:] - uy) )
 
        myacf[k] = temp / under
        k=k+1
        #print(myacf[k])
        #print(k)



    twosigma = np.ones((17))
    ###YOUR CODE to calculate 2 sigma
    ## 置信区间(?)
    ## ax.fill_between(lags, confint[:, 0] - acf_x, confint[:, 1] - acf_x, alpha=0.25)
   
    twosigma[0]=(1/len(y))**0.5
    for m in range(1,17):
        twosigma[m] = ((np.sum(myacf[1:m+1]**2)*2+1)/len(y))**0.5
        m=m+1
    twosigma=twosigma*2

    acf_ax.bar(range(len(myacf)), myacf)
    acf_ax.fill_between(range(len(myacf)), -1 * twosigma, twosigma, color='lightblue')

    plt.xticks(range(-1,1))

    # plt.savefig('%s.jpg'%pname,dpi=256)
    plt.show()
    plt.close()

二、平稳性的性质与意义

常数均值。
自协方差与自相关系数与时间长度相关,与起止位置无关。
自相关系数t=0为1,对称且非负定性(?)。

平稳性意义
1、均值序列可表示为含有一个变量的常数序列(?)

2、原本每个随机变量的均值(方差等)只能依靠一个样本观察值去估计。
基于平稳性,每个统计量将拥有大量样本观察值(?)。
减少了随机变量的个数,并增加待估计变量的样本容量。
简化时序分析难度,增加精度。


三、平稳性的判断

1)图检验

时序图,均值方差为常数。波动范围有界,无趋势与明显周期。
自相关图(自相关系数和延迟期数),短期相关性并会迅速衰减向0

2)统计检验(如单位根检验)

(线性差分方程)


四、纯随机性检验

(数据分析有进一步的意义,历史数据对未来有影响,有相关性)

1)白噪声序列

纯随机性
方差齐性

2)纯随机性检验(白噪声检验)-检验统计量

Q统计量

在这里插入图片描述

LB统计量

在这里插入图片描述

def mypurerandtest(y):
    n = len(y)
    myacf = np.ones((n))
    LB = np.zeros(n)

    myacf = np.ones((n))
     ##calclate acf    
    ###自相关系数的计算

    uy=np.mean(y)
    i=0
    under=0
    for i in range(len(y)):
        under=under+(y[i]-uy)*(y[i]-uy)
        i=i+1
    #index 17 is out of bounds for axis 0 with size 17
    for k in range(1,17):
        # k的参与运算
        temp = 0
        temp = np.sum((y[:-k] - uy) * (y[k:] - uy) )
 
        myacf[k] = temp / under
        k=k+1
        #print(myacf[k])
        #print(k)


	##LB统计量的计算
    for i in range(0, n):
        for k in range(1, i + 1):
            LB[i] = LB[i] + ((myacf[k] ** 2) / (n - k))
        
        LB[i]=LB[i]*n*(n+2)


    lag = np.arange(0, n)
    myd = pd.DataFrame(np.c_[lag, LB], columns=['lags', 'LB'])

    print(myd[:23])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值