Python 从statsmodels WLS获取可用值

Python 从statsmodels WLS获取可用值,python,regression,linear-regression,statsmodels,weighted,Python,Regression,Linear Regression,Statsmodels,Weighted,我正在使用statsmodels的加权最小二乘回归,但得到了一些非常大的值 这是我的密码: X = np.array([[1,2,3],[1,2,3],[4,5,6],[1,2,3],[4,5,6],[1,2,3],[1,2,3],[4,5,6],[4,5,6],[1,2,3]]) y = np.array([1, 1, 0, 1, 0, 1, 1, 0, 0, 1]) w = np.array([0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5]

我正在使用statsmodels的加权最小二乘回归,但得到了一些非常大的值

这是我的密码:

X = np.array([[1,2,3],[1,2,3],[4,5,6],[1,2,3],[4,5,6],[1,2,3],[1,2,3],[4,5,6],[4,5,6],[1,2,3]])
y = np.array([1, 1, 0, 1, 0, 1, 1, 0, 0, 1])
w = np.array([0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5])

temp_g = sm.WLS(y, X, w).fit()
现在,我理解的是,在WLS回归中,就像在任何线性回归问题中一样,我们提供endog向量和exog向量,函数可以找到最佳拟合线,并告诉我们每个观测值的系数/回归参数应该是什么。例如,在我的数据中,每个观察值由3个特征组成,我希望有3个参数

所以我就这样把它们取出来:

parameters = temp_g.params # I'm hoping I've got this right! Or do I need to use "fittedvalues" instead?
temp g params : 
[ -7.66645036e+198  -9.01935337e+197   5.86257969e+198]
问题是我得到了巨大的价值,就像这样:

parameters = temp_g.params # I'm hoping I've got this right! Or do I need to use "fittedvalues" instead?
temp g params : 
[ -7.66645036e+198  -9.01935337e+197   5.86257969e+198]
或者这个:

temp g params : 
[-2.77777778 -0.44444444  1.88888889]
这在进一步使用这些参数时产生了问题,特别是因为我还有一些指数要处理,我需要将
e
提高到一些回归参数的幂次,考虑到这么大的数字,这是不可能的。因为在使用
exp()
时,我不断收到溢出错误


这正常吗?我做错什么了吗?或者有没有具体的方法让它们变得有用

估计的参数不是很大;它们是零(e-323)。而且,这只是问题的一个症状。你的X矩阵很糟糕;对您的模型进行总结:
temp\u g.summary()
。你应该至少得到一些关于你的数据的警告(例如,“奇异矩阵”)对不起,我粘贴了错误的值,我编辑了问题以重新粘贴我得到的值。不管怎样,我按照你说的做了尝试,是的,我收到了警告。我想在一个小数据集上测试算法,但我想这太小了。我将使用其他数据重试。这与数据的大小无关;基本问题是X矩阵列如何相互关联:列之间的关联度为1。例如,如果在stata中执行该回归,stata将自动删除其中一列以使回归正常工作。statsmodels没有自动尝试使回归工作,它只是发出警告,告诉您存在问题。