分位数回归矩阵奇异性的原因

机器算法验证 r 回归
2022-03-17 23:17:36

我正在使用包 quantreg 在 R 中执行分位数回归。我的数据集包含 12,328 个观测值,范围从 0.12 到 330。我的数据的时间点并不完全连续;所有数据都属于从 73 到 397 的几十个 bin 之一。

当我使用 lm() 函数对该数据执行线性回归时,我能够使用最多 4 个的多项式来执行此操作:

lm(Y~poly(X,3,raw=TRUE),data=mydata)

但是,使用包 quantreg 和 rq() 命令,我不能使用任何多项式。一个简单的回归就可以了:

rq(Y~X,data=mydata,tau=.15)

但是一旦我进入多项式,就没有骰子了。当我输入这个:

rq(Y~poly(X,2,raw=TRUE),data=mydata,tau=.15)

我收到以下错误消息:

Error in rq.fit.br(x, y, tau = tau, ...) : Singular design matrix

我已经阅读了奇异矩阵,我认为这可能有两个原因:(1)我在每个轴上只有一个变量,或者(2)我的数据被分箱/Y 变量不是真正连续的。

谁能告诉我为什么我会收到这个错误?

PS - 这是图表的外观:

在此处输入图像描述

2个回答

我相信它出现单数的原因是您的第二个原因,即数据被分箱。重复观察(对于单个 x 值,多个响应)会增加奇点的机会。

对于结构相似的数据集,我收到了与您相同的错误消息。我对每个 x 值都有多个观察结果,其中一些是相同的。我通过“抖动”数据来解决它,使用 rnorm() 向响应值添加非常少量的随机噪声。这意味着尽管每个 x 值有多个观察值,但没有相同的重复,并且 rq() 函数有效。只要您添加的噪声很小,它就不会显着影响 rq 的系数和 SE 估计。

rnorm()Jack Ballard 提出的替代方案是使用jitter()基础包。