ARIMA初探

本文深入探讨了ARIMA模型在时间序列预测中的应用。首先,通过数据探查发现原始数据不稳定,通过移动平均和差分方法实现数据稳定。接着,介绍了指数加权移动平均(ewma)和衰减因子的作用。在确定ARIMA模型的参数p和q时,利用ACF和PACF图。最终,通过差分、模型构建和反差分得到预测结果。文章强调了数据平稳性的重要性,并提供了实践操作的步骤。

数据探查

import pandas as pd
import numpy as np
import matplotlib.pylab as plt
from matplotlib.pylab import rcParams
#rcParams设定好画布的大小
rcParams['figure.figsize'] = 15, 6
path = '/Users/***/workspace/Analytics_Vidhya/Articles/Time_Series_Analysis/AirPassengers.csv'
dateparse = lambda dates: pd.datetime.strptime(dates, '%Y-%m')
#---其中parse_dates 表明选择数据中的哪个column作为date-time信息,
#---index_col 告诉pandas以哪个column作为 index
#--- date_parser 使用一个function(本文用lambda表达式代替),使一个string转换为一个datetime变量
data = pd.read_csv(path, parse_dates=['Month'], index_col='Month',date_parser=dateparse)
data.head(6)
Month #Passengers
1949-01-01 112
1949-02-01 118
1949-03-01 132
1949-04-01 129
1949-05-01 121
1949-06-01 135
from statsmodels.tsa.stattools import adfuller

def test_stationarity(timeseries):
    # 这里以一年为一个窗口,每一个时间t的值由它前面12个月(包括自己)的均值代替,标准差同理。
    # rolmean = pd.rolling_mean(timeseries, window=12)
    #
    # rolstd = pd.rolling_std(timeseries, window=12)
    rolmean = timeseries.rolling(window=12).mean()
    rolstd = timeseries.rolling(12).std()

    # plot rolling statistics:
    fig = plt.figure()
    fig.add_subplot()
    orig = plt.plot(timeseries, color='blue', label='Original')
    mean = plt.plot(rolmean, color='red', label='rolling mean')
    std = plt.plot(rolstd, color='black', label='Rolling standard deviation')

    plt.legend(loc='best')
    plt.title('Rolling Mean & Standard Deviation')
    plt.show(block=False)

    # Dickey-Fuller test:

    print('Results of Dickey-Fuller Test:')

    dftest = adfuller(timeseries, autolag='AIC')
    # dftest的输出前一项依次为检测值,p值,滞后数,使用的观测数,各个置信度下的临界值
    dfoutput = pd.Series<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值