extend lines of prediction interval ggplot2

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

extend lines of prediction interval ggplot2

R help mailing list-2
Dear All,

 would you have some thoughts on how to extend the prediction interval lines to beyond the "range of data"?


example:

y <-c(0.4316092,0.4156757,0.3517915,0.3669508,0.3899471,0.3964143,
0.4001074,0.3851003,0.4222451,0.375324,0.3652045,0.3376978,0.383012,
0.3763665,0.3550609,0.2958678,0.3726571,0.3442298
#,0.3403275,0.2973978
)*100
x <-seq(1,length(y),1)

z<-c("07/01/2015","08/01/2015","09/01/2015","10/01/2015","11/01/2015",
"12/01/2015","01/01/2016","02/01/2016","03/01/2016","04/01/2016","05/01/2016",
"06/01/2016","07/01/2016","08/01/2016","09/01/2016","10/01/2016","11/01/2016",
"12/01/2016","01/01/2017","02/01/2017")

fit <-lm(y~x)

temp_var <- predict(fit, interval="prediction")

new_df <- data.frame(cbind(x,y, temp_var))
#new_df$x<-factor(new_df$x, ordered = T)

library(ggplot2)
ggplot(new_df, aes(x,y))+
geom_point() +
theme(panel.background = element_rect(fill = 'white', colour = 'black'))+
geom_line(aes(y=lwr), color = "black", linetype = "dashed",size=0.75)+
geom_line(aes(y=upr), color = "black", linetype = "dashed",size=0.75)+
scale_x_discrete(limits=z)+
theme(axis.text.x = element_text(angle = 45, hjust = 1))+
theme(panel.grid.major=element_line(colour = "grey"))+
lims(y=c(0,50))+
geom_smooth(method=lm, se=TRUE,fullrange=TRUE,fill="darkgrey",col="black")+labs(title = paste("Adj R2 = ",signif(summary(fit)$adj.r.squared, 4),
"Intercept =",signif(fit$coef[[1]],4 ),
" Slope =",signif(fit$coef[[2]], 4)
# " P =",signif(summary(fit)$coef[2,4], 3)
))+
ggtitle("Consumption Over Time") +
theme(plot.title = element_text(hjust = 0.5))+
labs(y="y",x="x")+
geom_point(shape=15,aes(x=c(7),y=new_df[,2][7]), color="black",cex=4)+
geom_point(shape=15,aes(x=c(8),y=new_df[,2][8]), color="black",cex=4)+
geom_point(shape=17,aes(x=c(19),y=0.3403275*100), color="black",cex=4)+
geom_point(shape=17,aes(x=c(20),y=0.2973978*100), color="black",cex=4)


as you  will see the regresssion line and confidence interval is extended, but would also want to extend the prediction interval lines to the "same length"... Wonder if you have any insights to this question...


appreciate the help,


Andras Farkas

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: extend lines of prediction interval ggplot2

Jeff Newmiller
Define your new_df before you calculate temp_var, and give it to predict so predict doesn't start from your original x values. Add temp_var to new_df.

Read ?predict.lm.

Don't create matrices with cbind before creating data frames... data frames can have a variety of data storage modes (types) for the columns, matrices cannot.

fit <-lm(y~x)
new_df <- data.frame(x,y)
new_df$temp_var <- predict(fit, newdata=new_df, interval="prediction")

--
Sent from my phone. Please excuse my brevity.

On March 14, 2017 4:39:51 AM PDT, Andras Farkas via R-help <[hidden email]> wrote:

>Dear All,
>
>would you have some thoughts on how to extend the prediction interval
>lines to beyond the "range of data"?
>
>
>example:
>
>y <-c(0.4316092,0.4156757,0.3517915,0.3669508,0.3899471,0.3964143,
>0.4001074,0.3851003,0.4222451,0.375324,0.3652045,0.3376978,0.383012,
>0.3763665,0.3550609,0.2958678,0.3726571,0.3442298
>#,0.3403275,0.2973978
>)*100
>x <-seq(1,length(y),1)
>
>z<-c("07/01/2015","08/01/2015","09/01/2015","10/01/2015","11/01/2015",
>"12/01/2015","01/01/2016","02/01/2016","03/01/2016","04/01/2016","05/01/2016",
>
>"06/01/2016","07/01/2016","08/01/2016","09/01/2016","10/01/2016","11/01/2016",
>
>"12/01/2016","01/01/2017","02/01/2017")
>
>fit <-lm(y~x)
>
>temp_var <- predict(fit, interval="prediction")
>
>new_df <- data.frame(cbind(x,y, temp_var))
>#new_df$x<-factor(new_df$x, ordered = T)
>
>library(ggplot2)
>ggplot(new_df, aes(x,y))+
>geom_point() +
>theme(panel.background = element_rect(fill = 'white', colour =
>'black'))+
>geom_line(aes(y=lwr), color = "black", linetype = "dashed",size=0.75)+
>geom_line(aes(y=upr), color = "black", linetype = "dashed",size=0.75)+
>scale_x_discrete(limits=z)+
>theme(axis.text.x = element_text(angle = 45, hjust = 1))+
>theme(panel.grid.major=element_line(colour = "grey"))+
>lims(y=c(0,50))+
>geom_smooth(method=lm,
>se=TRUE,fullrange=TRUE,fill="darkgrey",col="black")+labs(title =
>paste("Adj R2 = ",signif(summary(fit)$adj.r.squared, 4),
>"Intercept =",signif(fit$coef[[1]],4 ),
>" Slope =",signif(fit$coef[[2]], 4)
># " P =",signif(summary(fit)$coef[2,4], 3)
>))+
>ggtitle("Consumption Over Time") +
>theme(plot.title = element_text(hjust = 0.5))+
>labs(y="y",x="x")+
>geom_point(shape=15,aes(x=c(7),y=new_df[,2][7]), color="black",cex=4)+
>geom_point(shape=15,aes(x=c(8),y=new_df[,2][8]), color="black",cex=4)+
>geom_point(shape=17,aes(x=c(19),y=0.3403275*100), color="black",cex=4)+
>
>geom_point(shape=17,aes(x=c(20),y=0.2973978*100), color="black",cex=4)
>
>
>as you  will see the regresssion line and confidence interval is
>extended, but would also want to extend the prediction interval lines
>to the "same length"... Wonder if you have any insights to this
>question...
>
>
>appreciate the help,
>
>
>Andras Farkas
>
>______________________________________________
>[hidden email] mailing list -- To UNSUBSCRIBE and more, see
>https://stat.ethz.ch/mailman/listinfo/r-help
>PLEASE do read the posting guide
>http://www.R-project.org/posting-guide.html
>and provide commented, minimal, self-contained, reproducible code.

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Loading...