从分位数回归中为样条添加置信区间

时间:2017-11-23 23:56:39

标签: r plot spline quantile

我使用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)

这不显示置信区间?? 此外,这个情节不考虑协变量?有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

您实际上并未使用情节中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);

enter image description here