我知道当我在模型中使用一个类别变量并将其传递给statsmodels
的fit
函数时,会自动生成针对类别的虚拟变量。例如,如果我有一个变量'Location',它的值为'IndianOcean','Thailand','China'和'Mars',那么我的模型中将会生成形式如下的变量:
Location[T.Thailand]
某个值没有被表示出来。默认情况下,排除的变量似乎是最不常见的变量。是否有一种方法可以指定——理想情况下在模型规范中——哪个值被视为“基准值”并被排除?
我知道当我在模型中使用一个类别变量并将其传递给statsmodels
的fit
函数时,会自动生成针对类别的虚拟变量。例如,如果我有一个变量'Location',它的值为'IndianOcean','Thailand','China'和'Mars',那么我的模型中将会生成形式如下的变量:
Location[T.Thailand]
某个值没有被表示出来。默认情况下,排除的变量似乎是最不常见的变量。是否有一种方法可以指定——理想情况下在模型规范中——哪个值被视为“基准值”并被排除?
reference
参数传递给Treatment对比:
"y ~ C(Location, Treatment(reference='China'))"
如果您有更好的命名约定建议,请向patsy提出问题。"y ~ C(Location, Treatment(reference='China'))"
。 - Piotr Migdal'y ~ C(Location, Treatment(reference="China"))'
是正确的。
'y ~ C(Location, Treatment(reference='China'))'
不正确。
好的,也许有人会发现这篇文章有用。我需要为因变量设置一个新的基准类别,但我不知道如何做。我搜索了很多内容,但没有找到答案,所以我只是在其他类别后面加了一个下划线"_",如果你有三个类别A,B,C,并且你想让基准类别为C,你只需要将标签从A和B改为_A和_B。它有效果。似乎基准类别由sorted()定义。
也许有人知道正确的方法,这种方法并不是很Pythonic,呵呵。
C
(例如... + C(Location, Treatment) + ...
)可以解决问题,但这会导致一些相当丑陋的类别名称,我想避免。 - orome