Table of Contents
- 1. Keen Chapter 5
- 1.1. Figure 5.1 normal quantile-quantile plot
- 1.2. Figure 5.2 normal quantile-quantile plot
- 1.3. Figure 5.3 normal quantile-quantile plot
- 1.4. Figure 5.4 gamma quantile-quantile plot
- 1.5. Figure 5.5 normal quantile-quantile plot
- 1.6. Figure 5.6 normal quantile-quantile plot
- 1.7. Figure 5.7 gamma quantile-quantile plot
1 Keen Chapter 5
1.1 Figure 5.1 normal quantile-quantile plot
- first set up the data vector
- then we use a point layer with the quantile-quantile stat and change the size of the points:
geom_point(stat="qq",shape=1,size=3.5)
require(ggplot2) require(grid) mass<-c(5.9,32.0,40.0,51.5,70.0,100.0,78.0,80.0,85.0,85.0, 110.0,115.0,125.0,130.0,120.0,120.0,130.0,135.0,110.0,130.0, 150.0,145.0,150.0,170.0,225.0,145.0,188.0,180.0,197.0,218.0, 300.0,260.0,265.0,250.0,250.0,300.0,320.0,514.0,556.0,840.0, 685.0,700.0,700.0,690.0,900.0,650.0,820.0,850.0,900.0,1015.0, 820.0,1100.0,1000.0,1100.0,1000.0,1000.0) df <- data.frame(y=mass) ggplot(df,aes(sample=mass)) + geom_point(stat="qq",shape=1,size=3.5) + scale_x_continuous(limits=c(-3,3),breaks=-3:3,expand=c(0,0.1)) + scale_y_continuous(limits=c(0,1200),breaks=seq(0,1200,by=200),expand=c(0,20)) + xlab("Standard Normal Quantiles") + ylab("Mass (g)") + theme( panel.background=element_blank(), axis.line=element_line(colour="black"), axis.text=element_text(colour="black",size=14), axis.title=element_text(colour="black",size=14), axis.ticks=element_line(colour="black"), axis.ticks.length=unit(3,"mm") )
1.2 Figure 5.2 normal quantile-quantile plot
- only use
coord_flip()
on the previous plot
ggplot(df,aes(sample=mass)) + geom_point(stat="qq",shape=1,size=3.5) + scale_x_continuous(limits=c(-3,3),breaks=-2:2,expand=c(0,0.5)) + scale_y_continuous(limits=c(0,1200),breaks=seq(0,1200,by=200),expand=c(0,20)) + xlab("Standard Normal Quantiles") + ylab("Mass (g)") + coord_flip() + theme( panel.background=element_blank(), axis.line=element_line(colour="black"), axis.text=element_text(colour="black",size=14), axis.title=element_text(colour="black",size=14), axis.ticks=element_line(colour="black"), axis.ticks.length=unit(3,"mm") )
1.3 Figure 5.3 normal quantile-quantile plot
- only add
geom_abline()
withintercept=mean(mass)
andslope=sd(mass)
(the line goes through the point defined by the mean of both, x and y values which is (mean(standard normal dist)=0,mean(mass)) thereforemean(mass)
is the intercept; the sd of the norm is one so the slope is sd(mass)/sd(standard normal dist)=sd(mass))
ggplot(df,aes(sample=mass)) + geom_point(stat="qq",shape=1,size=3.5) + geom_abline(intercept=mean(mass),slope=sd(mass)) + scale_x_continuous(limits=c(-3,3),breaks=-3:3,expand=c(0,0.1)) + scale_y_continuous(limits=c(0,1200),breaks=seq(0,1200,by=200),expand=c(0,20)) + xlab("Standard Normal Quantiles") + ylab("Mass (g)") + theme( panel.background=element_blank(), axis.line=element_line(colour="black"), axis.text=element_text(colour="black",size=14), axis.title=element_text(colour="black",size=14), axis.ticks=element_line(colour="black"), axis.ticks.length=unit(3,"mm") )
1.4 Figure 5.4 gamma quantile-quantile plot
- first we calculate the estimates of the scale and shape parameter of the gamma dist
- then we only change the dist to qgamma (distribution="qgamma") and set the parameters as list (dparams=list(shape=sshape,scale=sscale))
- last adjust the x-axis (limits and breaks)
sshape<-(mean(mass)/sd(mass))**2 sscale<-var(mass)/mean(mass) ggplot(df,aes(sample=mass)) + geom_point(stat="qq",distribution="qgamma",dparams=list(shape=sshape,scale=sscale),shape=1,size=3.5) + scale_x_continuous(limits=c(0,1500),breaks=seq(0,1500,by=500),expand=c(0,20)) + scale_y_continuous(limits=c(0,1200),breaks=seq(0,1200,by=200),expand=c(0,20)) + xlab("Gamma Quantiles") + ylab("Mass (g)") + theme( panel.background=element_blank(), axis.line=element_line(colour="black"), axis.text=element_text(colour="black",size=14), axis.title=element_text(colour="black",size=14), axis.ticks=element_line(colour="black"), axis.ticks.length=unit(3,"mm") )
1.5 Figure 5.5 normal quantile-quantile plot
- we only have to change the x-axis of plot 5.1
- so set the limits to
c(-4,4)
and the breaks to the required x-values by using theqnorm()
function and change the labels appropriately
- finally change to title of the x-axis
ggplot(df,aes(sample=mass)) + geom_point(stat="qq",shape=1,size=3.5) + scale_x_continuous(limits=c(-4,4), breaks=qnorm(c(0.0001,.01,.05,.25,.50,.75,.95,.99,.9999)), labels=c(0.01,1,5,25,50,75,95,99,99.99), expand=c(0,0.1)) + scale_y_continuous(limits=c(0,1200),breaks=seq(0,1200,by=200),expand=c(0,20)) + xlab("Normal Percentiles") + ylab("Mass (g)") + theme( panel.background=element_blank(), axis.line=element_line(colour="black"), axis.text=element_text(colour="black",size=14), axis.title=element_text(colour="black",size=14), axis.ticks=element_line(colour="black"), axis.ticks.length=unit(3,"mm") )
1.6 Figure 5.6 normal quantile-quantile plot
- it is the same like plot 5.5 - only add
coord_flip()
ggplot(df,aes(sample=mass)) + geom_point(stat="qq",shape=1,size=3.5) + scale_x_continuous(limits=c(-4,4), breaks=qnorm(c(0.0001,.01,.05,.25,.50,.75,.95,.99,.9999)), labels=c(0.01,1,5,25,50,75,95,99,99.99), expand=c(0,0.1)) + scale_y_continuous(limits=c(0,1200),breaks=seq(0,1200,by=200),expand=c(0,20)) + xlab("Normal Percentiles") + ylab("Mass (g)") + coord_flip() + theme( panel.background=element_blank(), axis.line=element_line(colour="black"), axis.text=element_text(colour="black",size=14), axis.title=element_text(colour="black",size=14), axis.ticks=element_line(colour="black"), axis.ticks.length=unit(3,"mm") )
1.7 Figure 5.7 gamma quantile-quantile plot
- from figure 5.4 we have to change the axis and flip the coordinates:
- to calculate the breaks we use
qgamma()
with the appropriate values and the shape and scale parameter
- then we change the labels accordingly
- add
coord_flip()
sshape<-(mean(mass)/sd(mass))**2 sscale<-var(mass)/mean(mass) ggplot(df,aes(sample=mass)) + geom_point(stat="qq",distribution="qgamma",dparams=list(shape=sshape,scale=sscale),shape=1,size=3.5) + scale_x_continuous(limits=c(0,2400), breaks=qgamma(c(0.01,.25,.50,.75,.95,.99,.999),shape=sshape,scale=sscale), labels=c(1,25,50,75,95,99,99.9),expand=c(0,20)) + scale_y_continuous(limits=c(0,1200),breaks=seq(0,1200,by=200),expand=c(0,20)) + xlab("Gamma Quantiles") + ylab("Mass (g)") + coord_flip() + theme( panel.background=element_blank(), axis.line=element_line(colour="black"), axis.text=element_text(colour="black",size=14), axis.title=element_text(colour="black",size=14), axis.ticks=element_line(colour="black"), axis.ticks.length=unit(3,"mm") )