Теперь, когда я понял, как использовать OLS ( Pandas/Statsmodel OLS для прогнозирования будущих значений ), я пытаюсь подобрать более красивую кривую к своим данным... GLM должен работать так же, как я предполагал.
import statsmodels.api as sma
df1['intercept'] = 1
y = df1[['intercept', 'date_delta']]
X = df1['monthly_data']
smaresults_normal = sma.GLM(X,y, family=sma.families.Binomial()).fit()
возвращает ValueError: The first guess on the deviance function returned a nan. This could be a boundary problem and should be reported.
, что было известной проблемой в 2010 году. Я также пробовал:
import statsmodels.api as sm
import statsmodels.formula.api as smf
glm_unsmoothed = smf.GLM('monthly_data ~ date_delta', df1, family=sm.families.Binomial() )
glm_unsmoothed.fit()
что вызывает ошибку'builtin_function_or_method' object has no attribute 'equals'
Я хочу построить график модели, а также будущих значений, как я смог сделать с моделью ols:
#ols model
df1['intercept'] = 1
X = df1[['intercept', 'date_delta']]
y = df1['monthly_data']
smresults_normal = sm.OLS(y, X).fit()
#future values
smresults_normal.predict(df_future12[['intercept', 'future_monthly']])
#model in sample data
import statsmodels.formula.api as smf
smresults_unsmoothed = smf.ols('monthly_data ~ date_delta', df1).fit()
df1['ols_preds_unsmoothed'] = smresults_unsmoothed.predict()
редактировать Я отказался от попыток использовать GLM и вместо этого использовал OLS с формулой для полиномиальной подгонки, которая, я думаю, работала довольно хорошо... (хотя получение прогнозов на будущее, по-видимому, не работает так же, как в других моих OLS , когда-нибудь я, надеюсь, напишу какой-нибудь код без бесконечной возни!)! К сожалению, моя репутация слишком низка, чтобы опубликовать красивую картинку! :(