GLM в статистической модели возвращает ошибку

Теперь, когда я понял, как использовать 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 , когда-нибудь я, надеюсь, напишу какой-нибудь код без бесконечной возни!)! К сожалению, моя репутация слишком низка, чтобы опубликовать красивую картинку! :(


person pythonista    schedule 27.08.2014    source источник
comment
GLM с семейным биномом, или Logit или Probit для двоичных данных. Зависимая переменная или переменная отклика, endog, должна быть между нулем и единицей или бинарной, между нулем и единицей.   -  person Josef    schedule 27.08.2014
comment
спасибо за понимание! Сейчас я пытаюсь заставить силовую форму работать (с некоторыми трудностями). Мне нужно что-то экспоненциальное или параболическое (в Excel данные соответствуют квадратичному - я запускаю другой анализ для сравнения) ... я иду в правильном направлении, используя GLM?   -  person pythonista    schedule 28.08.2014
comment
Я хотел бы поддержать последний вопрос: что вы должны использовать, когда хотите выполнить преобразование log/exp, но данные не являются биномиальными?   -  person Mazzone    schedule 19.04.2018


Ответы (1)


Я думаю, что у меня была такая же проблема, все, что вам нужно, это убедиться, что ваш фрейм данных не содержит строк, где оба случая и не случаи равны нулю. Непосредственно перед оценкой glm запустите:

данные = данные [(data.cases! = 0) | (данные.notcases!=0)]

По-видимому, R делает это автоматически.

person Alex    schedule 31.10.2016