解释分类数据时出错:所有项都必须是可散列的[statsmodel]

2024-04-27 04:20:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用statsmodel中的线性混合效应模型。我收到一条错误消息:

Error interpreting categorical data: all items must be hashable
    fc ~ group * session
    ^^

其中“fc”是我的数据帧中的一列,它包含一个1D数组(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()

我将感谢任何帮助:)

error message and code


Tags: 数据模型消息dfmodelsessionmy错误
1条回答
网友
1楼 · 发布于 2024-04-27 04:20:52

您需要知道,列表是不可散列的,因为它们是可变的。您可以使用元组而不是列表,这样就可以了。但我怀疑,无论如何使用category作为数据类型是一个好主意,因为向量很可能不会重复(两行中几乎没有完全相同的向量),因此category在这里没有多大意义

简而言之,检查“数组”是否真的重复,以便几行使用相同的数组值。如果不是这样,则使用常规对象列而不是类别。那么,如果将它们存储为列表或元组,也没有多大关系。但如果它们重复几次,您可以使用category到安全空间,但接下来您应该使用元组

检查:

hash(list([1,2,3]))
hash(tuple([1,2,3]))

相关问题 更多 >