
(图片来自百度)
数据

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

数据看上去比较平整,但是由于数据太对看不出具体情况,于是将只取前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

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

被折叠的 条评论
为什么被折叠?



