Plots for uncertainty budgets produced by `uncert`

calls.

1 2 3 4 5 6 7 8 | ```
## S3 method for class 'uncert'
plot(x, which = c(1,2,4,5), main = paste(deparse(substitute(x))),
ask = prod(par("mfcol")) < length(which) && dev.interactive(),
caption = list("Variance and covariance contributions",
expression(sqrt(group("|", "Variance and covariance contributions", "|"))),
expression("Contribution " * u[i](y) == c[i] * u[i]),
"Combined contribution", "Correlation (x,y)",
"Covariances (x,y)"), cex.caption = 1, ...)
``` |

`x` |
An object of class |

`which` |
Integer in 1:6; the particular variant(s) of plot required. A vector is permitted, in which case plots are produced in ascending order. |

`main` |
Main title for the plot |

`ask` |
logical; if 'TRUE', the user is _ask_ed before each plot, see 'par("ask=")' |

`caption` |
A list of captions for |

`cex.caption` |
Text size for captions. Note that if the number of figures per page is over 2, captions are further scaled by 0.8 |

`...` |
Further parameters passed to |

For uncert objects created with methods other than MC, the plot types are:

`which=1`

A barplot of all non-zero contributions to the combined uncertainty. These are derived from the covariance matrix and the coefficients

*c_i*. For terms on the diagonal of the covariance matrix, these are*(c_i*u_i)^2*; for off-diagonal terms (the correlation terms),*2*(c_i*u_i)*(c_j*u_j)*r_ij*. The threshold for deciding an off-diagonal term is nonzero is that its magnitude is greater than`2*.Machine$double.eps`

. Note that off-diagonal contributions may be negative.`which=2`

As for

`which=1`

except that the square root of the absolute value is plotted. For the 'diagonal' terms, these are just eqnu_i(y) in the nomenclature used by the GUM.`which=3`

A barplot of

*u_i(y)^2*, without the correlation terms.`which=4`

A barplot of the sum of all (co)variance contributions associated with each

*x[i]*, that is,*contrib[i]=(c[i]u[i])^2+sum( 2(c[i]u[i])(c[j]u[j])r[i,j], j != i )*.

`which=5`

A barplot of the theoretical correlations

*cov(x[i],y)/(u[i]u.y)*.`which=6`

A barplot of the theoretical covariances

*cov(x[i],y)*.

Values of `which`

outside this range are silently ignored.

For the X-Y correlation and covariance plots, the covariances are calculated from the
covariance matrix *V* (supplied to `uncert()`

as `cov`

or calculated as `outer(u,u,"*")*cor`

) and sensitivity coefficients *c[i]*
as *cov(x[i],y) = sum_j(V[j,i]c[j]) *.
In fact the calculation used is simpler: `cov.xy <- V %*% ci`

. The correlations
are calculated in turn from these using *cov(x[i],y)/(u[i]*u.y)*.

Perhaps the most informative plots are for `which=1`

, `which=2`

,
`which=4`

and `which=5`

. The first of these includes all nonzero signed contributions,
making the negative contributions visible; the second (`which=2`

) makes direct
comparison of magnitudes easier. The combined contribution plot is the effect on
the total variance of removing all terms associated with a particular variable; it
shows how much *u(y)^2* would *reduce* if the uncertainty for *x[i]* were
reduced to zero. Note that in some cases with negative correlation the combined uncertainty can *increase*,
on dropping a variable, shown by a negative reduction in the plot. (`which=5`

) is among the most
direct indications of the relative importance of individual parameters.

Objects created with the MC method are passed to `plot.uncertMC`

.

Invisibly returns the default return value for the last plot produced.

S. L. R. Ellison, s.ellison@lgc.co.uk

None.

`uncert`

, `barplot`

, `plot.uncertMC`

.

1 2 3 4 5 6 7 8 9 10 | ```
#An example with negative correlation
x <- list(a=1, b=3, c=2, d=11)
u <- lapply(x, function(x) x/10)
u.cor<-diag(1,4)
u.cor[3,4]<-u.cor[4,3]<- -0.5
u.form.c<-uncert(~a+b*2+c*3+d/2, x, u, method="NUM", cor=u.cor)
par(mfrow=c(3,2))
plot(u.form.c, which=1:6, las=1, horiz=TRUE) #Note use of barplot parameters
``` |

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.

All documentation is copyright its authors; we didn't write any of that.