在R quantreg中:dimnames的长度不等于数组范围

时间:2016-05-18 13:27:27

标签: r quantreg

我是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的输出是类rqrqsrq.process的对象这个是rqs)。
  • 对象s2是类summary.rqs的对象。
  • 这意味着s2是一个列表(我想? - 这就是我在RStudio的环境窗格中看到的内容);不确定这是否重要;我确实对它进行了扫描,看看是否有一个有用的指示器显示了dimnames的长度并没有看到任何看似明显有用的东西
  • 我打电话给traceback()(基于阅读另一个在线帮助帖子),但这并没有产生任何看似有用的东西。
  • 我尝试了model.matrix(y~-1+x1+x2+d1, data=xy.df(基于阅读"length of 'dimnames' [1] not equal to array extent" error in linear regression summary in r)但又一次,这并没有给我任何线索。我认为那是因为错误被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中做出观察,也许不会得出这个快乐的结论。

0 个答案:

没有答案