代码之家  ›  专栏  ›  技术社区  ›  James White

从二阶分位数回归中获得拟合值

  •  1
  • James White  · 技术社区  · 6 年前

    我相信这很容易解决,但我有一个关于分位数回归的问题。

    假设我有一个数据框架,它遵循二阶多项式曲线的趋势,并且我构造了一个分位数回归,通过数据的不同部分进行拟合:

    ##Data preperation
    set.seed(5)
    d <- data.frame(x=seq(-5, 5, len=51))
    d$y <- 50 - 0.3*d$x^2 + rnorm(nrow(d))
    
    ##Quantile regression
    Taus <- c(0.1,0.5,0.9)
    QUA<-rq(y ~ 1 + x + I(x^2), tau=Taus, data=d)
    plot(y~x,data=d)
    for (k in 1:length(Taus)){
     curve((QUA$coef[1,k])+(QUA$coef[2,k])*(x)+(QUA$coef[3,k])*(x^2),lwd=2,lty=1, add = TRUE)
    }
    

    我可以通过'predict.rq'函数获得最大y值,您可以看到下面的图。

    Plot obtained from above code

     ##Maximum prediction
     Pred_df<- as.data.frame(predict.rq(QUA))
     apply(Pred_df,2,max)
    

    所以我的问题是,如何得到对应于每个分位数的最大y值(即插入斜率)的x值?

    1 回复  |  直到 6 年前
        1
  •  1
  •   joran    6 年前

    包裹 扫帚 在这里可能非常有用:

    library(broom)
    library(dplyr)
    augment(QUA) %>% 
      group_by(.tau) %>% 
      filter(.fitted == max(.fitted))