Используя statsmodels.formula.api
, вам не нужно создавать манекены самостоятельно. Удалите пробелы из имен столбцов и укажите для столбца Категорий C(col_name)
import statsmodels.formula.api as smf
df = df.rename(columns={'Product Type': 'Product_Type',
'Number of workers': 'Number_of_workers'})
results = smf.ols(formula = 'Y ~ X1 + X2 + Number_of_workers + C(Product_Type)',
data=df, missing='drop').fit()
Пример данных
import pandas as pd
import numpy as np
np.random.seed(123)
df = pd.DataFrame({'Y': np.random.randint(1,100,200),
'X1': np.random.normal(1,20,200),
'X2': np.random.normal(-10,1,200),
'Number of workers': np.arange(1,201,1)/10,
'Product Type': np.random.choice(list('abcde'), 200)})
Выход results.summary()
========================================================================================
coef std err t P>|t| [0.025 0.975]
----------------------------------------------------------------------------------------
Intercept 69.2836 23.105 2.999 0.003 23.711 114.856
C(Product_Type)[T.b] 11.3334 6.941 1.633 0.104 -2.356 25.023
C(Product_Type)[T.c] 1.3745 6.943 0.198 0.843 -12.321 15.070
C(Product_Type)[T.d] 2.0430 6.258 0.326 0.744 -10.300 14.386
C(Product_Type)[T.e] 3.8445 6.273 0.613 0.541 -8.528 16.217
X1 0.0207 0.113 0.184 0.854 -0.202 0.243
X2 1.4677 2.177 0.674 0.501 -2.825 5.761
Number_of_workers -0.5803 0.369 -1.573 0.117 -1.308 0.147
==============================================================================
Обратите внимание, что с формулами api, поскольку ваш products
создает полную основу, он автоматически отбросит одну из категорий, поскольку у нас есть перехват, аналогично тому, что вы найдете в stata.