将置信区间添加到分位数回归的样条

add confidence interval to splines from quantile regression

我正在使用 quantreg 来拟合分位数回归,并且还添加了一些基于 x 值(分位数)的节点。我现在想绘制这个并且还有置信区间。不知道该怎么做。

这是一个可重现的例子:

  #create data    
  x <- seq(0,100,length.out = 100)        
  sig <- 0.1 + 0.05*x 
  b_0 <- 6                                
  b_1 <- 0.1                              
 set.seed(1)                             
 e <- rnorm(100,mean = 0, sd = sig)      
 y <- b_0 + b_1*x + e 

mydata <- data.frame(x,y, age=sample(30:70,100,replace=TRUE), sex=sample(c("Male","Female"),100, replace=TRUE))

#run regression
library(quantreg)
library(splines)
model <- rq(y ~ ns(x, knots=c(25,50,75))+age+sex, tau=0.5, data=mydata ) 

#plot
sp <- c(25,50,75)
ggplot(mydata, aes(x=x,y=y))+ geom_point()+ geom_quantile(formula=y~ns(x,knots=sp), quantiles=0.5, se=T)

这不显示置信区间?? 另外,这个图没有考虑协变量?有办法吗?

您实际上并没有在绘图中使用 model 的结果。所以我不完全确定你要做什么。

您可以使用 predict 获得基于分位数回归模型的预测,包括置信区间,并使用 geom_ribbon:

绘制这些预测
# Get model-based predictions
pred <- as.data.frame(predict(model, data.frame(x = mydata$x, age = mydata$age, sex = mydata$sex), interval = "confidence"));
pred$x <- mydata$x;

#plot
sp <- c(25,50,75);
ggplot(mydata, aes(x=x,y=y)) +
    geom_point() +
    geom_line(data = pred, aes(x = x, y = fit)) +
    geom_ribbon(data = pred, aes(ymin = lower, ymax = higher, x = x), alpha = 0.4) +
    geom_quantile(formula = y ~ ns(x, knots = sp), quantiles = 0.5, se = T);