我使用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)
这不显示置信区间?? 此外,这个情节不考虑协变量?有没有办法做到这一点?
答案 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);