在 Python 中的 statsmodel 中执行单向方差分析时,在分类变量前放置 "C" 的作用是什么?

What is the function of placing a "C" before the categorical variable when performing a one-way ANOVA in statsmodel in Python?

我在以下代码中执行单向方差分析:

results = ols('price ~ C(make)', data=df_anova).fit()
print(results.summary())

分类变量"make"前的"C"(22个汽车品牌)的作用是什么? 将 C 排除在外时,我真的看不出有什么变化。此网页 (https://pythonfordatascience.org/anova-python/) 声明它会自动为您的类别分配一个虚拟变量,排除其中一个类别并将其捕获为截距,以便相对于排除的品牌进行适当的比较。但正如我之前所说,当不包括分类变量前面的 C 时,似乎没有任何改变。

statamodels 中的公式由 patsy 处理。

C(x) 要求将 x 视为分类变量。如果值是字符串,那么 patsy 总是将变量视为分类变量,在这种情况下 C 是多余的。

C 强制将整数等数值视为分类值,然后将其替换为虚拟或其他分类编码。

C 也需要更改选项的默认值。

https://patsy.readthedocs.io/en/latest/builtins-reference.html#patsy.builtins.C