当使用sklearn.linear_model.LinearRegression
或statsmodels.regression.linear_model.OLS
计算普通最小二乘回归时,当协方差矩阵完全奇异时,它们似乎不会抛出任何错误。看起来他们使用摩尔-彭罗斯伪逆,而不是通常的逆,这在奇异协方差矩阵下是不可能的
问题有两个方面:
这个设计的目的是什么?在什么情况下,无论协方差矩阵是否奇异,计算OLS都是有用的
那么它作为系数输出什么呢?根据我的理解,因为协方差矩阵是奇异的,所以通过伪逆,会有无穷多个解(在标度常数的意义上)
Tags:
两个相关的问题和答案
Differences in Linear Regression in R and Python
Statsmodels with partly identified model
1)在什么情况下,无论协方差矩阵是否奇异,计算OLS都是有用的
即使某些参数未被识别,且未被“任意”唯一解从无限可能解中选取,但某些结果静态不受非识别的影响,主要是可估计线性组合、预测和r平方
即使并非所有参数都单独识别,也会识别一些参数的线性组合。例如,我们仍然可以测试单向分类变量中的所有均值是否相等。这些都是可估计的函数,即使在奇点和原因下,statsmodels从其前体包继承了
pinv
行为。然而,statsmodels没有从参数估计的奇异协方差矩阵中识别estimable functions
的功能对于解释变量的任何值,我们都可以得到一个唯一的预测,如果完美共线持续存在,该预测仍然有用
一些汇总和推断统计数据(如Rsquared)与唯一参数的选择方式无关。这有时很方便,例如在诊断和规格测试中使用,其中LM测试可以从rsquared计算出来
到2)它作为系数输出什么
Moore-Penrose逆估计的参数可以解释为对称惩罚或正则化估计。当我们有岭回归且惩罚权重为零时,摩尔-彭罗斯解也会得到。(我不记得我在哪里读到的。)
此外,在一些奇异设计的情况下,不确定性只影响某些参数。尽管我们在推断这些参数时必须小心,但其他参数仍然可能被识别,并且不受完全共线部分的影响
软件包基本上有3个选项来处理单一情况
statsmodels选择3主要是因为变量的对称处理。R和Stata在许多模型中选择2(我认为很难预测哪个变量丢失)
对称处理的一个原因是,它使得在多个数据集中比较相同的回归变得更容易,如果在使用案例2时不总是删除相同的变量,那么这将更加困难
我注意到了同样的事情,似乎sklearn和statsmodel非常健壮,有点过于健壮,让你想知道到底如何解释结果。我猜仍然需要建模者进行尽职调查,以确定变量之间的共线性并消除不必要的变量。有趣的是,sklearn甚至不会给你pvalue,这是这些回归中最重要的度量。当使用变量时,系数会发生变化,这就是为什么我更关注pvalues的原因
事实确实如此。如你所见here
sklearn.linear_model.LinearRegression
是基于{sklearn.linear_model.LinearRegression
实例将特征矩阵的奇异值返回到singular_
属性中,并将其秩返回到rank_
属性中李>statsmodels.regression.linear_model.OLS
,其中类RegressionModel
的fit()
方法使用以下参数:(参考见here)
相关问题 更多 >
编程相关推荐