ValueError:exog 没有完整的列排名

问题描述 投票:0回答:3

我正在运行

linearmodels
包中的 PanelOLS

通常情况下,一些观察结果会被遗漏。当我在

R
中运行等效命令时(我认为等效命令是
plm
),我得到以下结果:

Unbalanced Panel: n=11, T=17-61, N=531

因此面板不平衡:有些人只拥有 17 个时间段的完整数据,而另一些人则拥有更多时间段的完整数据。但回归仍然存在。

等效的Python命令是:

import linearmodels.panel as pnl
model = pnl.PanelOLS.from_formula(formula, data=src)

这给了我一个警告:

输入包含缺失值。删除缺少观察值的行。

还有一个错误:

MyPythonInstallation\lib\site-packages\linearmodels\panel\model.py in _validate_data(self)
    207 
    208         if matrix_rank(x) < x.shape[1]:
--> 209             raise ValueError('exog does not have full column rank.')
    210         self._constant, self._constant_index = has_constant(x)
    211 

ValueError: exog does not have full column rank.

我该如何继续我的回归?

python linearmodels
3个回答
3
投票

(我意识到OP不再致力于此,但以防万一其他人需要它......)

当我马虎时,另一个可能的原因在背后咬我(抱歉,我的意思是快速和高效)——检查您是否包含了其他变量的线性组合(例如滞后和差异)。


2
投票

我也有同样的错误。就我而言,我正在使用的数据帧的一列被视为“对象”数据类型。将该列更改为“浮点”数据类型解决了我的问题。


0
投票

由于OP不再处理该问题,我的答案无法得到认证。但就我而言,公式由几列组成,而不是数据中的所有列,这导致了错误。

我能够通过从公式中未使用的数据中删除其他列来解决这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.