问题描述
我正在尝试使用statsmodel中的线性混合效果模型。我收到一条错误消息:
Error interpreting categorical data: all items must be hashable
fc ~ group * session
^^
“ fc”是数据框中的一列,其中包含一维数组(1x2346)。 数据框如下:
subj group session fc
0 0 1 1 [0.2922897321426426,0.8889104138397078,0.716...
1 0 1 2 [0.2900923963035335,0.8475482137619675,0.713...
2 1 1 1 [0.5929015237174594,0.24248656443213046,0.26...
3 1 1 2 [0.20802496215095026,0.9411248464107547,0.93...
代码:
my_model_fit = smf.mixedlm("fc ~ group * session",df,groups=df["subj"]).fit()
my_model_fit.random_effects
my_model_fit.summary()
我将不胜感激:)
解决方法
您需要知道,列表不可散列,因为它们是可变的。您可以使用元组而不是列表,然后它应该可以工作。但是我怀疑,还是将category用作数据类型是一个好主意,因为您的向量很可能不会重复(您几乎不会在两行中拥有完全相同的向量),因此category在这里没有多大意义。
因此,简而言之,请检查您的“数组”是否真的重复,以便几行使用相等的数组值。如果不是这种情况,请使用常规的对象列而不是类别。然后,将它们存储为列表或元组也没关系。但是,如果它们重复多次,则可以使用category来保护空间,但是应该改用元组。
检查:
hash(list([1,2,3]))
hash(tuple([1,3]))