我有一个时间序列,其中包含 2004 年至 2017 年间“饮食”一词每月被搜索的次数。从图中可以明显看出,该时间序列具有季节性,但我想计算自相关函数来证实这一点。
可以在此处找到时间序列的数据:Google trends words 。这是数据的基本图:
import pandas as pd
df = pd.read_csv('data.csv')
df.columns = ['year_month', 'diet', 'gym', 'finance']
# convert year-month column into datetime
df.month = pd.to_datetime(df.year_month)
df.set_index('year_month', inplace=True)
df['diet'].plot()
我首先取一阶差分来去除趋势
df['diet_first_diff'] = df['diet'].diff()
得到下图:
当我使用计算自相关函数时
pd.plotting.autocorrelation_plot(df['diet_first_diff']);
我得到一个空图:
我用原始数据(在第一次差分之前)计算自相关函数没有问题,但我不知道为什么第一次差分数据的自相关函数无法计算。知道为什么吗?
最佳答案
明白了。该系列传进pd.plotting.autocorrelation_plot()
命令不能有任何 nan
值(value)观。通过 1 个周期一阶差分(导致第一个观察值缺失),此方法有效 pd.plotting.autocorrelation_plot(df['diet'].diff()[1:])
.
关于python - 为什么我无法计算一阶差分时间序列的自相关函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48761320/