Python中使用OLS的线性多元回归不起作用

Python中使用OLS的线性多元回归不起作用,python,linear-regression,Python,Linear Regression,我正在修一门计量经济学的课程,但不幸的是我被卡住了 我希望你能帮助我 给出了以下模型: 贝塔的OLS估计值由下式给出: 但是,当我使用非常大的样本量运行下面的python脚本时,估计量非常糟糕,并且不能收敛到真实值。谁能给我解释一下吗 ''' ''' 例如,它返回[4.66326351-0.32281745 0.87127398],但实际值为[5.,-0.02,.2] 我知道也有一些功能可以为我做到这一点,但我想手动这样做,以更好地理解材料 谢谢 变量X和X2是共线的,即不是线性独立的。因此

我正在修一门计量经济学的课程,但不幸的是我被卡住了

我希望你能帮助我

给出了以下模型:

贝塔的OLS估计值由下式给出:

但是,当我使用非常大的样本量运行下面的python脚本时,估计量非常糟糕,并且不能收敛到真实值。谁能给我解释一下吗

'''

''' 例如,它返回[4.66326351-0.32281745 0.87127398],但实际值为[5.,-0.02,.2]

我知道也有一些功能可以为我做到这一点,但我想手动这样做,以更好地理解材料


谢谢

变量
X
X2
是共线的,即不是线性独立的。因此,矩阵
Xt@X
不是满秩。Eigevalues:

np.linalg.eig(Xt @ X)[0]
印刷品

[4.65788929e+07, 3.72227442e-11, 1.87857084e+05]
注意,第二个基本上是0。由于四舍五入等原因,不完全为零。但是当你反转这个矩阵时,你基本上被这个非常小的数字除掉了,并且大大降低了精度。有很多方法可以解决这个问题,例如查找。在Python中,您可以使用sklearn工具包中的
Ridge
回归

当然,如果您不想了解更详细的信息,您可以修改代码,以确保两个变量是线性独立的,例如,您可以将
X2
初始化替换为

X2 = np.linspace(0,10,n)**2
X2 = np.linspace(0,10,n)**2