Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I amend this notch error for a boxplot?

Tags:

r

I have included notches in my boxplot with regards to the following code:

> boxplot(dframe1$High.calcium..diet, dframe1$Low.calcium.diet,         # The basic boxplot command
+ varwidth = FALSE,                        # width of boxes represents sample size
+ notch = TRUE,                           # add a notch indicating 95% confidence intervals
+ names = c("High Calcium diet", "Low Calcium diet"),                     # labels the different boxes
+ col=c("violet", "light green"),          # colours the different boxes
+ xlab = "Diet",                  # adds an x-axis label
+ ylab = "parathyroid hormone per 100 ml blood",      # adds a y-axis label
+ cex.lab = 1.6,                          # adjusts the size of the axis labels
+ cex.axis = 1.3,                         # adjusts the size of the axis numbering
+ las = 1)
Warning message:
In bxp(list(stats = c(12.7, 14.4, 16.2, 18.25, 23.1, 15.1, 40.2,  :
  some notches went outside hinges ('box'): maybe set notch=FALSE
> 

However, I receive the warning as above, but I do not want to set notch to FALSE, as I want the notches. How would I fix this?

And this is the data that goes with it:

High calcium  diet  Low calcium diet
14.5    52.7
18.2    44.4
15  125
14.3    66.4
25.7    23.3
17.3    88.3
23.1    38.8
16.2    42.9
12.7    15.1
18.3    41.6
13.2    53.2
like image 881
user3069564 Avatar asked Feb 13 '23 14:02

user3069564


1 Answers

It means that the confidence interval (i.e. size of the notches) is larger than the interquartile range (IQR). The size of the notches depends on your data: +/-1.58 IQR/sqrt(n) see ?boxplot.stats.

If you take a larger sample (increase n), the size of the notches may decrease.

You can also decide to plot boxplots without notches and manually add markers to your confidence limits.

Create boxplot without notches:

boxplot(dframe1, notch=F, ylim=c(0,125))

Retrieve confidence intervals of both columns in data frame:

ci_high = boxplot.stats(dframe1[,1], do.conf=T)$conf
ci_low  = boxplot.stats(dframe1[,2], do.conf=T)$conf

Add these to plot:

points(x=c(1,1), y=ci_high, col=2, pch=8)    
points(x=c(2,2), y=ci_low, col=2, pch=8)
like image 157
koekenbakker Avatar answered Feb 16 '23 10:02

koekenbakker