如何在statsmodels的混合线性模型中包括两个类别变量之间的相互作用项?

时间:2019-01-09 09:45:48

标签: python statsmodels mixed-models

我尝试在使用python statsmodels计算的混合线性模型中包括两个类别变量之间的交互。但是,我收到“ LinAlgError:奇异矩阵”错误。请找到一个小示例,该示例再现了以下错误:

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会产生此错误,我该如何避免(当然不更改数据)?

谢谢您的帮助!

0 个答案:

没有答案
相关问题