python稳健回归_statsmodel线性回归(ols)的稳健性问题-Python

本文通过一个确定性的线性模型例子展示了使用statsmodels进行回归分析的情况。在小样本数据下,模型能得到预期的正确结果。然而,随着数据点数量的增加,OLS回归结果变得不稳健,可能与多共线性或设计矩阵的奇异性质有关。在Excel和R中得到的结果与数据点数量无关,保持一致。
摘要由CSDN通过智能技术生成

我用统计模型测试了一些基本的类别回归:

我建立了一个确定性模型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

=================

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值