Какова функция помещения «C» перед категориальной переменной при выполнении одностороннего ANOVA в statsmodel в Python? - PullRequest
0 голосов
/ 09 января 2020

Я выполняю одностороннюю ANOVA в следующем коде:

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

Какова функция "C" перед категориальной переменной "make" (это 22 марки автомобилей)? Я действительно не вижу, что что-то меняется, когда вы пропускаете C. На этой веб-странице (https://pythonfordatascience.org/anova-python/) указывается, что она автоматически присваивает фиктивную переменную вашим категориям, исключает одну из категорий и фиксирует ее как перехват для правильного сравнения относительно исключенного бренда. Но, как я уже говорил ранее, если не включать C перед категориальной переменной, похоже, ничто не изменится.

1 Ответ

1 голос
/ 09 января 2020

Формулы в статамоделях обрабатываются с помощью patsy.

C(x) требует, чтобы x обрабатывалось как категориальная переменная. Если значения являются строками, то patsy всегда обрабатывает переменную как категориальную переменную, и C в этом случае является избыточной.

C заставляет числовые значения c, такие как целые числа, трактоваться как категориальные, что затем будет заменен фиктивной или другой категориальной кодировкой.

C также требуется для изменения параметров по умолчанию.

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

...