Без данных, без кода и подробностей о графическом движке, применяемом для создания вашего сюжета, будет трудно быть абсолютно уверенным. Но ваши прогнозы кажутся совершенно хорошими по сравнению с вашими историческими данными в том смысле, что они как минимум предсказывают плавный рост ваших значений в будущем. Если синяя линия представляет весь ваш набор данных, на самом деле с помощью OLS можно сказать немного больше.
Причина, по которой в вашем графике есть пробел, состоит в том, что две линии в вашем графике - это две разные линии и не разделяйте общую метку времени при переходе между историческими и прогнозными значениями. Есть способы визуально исправить это, но, как я уже упоминал, я понятия не имею, как вы оценили модель или создали этот график.
Редактировать: на основе расширенного ответа на дополнительную информацию от OP:
Это должно напоминать вашу проблему в отношении сюжета:
Я при условии , что следующий кадр данных будет представлять вашу ситуацию:
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
И я думаю, что это совершенно естественная ситуация для рядов для исторических c и прогнозных значений; нет никаких причин, почему между , а не должен быть визуальный разрыв. Теперь одним из способов визуального исправления этого может быть включение прогнозного значения 6.0
по индексу 2020-01-08
для серии historic
, или исторического значения c 8 по индексу 2020-01-08
для прогнозов. Вы можете сделать это, используя df['forecast'].loc['2020-01-07']=8.0
или df['historic'].loc['2020-01-08']=6.0
. Конечно, это можно сделать более плавно, программно определяя вставленное значение и индекс. Но вот результат в любом случае:
Полный код:
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)
Надеюсь, это поможет !