我用统计模型测试了一些基本的类别回归:
我建立了一个确定性模型Y = X + Z
其中X可以取3个值(a、b或c),Z只能取2(d或e)。
在那个阶段,模型是完全确定的,我为每个变量设置了如下的权重a's weight=1
b's weight=2
c's weight=3
d's weight=1
e's weight=2
因此,当1(X=a)为1时,如果X=a,则为0,否则,模型为:Y = 1(X=a) + 2*1(X=b) + 3*1(X=c) + 1(Z=d) + 2*1(Z=e)
使用以下代码,生成不同的变量并运行回归from statsmodels.formula.api import ols
nbData = 1000
rand1 = np.random.uniform(size=nbData)
rand2 = np.random.uniform(size=nbData)
a = 1 * (rand1 <= (1.0/3.0))
b = 1 * (((1.0/3.0)< rand1) & (rand1< (4/5.0)))
c = 1-b-a
d = 1 * (rand2 <= (3.0/5.0))
e = 1-d
weigths = [1,2,3,1,2]
y = a+2*b+3*c+4*d+5*e
df = pd.DataFrame({'y':y, 'a':a, 'b':b, 'c':c, 'd':d, 'e':e})
mod = ols(formula='y ~ a + b + c + d + e - 1', data=df)
res = mod.fit()
print(res.summary())
我最终得到了正确的结果(人们必须关注coef之间的差异,而不是coef本身)OLS Regression Results
=================