quantreg包summary.rq能否指定method?如何输出fn方法结果
分位数回归summary输出fn方法结果的解决办法
问题背景
用quantreg包的rq()函数做分位数回归时,用method="br"拟合会弹出“solutions may be nonunique”警告;换成method="fn"拟合后,fit$coefficients是fn方法的结果,但summary(fit)输出的系数却和br方法的一致,还会触发同样的警告,需要让summary直接输出fn方法的求解结果。
原因
默认情况下,summary.rq()函数在计算系数的置信区间和统计量时,会自动调用method="br"重新拟合模型,这就导致summary结果和fit$coefficients不一致,还会触发br方法的警告。
解决方法
调用summary()时,显式指定method="fn",同时选择合适的标准误计算方法(比如se="nid"),强制summary使用fn方法的结果生成统计输出。
完整代码示例
library(quantreg) # 生成示例数据 set.seed(123) n <- 100 x1 <- runif(100) x2 <- sample(0:2, n, replace=TRUE) x3 <- sample(c(0, 1), n, replace=TRUE) y <- 10 + 25*x1 + 14*x2 + rnorm(n) dat <- data.frame(y, x1, x2, x3) # 用fn方法拟合分位数回归模型 fit <- rq(y ~ x1 + x2 + x3, method="fn", data=dat, tau=0.5) # 查看fn方法的系数结果 fit$coefficients # (Intercept) x1 x2 x3 # 9.4021951 25.1791775 14.1790548 0.2947553 # 指定summary使用fn方法计算统计量 summary(fit, method="fn", se="nid")
输出结果说明
执行上述summary命令后,输出的系数会和fit$coefficients完全一致,且不会再出现“solutions may be nonunique”的警告。其中:
method="fn":指定summary使用fn方法的拟合结果,避免重新调用br方法se="nid":采用“渐近正态分布”方法计算标准误,也可以根据需求换成"boot"(自助法)等其他标准误计算方式
内容的提问来源于stack exchange,提问作者nightstand
相关产品推荐
相关产品推荐

