Как я могу расширить линию линейной регрессии и предсказать будущее? - PullRequest
0 голосов
/ 14 апреля 2020

Я использую пакет scipy.stats для генерации линии линейной регрессии следующим образом:

from scipy.stats import linregress
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt 

value = np.array([51, 54, 66, 58, 25, 78, 69, 35, 95]) 
year = np.array([2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018]) 

y = pd.Series(value) 
x = pd.Series(year)

slope, intercept, r_value, p_value, std_err = linregress(x, y)

line = [slope*xi + intercept for xi in x]

plt.plot(x, line, color = 'orange', label="Fitting Line", linewidth=1)
plt.scatter(x, y, s = 5, marker = '.', label="Sample Point", color = 'dodgerblue')
plt.show()

На текущем этапе линия регрессии охватывает только существующие зелья, но я буду sh предсказывать значение десять лет спустя. Есть ли другой эффективный способ прямой визуализации линии прогноза на графике (фактически расширить линию)?

1 Ответ

1 голос
/ 14 апреля 2020

Вы можете определить новый набор значений x для прогнозов

years_extended = np.arange(2010, 2028, 1)

y = pd.Series(value) 
x = pd.Series(year)

slope, intercept, r_value, p_value, std_err = linregress(x, y)

line = [slope*xi + intercept for xi in years_extended]

plt.plot(years_extended, line, color = 'orange', label="Fitting Line", linewidth=1)
plt.scatter(x, y, s = 5, marker = '.', label="Sample Point", color = 'dodgerblue')
plt.xticks(range(2010, 2029, 2))

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...