簡體   English   中英

如何在時間序列預測 plot 中添加 95% 區間

[英]how to add the 95% interval in a time series forecast plot

我有以下代碼:

volatility = pd.DataFrame({
    'actual': df1['Annualised vol21'].values,
    'model': np.append(fitted, forecast),
})
y_train = volatility['actual'][:-forecast_horizon]
y_fit = volatility['model'][:-forecast_horizon]
y_test = volatility['actual'][-forecast_horizon - 1:]
y_for = volatility['model'][-forecast_horizon - 1:]

plt.plot(y_train, label='Train')
plt.plot(y_test, label='Test')
plt.plot(y_fit, label='Fitted')
plt.plot(y_for, label='Forecasted')
ci = 0.1 * np.std(y_for)/np.mean(y_for) ##### NOT SURE OF THIS LINE
plt.fill_between(y_for.index, y_for - ci , y_for + ci , color='b', alpha=.3)
plt.legend()
plt.ylim(0, 0.2)
plt.xlim(5000, 5500)
plt.show()

這使: 在此處輸入圖像描述

但是,我不確定該置信區間。 我想要 95%,所以我應該在上面的行中輸入 0.05 而不是 0.1? 另外,我使用的定義中是否存在正常假設? 我會想要一種 plot 可以自動生成這些間隔。謝謝

您需要使用 z 表來查找特定置信區間的 z 值。 更多信息可以在這里找到。

但是,這里有一個小表可能會有所幫助:

CI   z-value
80%  1.282
85%  1.440
90%  1.645
95%  1.960
99%  2.576

對於您的代碼,您需要將其修改為:

from matplotlib import pyplot as plt
import numpy as np

# Example data
x = [x for x in range (1, 20, 1)]
y_for = x

plt.plot(x, y_for, label='Forecasted')
# For a 95% CI
ci = 1.960 * np.std(y)/np.mean(y)
plt.fill_between(x, y_for-ci, y_for+ci, color='b', alpha=.3)

ax.fill_between(x, (y-ci), (y+ci), color='b', alpha=.1)

這給出了:

陰謀

要修改為其他置信區間,請將值1.960與表中的所需值切換或使用 z 表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM