Ошибка ndim с моделью Statsmodels Tweedie

#python #statsmodels

#python #statsmodels

Вопрос:

Я пытаюсь запустить модель tweedie с помощью Statsmodel и продолжаю получать следующую ошибку:

Ошибка атрибута: объект ‘Tweedie’ не имеет атрибута ‘ndim’

 formula = 'pure_premium ~ atfault_model   channel_model_DIR   channel_model_IA   CLded_model   credit_model_52778   
        credit_model_c6   package_model_Elite   package_model_LBO   package_model_Plus   package_model_Savers   
        package_model_Savers_Plus   Q("ds_fp_paid_in_full_eligiable-has discount")   ds_fp_paid_in_full_ineligable   
        Q("ds_pn_prior_insurance_eligable-has discount")   ds_pn_prior_insurance_ineligable   
        Q("ds_ip_advanced_purchase_eligiable-has discount")   ds_ip_advanced_purchase_ineligable   
        credit_model_c5   ds_ad_affinity   ds_ak_alliance   
        ds_ly_loyalty_discount   ds_mo_multipolicy   ds_pf_performance   majorvio_model   
        (driver_age_model*marital_status_model)   minorvio_model   multi_unit_model   
        RATING_CLASS_CODE_MODEL   unit_drv_exp_model    Vintiles   safety_course_model   instructor_course_model   
        (class_model*v_age_model)   (class_model*cc_model)   state_model'

lost_cost_model = smf.ols(formula = formula, data = coll_df
                          , family = sm.families.Tweedie(link = sm.families.links.log, var_power = 1.5))
 

Каждая переменная является либо категориальной, либо float, либо int .

Я не уверен, что является причиной этого.

Комментарии:

1. Недостаточно информации, чтобы предположить, что может пойти не так. Попробуйте сделать упрощенный пример. Покажите хотя бы последнюю часть трассировки, где показано, где возникает исключение.

2. Ошибка очевидна. ols не принимает семейство, OLS — это просто линейная регрессия. Вам необходимо использовать обобщенную линейную модель, т.Е. GLM Или glm для интерфейса формулы.

3. Спасибо @Josef. Хотите поместить это в сообщение? Я проверю это как ответ. Если нет, спасибо в любом случае. Пытаюсь перенести это с R на python.

Ответ №1:

ols не принимает семейство, OLS это просто линейная регрессия.

Вам необходимо использовать обобщенную линейную модель, т.Е. GLM Или glm для интерфейса формулы. GLM включает в себя несколько семейств в однопараметрическом экспоненциальном семействе и включает в себя выбор функций ссылок.

Несколько других моделей эквивалентны GLM, но основаны на другой реализации и с другими параметрами. Эти модели написаны для определенных комбинаций семейных ссылок и не имеют возможности их изменить.

OLS является ли GLM с гауссовым семейством и линейной связью
Logit является GLM с биномиальным семейством, логической ссылкой и только для двоичных переменных ответа.
Proit является GLM с биномиальным семейством, пробит-ссылкой и только для двоичных переменных ответа.
Poisson является ли GLM с семейством Пуассона и логарифмической связью
NegativeBinomial это более общая версия GLM с отрицательным двоичным семейством и ссылкой на журнал. discrete.NegativeBinomial разрешить несколько параметризаций подразумеваемой функции дисперсии и оценивает параметр дисперсии совместно со средними параметрами как MLE.