Как включить член взаимодействия между двумя категориальными переменными в смешанную линейную модель statsmodels? - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь включить взаимодействие между двумя категориальными переменными в смешанную линейную модель, рассчитанную с помощью statsmodels python. Однако я получаю сообщение об ошибке «LinAlgError: Singular matrix». Пожалуйста, найдите небольшой пример, который воспроизводит ошибку ниже:

import numpy as np
import pandas as pd
import statsmodels.api as sm
import statsmodels.formula.api as smf

d = {'V1' : pd.Series(["ONE","TWO","THREE","ONE","TWO","THREE","ONE","TWO","THREE","THREE"]),
     'V2' : pd.Series(["GREEN", "GREEN","RED", "BLUE","BLUE","RED","RED","RED", "RED", "BLUE"]),
     'V3' : pd.Series([1., 2., 3., 1., 2., 3., 1., 1., 2., 2.]),
     'V4' : pd.Series(["X", "XX", "X", "XX","X","X","XX","XX","X","XX"])}

df = pd.DataFrame(d)

mod = smf.mixedlm(formula='V3 ~ V1 * V2', data=df, groups=df["V4"])
res = mod.fit()
print(res.summary())

Когда я изменяю последнее значение V2 с «СИНИЙ» на «ЗЕЛЕНЫЙ», код работает. Даже без изменения значений V2 регрессия OLS дает правдоподобные результаты:

mod = smf.ols(formula='V3 ~ V1 * V2', data=df)
res = mod.fit()
print(res.summary())

Мой вопрос: почему mixedlm создает эту ошибку и как ее избежать (конечно, без изменения данных)?

Спасибо за вашу помощь!

...