summary.rq 输出取决于样本大小
summary.rq output depends on sample size
我发现(见下文)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 函数,并且想使用较低和较高的波段值。
输出之间的差异不是来自 rq()
,而是来自 summary.rq()
。
quantreg
对小于 1000 的样本量使用 "rank" 推理方法,否则使用 "nid"。帮助文件表明 "rank" 方法对于较大的样本量可能会非常慢。如果您坚持让前一个输出出现在所有循环研究中,那么您可以指定
summary(rq(y ~ x, tau = 0.025),se="rank")
但是,更仔细地研究一下可能会更好地为您服务。例如,如果您的某些研究的样本量非常大,计算可能会变得非常慢,您可能需要为所有研究指定 se="nid"
并手动计算上限和下限(upper=Value + 1.96*Std. Error
和 lower=Value - 1.96*Std. Error
.
我发现(见下文)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 函数,并且想使用较低和较高的波段值。
输出之间的差异不是来自 rq()
,而是来自 summary.rq()
。
quantreg
对小于 1000 的样本量使用 "rank" 推理方法,否则使用 "nid"。帮助文件表明 "rank" 方法对于较大的样本量可能会非常慢。如果您坚持让前一个输出出现在所有循环研究中,那么您可以指定
summary(rq(y ~ x, tau = 0.025),se="rank")
但是,更仔细地研究一下可能会更好地为您服务。例如,如果您的某些研究的样本量非常大,计算可能会变得非常慢,您可能需要为所有研究指定 se="nid"
并手动计算上限和下限(upper=Value + 1.96*Std. Error
和 lower=Value - 1.96*Std. Error
.