Я пытаюсь создать модель линейной регрессии на основе данных до проекта и, в конечном итоге, пытаюсь рассчитать некоторые смоделированные данные, где я мог бы сравнить данные до / после проекта ... Может кто-нибудь сказать мне, какой лучший метод действий еще у меня может быть?в сорняках где-то ...
Для начала:
import statsmodels.api as sm
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
ng = pd.read_csv('C:/Users/ngDataBaseline.csv', thousands=',', index_col='Date', parse_dates=True)
ng.head()
Это будет выводить:
HDD Therm
Date
2011-10-01 386 498
2011-11-01 663 1810
2011-12-01 972 4263
2012-01-01 1131 5981
2012-02-01 977 6951
И из statsmodels, чтобы соответствовать моей модели, которую я использую:
import statsmodels.formula.api as smf
formula = 'Therm ~ HDD'
model = smf.ols(formula, data=ng)
results = model.fit()
results.summary()
inter = results.params['Intercept']
slope = results.params['HDD']
inter, slope
отпечатков:
(-532.6244255918659, 6.331883644532255)
Так что теперь я думаю, что могу импортировать данные после проекта и использовать некоторыепростая математика в этом формате для расчета смоделированных данных: Y = mX + b
ng_postproject = pd.read_csv('C:/Users/ng_postproject.csv', thousands=',', index_col='Date', parse_dates=True)
ng_postproject.head()
И это выведет:
HDD Therm
Date
2014-10-01 291 663
2014-11-01 545 1413
2014-12-01 1069 6754
2015-01-01 1134 7782
2015-02-01 1415 10285
Это то, что я использую для расчета использования смоделированного терм.
ng_postproject['Therm_modeled'] = ng_postproject['HDD'].apply(lambda x: x * slope + inter)
ng_postproject['Therm_modeled']
Date
2014-10-01 1309.953715
2014-11-01 2918.252161
2014-12-01 6236.159190
2015-01-01 6647.731627
2015-02-01 8426.990931
Теперь, если я не слишком далеко от сорняков, я смог бы добавить заголовок столбца и сравнить данные пост / пред проекта ... Было бы очень хорошо, если бы я мог реализоватьдоверительный интервал также ... Спасибо за любой ответ.