使用' statsmodels'指定要将哪个类别视为基础?

时间:2014-03-16 00:28:12

标签: python linear-regression statsmodels categorical-data

理解当我在传递给statsmodels fit的模型中有一个类别变量时,将自动为类别生成虚拟变量。例如,如果我有一个变量'Location',其值为'IndianOcean','Thailand','China'和'Mars',我将在我的模型中获得变量

Location[T.Thailand]

其中一个值未表示。默认情况下,排除变量似乎是最不常见的变量。有没有办法指定 - 理想情况下在模型规范中 - 哪个值被视为“基值”并被排除?

3 个答案:

答案 0 :(得分:12)

您可以将reference arg传递给治疗对比。

http://patsy.readthedocs.org/en/latest/API-reference.html#patsy.Treatment

如果您对命名约定有更好的建议,请向patsy提出问题。

答案 1 :(得分:1)

好的,也许有人会发现这个有用。我需要为因变量设置一个新的基线类别,我不知道该怎么做。我搜索并没有发现任何东西,所以我只是为其他类别添加了一个“_”。如果您有 3 个类别 A、B、C,并且您希望基线为 C,则只需将标签从 A 和 B 更改为 _A 和 _B。有用。我似乎基线类别是由 sorted()

定义的

也许有人知道这样做的正确方法,这不是很植物性,ja。

答案 2 :(得分:0)

如果使用单引号将字符串引起来,则引用的参数需要用双引号引起来。很容易犯的错误。我两个都用单引号。

例如:

'y ~ C(Location, Treatment(reference="China"))'

是正确的。

'y ~ C(Location, Treatment(reference='China'))'

不正确。