Я пытаюсь включить взаимодействие между двумя категориальными переменными в смешанную линейную модель, рассчитанную с помощью 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 создает эту ошибку и как ее избежать (конечно, без изменения данных)?
Спасибо за вашу помощь!