我是 R 新手;试图找出quantreg
并遇到可能是一个简单的错误。我或多或少地遵循 quantreg 帮助文件(以及许多其他在线资源)中提供的示例代码,但使用的是我的数据集而不是示例数据集。我运行以下代码:
library(quantreg)
rq.xy.1 <- rq(y~-1+x1+x2+d1,tau=1:99/100,data=xy.df,na.action=na.omit,model=TRUE)
s2 <- summary(rq.xy.1,se="boot")
plot.summary.rqs(s2)
第一行执行良好。在最后一行(使用plot.summary.rqs
)我收到一条错误消息:
`rownames`
<-
(`*tmp*`, value = c("x1", "x2", "d1")) 中的错误:'dimnames' [1] 的长度不等于数组范围
我还没有确定错误的来源。这是我到目前为止所知道的:
- 我可以制作一个没有置信带的图形就好了;也就是说,我可以运行
plot.rqs(rq.xy.1)
并返回每个解释变量的系数图(超过分位数)。但我想要信心带。 - 对象
rq.xy.1
是类的对象rqs
(的输出rq
是类的对象rq
,rqs
或者rq.process
这个是一个rqs
)。 - Object
s2
是 class 的对象summary.rqs
。 - 这意味着
s2
是一个列表(我认为?——这就是我在 RStudio 的环境窗格中看到的);不确定这是否重要;我确实扫描了它,看看是否有一个有用的指标来表明被调用的东西的长度,dimnames
但没有看到任何似乎明显有用的东西 - 我打电话
traceback()
(基于阅读另一个在线帮助线程)但也没有产生任何似乎有用的东西。 - 我尝试
model.matrix(y~-1+x1+x2+d1, data=xy.df
了(基于在 r 中的线性回归摘要中读取“'dimnames' [1] 的长度不等于数组范围”错误)但同样,这并没有给我任何线索。我认为这是因为错误被抛出plot.summary.rqs
而不是summary
. 如果我可以model.matrix
用来发现我的错误的来源,我不明白怎么做,我会很感激这里的建议。
在这一点上,我很困。我搜索了很多来源,但无法弄清楚这个错误。谢谢你的帮助。
编辑此行下方的原始问题:
编辑 1. 我的数据的一个子集(重现问题最少)在这里:https ://www.dropbox.com/s/9mges3kuro6ty5s/tmp_data?dl=0
编辑 2. 我使用数据的几个子集更多地探索了这个问题。这里有一些信息可能会有所帮助。我的数据框中基本上有四种类型的行。我将用大写字母标记它们以便于参考:
- A:y、x1、x2 都是 NA。d1=0
- B:y、x1、x2 都是 NA。d1=1
- C:y、x1、x2 都是数字(连续)。d1=1
- D:y、x1、x2 都是数字(连续)。d1=0
似乎存在一行或多行 D 类型足以产生我在上述问题中提到的错误。(此外,如果所有行都是 D 类型,则 rq() 会失败,因为设计矩阵是奇异的。)这很奇怪。当解释变量之一为 0/1 时,quantreg 应该可以正常工作(实际上, rq() 确实可以正常工作)。当解释变量之一是虚拟变量(有变化)时,plot.summary.rqs() 抛出错误的原因是什么?
编辑 3. 我想出了如何解决问题,再次探索这些子集。我仍然不明白错误的原因,但我可以通过在估计方程中包含一个常数来避免这个问题:
library(quantreg)
rq.xy.1 <- rq(y~x1+x2+d1,tau=1:99/100,data=xy.df,na.action=na.omit,model=TRUE)
s2 <- summary(rq.xy.1,se="boot")
plot.summary.rqs(s2)
当我更多地考虑我试图评估的关系时,我发现包括常数在计量经济学上也是正确的方法。因此,我认为这个问题已经解决(无论如何现在)。
谢谢,Jimbou,你的帮助 - 如前所述,我对 R 很陌生,试图弄清楚如何提供最小数据集让我开始尝试用我的数据子集重现问题。如果我没有尝试过,我就不会在上面的编辑 2 中进行观察,也可能不会得出这个令人高兴的结论。