Я прохожу курс эконометрики и пытаюсь использовать Python, а не предварительные данные STATA и EVIEWS, в которые они устанавливают задания.
В одном из вопросов у меня есть данные о потреблении с течением времени , Меня просят вычислить это двумя способами.
Первый способ - это расчет модели вида потребления = Aexp (Bt), а второй способ состоит в том, чтобы регистрировать обе стороны и делать обычные OLS в журнале (потребление) = альфа + Bt
* 1006. * Я знаю, как сделать второй путь. Однако, когда я пытаюсь сделать первый путь, это идет не так. Используя statsmodels, я могу экспонировать данные времени (после нормализации), но это вычисляет регрессию в виде потребления = Aexp (t) + B, что не то, что я хочу. (Хочу указать где параметры go). В sklearn я мог найти полиномиальную регрессию, но не экспоненциальную.
Затем я обнаружил scipy.curve_fit. Однако здесь, похоже, есть две проблемы: (1) Кажется, что он полагается на исходные предположения для параметров, что означает мой вывод в конечном итоге будет отличаться от проприетарного программного обеспечения (тогда как выходные данные для таких вещей, как OLS одинаковы) [поскольку я предполагаю, что первоначальные догадки означают, что сделано некоторое итеративное решение, которое полезно для очень странных и замечательных функций, но я предполагаю, что довольно стандартные результаты справедливы для экспоненциальных регрессия] (2) каждый раз, когда я пытаюсь реализовать его, он просто возвращает параметры догадки.
Вот мой код
`consumption_data = pd.read_csv(......\consumption.csv")
def func(x,a,b):
return a * np.exp(b*x)
xdata = consumption_data.YEAR
ydata = consumption_data.CONSUMPTION
ydata = (ydata - 1948)/100
popt, pcov = curve_fit(func, xdata, ydata, (1,1))
print(popt)
plt.plot(xdata, func(xdata, *popt), 'g--',)
`
Код scipy.optimize в основном просто вставляется в копию из их учебника https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.curve_fit.html