0

我正在构建一个 OLS 回归模型,我想做一个小测试(如下所示)。我很好地创建了输入数据,当我告诉模型适合它时,但是当我要求摘要时,我得到一个除以零的错误。这是一些代码(我已经在这里换掉了随机调用的实际数据)

import numpy
import scikits.statsmodels.api as sm

y = numpy.random.randn(10)
x = numpy.random.randn(10, 18)

x = sm.add_constant(x, prepend=True)

model = sm.OLS(y,x).fit()
model.summary() #CREATES DIVIDE BY ZERO ERROR

在回溯中,除以零发生在 linear_model.pyc

@cache_readonly
def rsquared_adj(self):
    return 1 - (self.nobs - 1)/sef.df_resid * (1 - self.rsquared)
@cache_readonly
4

2 回答 2

2

在示例中,x 中的变量(列)比观测值(行)多。因此,你有一个完美的契合。在这种情况下,所有结果统计都没有任何统计意义。

由于 df_resid 为零,因此 rsquared_adj 出现零除错误。

summary() 正在调用一些引发异常的属性和方法。当您自己调用这些属性中的任何一个时,您也会遇到类似的异常。

我认为 statsmodels 在这种情况下应该提出一个适当的信息异常,而不是让它在某些任意点中断。

于 2013-06-13T20:38:30.990 回答
1

这已在 master 中修复。现在,summary() 将简单地打印 nan。

https://github.com/statsmodels/statsmodels/issues/868

于 2013-06-27T12:35:53.480 回答