2

我发现(见下文)quantreg 包中的函数summary.rq(第 88 页)打印不同的输出,具体取决于样本大小是大于等于还是小于 1001。

我知道, rq() 使用不同的方法,具体取决于样本大小是大于还是小于 1001。我认为这就是这种行为的原因。

显示所描述行为的 MWE:

> library(quantreg)
> x <- seq(0, 100, length.out = 1000)     
> e <- rnorm(1000, mean = 0, sd = 1.2)
> y <- 6 + 0.1 * x + e  
> summary(rq(y ~ x, tau = 0.025))

Call: rq(formula = y ~ x, tau = 0.025)

tau: [1] 0.025

Coefficients:
            coefficients lower bd upper bd
(Intercept) 3.67733      2.92776  3.88165 
x           0.10061      0.09578  0.10675 
Warning message:
In rq.fit.br(x, y, tau = tau, ci = TRUE, ...) : Solution may be 
nonunique

> x <- seq(0, 100, length.out = 1001)     
> e <- rnorm(1001, mean = 0, sd = 1.2)
> y <- 6 + 0.1 * x + e  
> summary(rq(y ~ x, tau = 0.025))

Call: rq(formula = y ~ x, tau = 0.025)

tau: [1] 0.025

Coefficients:
            Value    Std. Error t value  Pr(>|t|)
(Intercept)  3.61744  0.28052   12.89559  0.00000
x            0.10033  0.00477   21.04017  0.00000

这是期望的行为吗?对于大于 1000 的样本,如何获得第一种形式的输出?

我的问题是我在多个样本大小的循环中使用 summary.rq 函数,并且希望使用较低和较高的波段值。

4

1 回答 1

1

输出之间的差异不是来自,rq()而是来自summary.rq()quantreg对小于 1000 的样本大小使用“等级”推理方法,否则使用“nid”。帮助文件表明,对于较大的样本量,“排名”方法可能会非常慢。如果您坚持让所有循环研究出现前一个输出,那么您可以指定

summary(rq(y ~ x, tau = 0.025),se="rank")

但是,通过更仔细地研究这一点,您可能会得到更好的服务。例如,如果您的某些研究具有非常大的样本量,则计算可能会变得非常缓慢,您可能希望se="nid"为所有研究指定并手动计算上限和下限(upper=Value + 1.96*Std. Errorlower=Value - 1.96*Std. Error.

于 2018-12-16T15:23:32.423 回答