ACF图和操作数的问题

问题描述 投票:0回答:1

这段代码过去运行得很好,但是由于未知原因,它不再可用了。以某种方式绘制整个第二个acf图存在问题。

import numpy as np, pandas as pd
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
import matplotlib.pyplot as plt
plt.rcParams.update({'figure.figsize':(9,7), 'figure.dpi':120})

# Import data
df = pd.read_csv('https://raw.githubusercontent.com/selva86/datasets/master/wwwusage.csv', 
             names=['value'], header=0)

# Original Series
fig, axes = plt.subplots(2, 2, sharex=True)
axes[0, 0].plot(df.value); axes[0, 0].set_title('Original Series')
plot_acf(df.value, ax=axes[0, 1], lags = np.arange(len(df)))

# 1st Differencing
axes[1, 0].plot(df.value.diff()); axes[1, 0].set_title('1st Order Differencing')
plot_acf(df.value.diff().dropna(), ax=axes[1, 1], lags = np.arange(len(df)))
plt.show()

Output: ValueError: operands could not be broadcast together with shapes (98,) (97,) (98,) 

有人知道如何解释此输出吗?我想dropna函数会产生问题,但是我不确定这是否是问题的根源。就像我说的那样,它过去工作正常,数据仍然相同。我已经更新了statsmodels库,但是我怀疑这是造成我问题的原因。预先谢谢你

python statsmodels
1个回答
1
投票
导入numpy作为np,将熊猫作为pd导入

问题是,在绘制差异时间序列的ACF(具有99个观测值)时,您将滞后次数设置为等于原始时间序列中的观测值(具有100个观测值),即滞后大于观察次数。

要解决该问题,您需要在第二个ACF图中将lags = np.arange(len(df))替换为lags = np.arange(len(df) - 1)

请注意,当您计算时间序列的第一个差异时,您会丢失一个观测值,该观测值设置为NaN(特别是,第一个观测值设置为NaN)。因此,用dropna()删除丢失的值后,您的观察结果减少了一个。

import numpy as np, pandas as pd
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
import matplotlib.pyplot as plt
plt.rcParams.update({'figure.figsize':(9,7), 'figure.dpi':120})

# Import data
df = pd.read_csv('https://raw.githubusercontent.com/selva86/datasets/master/wwwusage.csv', names=['value'], header=0)

# Original Series
fig, axes = plt.subplots(2, 2, sharex=True)
axes[0, 0].plot(df.value); axes[0, 0].set_title('Original Series')
plot_acf(df.value, ax=axes[0, 1], lags=np.arange(len(df)))

# 1st Differencing
axes[1, 0].plot(df.value.diff()); axes[1, 0].set_title('1st Order Differencing')
plot_acf(df.value.diff().dropna(), ax=axes[1, 1], lags=np.arange(len(df) - 1))
plt.show()

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.