2017-11-23 17 views
2

quantale回帰に合うように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

あなただけの迅速な結果のための分位数の引数に追加することができ、 'geom_quantile(数式= y〜ns(x、knots = sp)、quantiles = c(0.05、0.5、0.95))'ですが、代わりにリボンを作るには別の方法が必要です –

答えて

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

+0

これは素晴らしいです!ありがとうございました!信頼区間をより滑らかにすることは可能ですか? – user6121484

+0

@ user6121484モデルのフィット感を評価する必要があります。 「モデル」では、予測子として「x」、「年齢」、「性別」を考慮します。後で(gg)をプロットすると、「x」だけで回帰する*異なる*分位回帰モデルからフィットを追加することができます。私はあなたが何をしようとしているのかは分かりませんが、 'モデル 'から' age'と 'sex'を取り除くと、信頼区間を含むより滑らかなブルーフィット曲線が再現されます。 –

+0

モデルでは、年齢と性別を修正しています。だから私は年齢と性別を訂正してxとyの関係をプロットする必要があります。 – user6121484

関連する問題