gpt4 book ai didi

python - Seaborn:如何处理历史值和预测值之间的差距?

转载 作者:行者123 更新时间:2023-12-04 10:38:15 24 4
gpt4 key购买 nike

我在解释历史数据和预测之间的差距时遇到了问题。
蓝色是历史的。橙色是带有 future 值的 lin lin 回归预测。

Dataframe df 是带有 year、pax、RealGDPLP 列的训练数据集。
Dataframe FutureValCPs 具有栏 year 和 RealGDPLP。

你如何解释它不是连续的(在其他情况下是连续的)?
附上 OLS 结果。有什么可以说明的吗?

谢谢你。

enter image description here

enter image description here

最佳答案

没有数据,没有代码,也没有关于用于生成绘图的图形引擎的详细信息,因此很难绝对确定。但与您的历史数据相比,您的预测似乎非常好,因为它至少可以预测您的值(value) future 会平稳增长。如果蓝线代表您的整个数据集,那么使用 OLS 真的没什么可说的了。

绘图中存在间隙的原因是绘图中的两条线是两条不同的线,并且在历史值和预测值之间的转换中不共享公共(public)时间戳。有一些方法可以在视觉上解决这个问题,但正如我所提到的,我不知道你是如何估计模型或生成这个图的。

编辑:基于来自 OP 的更多信息的扩展答案:

这应该类似于您关于情节的问题:

enter image description here

我假设以下数据框将代表您的情况:

            historic  forecast
dates
2020-01-01 1.0 NaN
2020-01-02 2.0 NaN
2020-01-03 3.0 NaN
2020-01-04 3.0 NaN
2020-01-05 6.0 NaN
2020-01-06 4.0 NaN
2020-01-07 8.0 NaN
2020-01-08 NaN 6.0
2020-01-09 NaN 7.0
2020-01-10 NaN 8.0
2020-01-11 NaN 9.0
2020-01-12 NaN 10.0
2020-01-13 NaN 11.0
2020-01-14 NaN 12.0

我认为对于历史值和预测值的系列来说,这是一个非常自然的情况;没有理由应该 不是 成为他们之间的视觉差距。现在,从视觉上解决这个问题的一种方法是包含 6.0 的预测值。在索引 2020-01-08对于 historic系列, 指数 2020-01-08 处 8 的历史值对于预测。您可以使用 df['forecast'].loc['2020-01-07']=8.0df['historic'].loc['2020-01-08']=6.0 .这当然可以通过以编程方式确定插入的值和索引来更顺利地完成。但无论哪种方式,结果都是这样:

enter image description here

完整代码:
import seaborn as sns
import pandas as pd


sns.set_style("darkgrid")
plt.xticks(rotation=45)
#sns.set_xticklabels(rotation=45)
%matplotlib inline

df_historic = pd.DataFrame({'dates': pd.date_range("20200101", periods=7),
'historic': [1,2,3,3,6,4,8]}).set_index('dates')

df_forecast = pd.DataFrame({'dates': pd.date_range("20200108", periods=7),
'forecast': [6,7,8,9,10,11,12]}).set_index('dates')

df=pd.merge(df_historic, df_forecast, how='outer', left_index=True, right_index=True)

#df['forecast'].loc['2020-01-07']=8.0
df['historic'].loc['2020-01-08']=6.0

for column in df.columns:
g=sns.lineplot(x=df.index, y=df[column])

g.set_xticklabels(labels=df.index, rotation=-20)

我希望这有帮助!

关于python - Seaborn:如何处理历史值和预测值之间的差距?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60060983/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com