ARIMA模型---时间序列分析---温度预测

本文介绍了如何使用ARIMA模型进行时间序列分析,特别是在预测温度方面的应用。首先,通过画图分析数据的平稳性,然后进行差分处理。通过观察ACF和PACF图确定ARIMA模型的参数p和q。虽然遇到一阶差分后ACF图异常的问题,但通过去除首个数据点解决了这一问题。通过ADF检验确认数据平稳性后,使用ARIMA(9, 3)模型进行训练,并展示模型的预测效果。最后,探讨了如何自动选择p和q的值,以及预测时使用predict函数的注意事项。" 78700872,7392427,解决Android ViewPager嵌套ViewPager滑动冲突,"['Android开发', '嵌套滑动', 'UI交互']
摘要由CSDN通过智能技术生成

(图片来自百度)

数据

分析数据第一步还是套路------画图

数据看上去比较平整,但是由于数据太对看不出具体情况,于是将只取前300个数据再此画图

这数据看上去很不错,感觉有隐藏周期的意思

代码

#coding:utf-8
import csv
import matplotlib.pyplot as plt

def read_csv_data(aim_list_1, aim_list_2, file_name):
    i = 0
    csv_file = csv.reader(open(file_name,'r'))
    for data in csv_file:
        if (i == 0):
            i += 1
            continue
        aim_list_1.append(float(data[1]))
        aim_list_2.append(data[3])
    return
def plot_picture(x, y):
    plt.xlabel('x')
    plt.ylabel('y')
    plt.plot(x, y)
    plt.show()
    return
if __name__ == '__main__':
    temp = []
    tim = []
    file_name = 'C:/Users/lichaoxing/Desktop/testdata.csv'
    read_csv_data(temp, tim, file_name)
    plot_picture(tim[:300], temp[:300])

使用ARIMA模型(ARMA)

第一步观察数据是否是平稳序列,通过上图可以看出是平稳的

如果不平稳,则需要进行预处理,方法有   对数变换    差分

对于平稳的时间序列可以直接使用ARMA(p, q)模型进行拟合

ARMA (p, q) :  AR(p) + MA(q)

此时参数p和q的确定可以通过观察ACF和PACF图来确定

通过观察PACF图可以看出,阶数为9也就是p=9,这里ACF图看出自相关呈现震荡下降收敛,但是怎么决定出q,我没太明白,这里姑且拍脑袋才一个吧就q=3

但是这里我遇到了一个问题,没有搞懂,就是平稳的序列,如果我进行一阶差分后应该仍然是平稳的序列,但是这个时候我又画了一个ACF与PACF图,竟然是下图这样,lag的范围是-0.04到0.04(不懂)

 


 

lag的范围是-0.04到0.04的问题原因(修改于再次使用此模型)

原因:

当时,我使用的是一阶差分,也就是让数据的后一个值减去前一个值得到新的值,这样就会导致第一个值变为缺失值(下面的数据是再此使用此模型时的数据,与原博客数据无关

就是因为此处的值为缺失值,导致绘制ACF与PACF时数据有问题而无法成功显示

解决办法,在绘制上述图形前,将第一个数据去除:

 

dta= dta.diff(1)
dta = dta.truncate(before= ym[1])#删除第一个缺失值

 

 

 

 


其实还有就是使用ADF检验,得到的结果如图,这个p值很小===》平稳

画图代码

def acf_pacf(temp, tim):
    x = tim
    y = temp
    dta = pd.Series(y, index = pd.to_datetime(x))
    fig = plt.figure(figsize=(9,6))
    ax1 = fig.add_subplot(211)
    fig = sm.graphics.tsa.plot_acf(dta,lags=50,ax=ax1)
    ax2 = fig.add_subplot(212)
    fig = sm.grap
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>