As credal sets are extremely general, it seems likely that we should start this study by focussing on Dempster-Shafer structures on the real line [DSSs]. Perhaps the simplest structures that might reveal a difference between p-boxes and possibility distributions are these two DSSs:
red = {(0.5, [2,3]), (0.5, [1,4])}
blue = {(0.5, [1,3]), (0.5, [2,4])}
which are depicted in the figure below. These two-element DSSs correspond to credal sets consisting of all distributions that have half their mass in one of the two focal elements and the other half in the other focal element.
The credal sets for both the red and blue DSSs are very large. Comparatively small subsets within them are the sets of two-point distributions. The top graphs in the figure below (made with the R code further down) show the cdfs of 1000 randomly selected two-point distributions from the red and blue credal sets. The blue and red credal sets are impossible to distinguish on the basis of their respective two-mass distribution functions. The bottom graphs, on the other hand, draw horizontal lines that simply connect the minimum value and the maximum value from each such two-point distribution; these horizontal line segments are arranged vertically (sorted by the smaller value). These plots indicate pretty clearly that the credal sets are decidedly different for the red consonant DSS and the blue non-consonant DSS.
The figure below shows the mean and population standard deviation for two-point distributions randomly selected from the credal set associated with the red consonant DSS, and from the credal set associated with the blue non-consonant DSS. The range of possible means for these red and blue credal sets are the same, but the standard deviation for distributions in the red credal set is constrained to the range [0, 1], and for the blue credal set to [0, 1.5]. Are these limits on the mean and standard deviation correct for all distributions in the red and blue credal sets, not just the two-point distributions? They seem to be for this particular case, but they should not be correct for more general DSSs. For example, for a DSS with three equally weighted focal elements, a three-point distribution (with equal masses) cannot find the largest variance for the DSS except in special cases. (The scattergrams for mean and standard deviation will differ from those depicted below when continuous distributions are considered.)
In pba.r, the syntax to create the red and blue p-boxes is
red = mix.equal.interval(c(interval(1,4),interval(2,3)))
blue = mix.equal.interval(c(interval(1,3),interval(3,4)))
In Risk Calc, the syntax is still simpler:
red = mix([1,4], [2,3])
blue = mix([1,3], [2,4])
Owing to a bug in its mixture constructor, the current implementation of pba.r inconveniently does not automatically make use of the tighter constraint on the standard deviation, and both assignments above create the same object. This can be at least partially repaired manually with the additional assignment red@vh = 1 which resets the upper limit on the variance for the red variable. In Risk Calc, the correction would be red = imp(red,mmms(1, 4, [1.5,3.5], [0,1])) . Can the current implementation of mixture in pba.r be improved to correctly compute the bounds on the variance for a DSS? The variance of an interval [a,b] is sure to be in the interval [0, ((b-a)/2)^2], but the formulas for computing the variance of a mixture has repeated uncertain variables.
The red and blue objects created this way are equivalent to envelopes of two-point distributions that extremise the mean and standard deviation for each DSS:
red ~ env( mixture(1,2), mixture(3,4), mixture(2,2), mixture(1,3), mixture(2,4))
blue ~ env( mixture(1,2), mixture(3,4), mixture(2,2), mixture(1,4), mixture(2,3))
where the mixture functions create two-point distributions from the given values, and the first two arguments to the envelope function extremise the mean and the other arguments extremise the dispersion.
The difference in standard deviation can affect the dispersion but also the mean and the shape of the p-box (bounds on the cdfs) of functions of the red and blue DSSs. For instance, the output mean is affected in this simple calculation:
r = red * U(1,2)
b = blue * U(1,2)
r;b
~(range=[1,8], mean=[1.9,5.6], var=[0,8.6])
~(range=[1,8], mean=[1.8,5.7], var=[0,8.6])
where the asterisk denotes multiplication without any assumption about intervariable dependence, i.e., the Fréchet case.
Is there some example calculation in which the difference in standard deviation affects the shapes of the resulting p-boxes?
It is not clear whether the dependence between mean and standard deviation evident in the scatterplots above can be accessed and made use of within probability bounds analysis or any other uncertainty propagation theory to tighten or otherwise improve the output of mathematical expressions involving the consonant versus non-consonant DSSs. Can the dependence tracking methods currently being developed by Ander and Enrique be brought to bear on this question?
The nature of this dependence between the mean and the dispersion depends on the details of the DSSs. The file "fuzzposss.pptx" attached to the bottom the main page contains pictures and code for these and more numerical examples.
The difference in dispersion is perhaps not the only significant difference between the two exemplar credal sets. At the same time, it seems likely that the theory of moment projections may suffice to handle this difference between the two credal sets.
Are there other aspects that we should be exploring besides dispersion?
R code to make the plots above (see the attached file fuzzposs.pptx for more code)
many = 1000
i = rep(1:many, rep(2,many))
par(mfrow=c(3,2))
makedists = function(a,b,c,d,some=many) {
a1 = runif(some, a,b); a2 = runif(some, c,d)
A1 = pmin(a1,a2); A2 = pmax(a1,a2); r = order(A1);
a1 = A1[r]; a2 = A2[r]
return(list(d=a1,u=a2))
}
plt = function() plot(NULL, xlim=c(0,5), ylim=c(0,1), xlab='', ylab='')
showem = function(A,a) {
plt(); for (i in 1:many) lines(c(A$d[i],A$d[i],A$u[i],A$u[i]),c(0,0.5,0.5,1),col='red')
plt(); for (i in 1:many) lines(c(a$d[i],a$d[i],a$u[i],a$u[i]),c(0,0.5,0.5,1),col='blue')
plt(); for (i in 1:many) lines(c(A$d[i],A$u[i]),rep(i/(many+1),2),col='red')
plt(); for (i in 1:many) lines(c(a$d[i],a$u[i]),rep(i/(many+1),2),col='blue') }
a = makedists(2,3, 1,4)
A = makedists(1,3, 2,4)
showem(A,a)
ranges = function(A) {
M = S = rep(0,many)
for (i in 1:many) M[[i]] = mean(c(A$d[[i]], A$u[[i]]))
for (i in 1:many) S[[i]] = sd(c(A$d[[i]], A$u[[i]]))
list(mean=range(M), sd=range(S)) }
unlist(ranges(A))
unlist(ranges(a))
# Mean-sd plots for random 2-point distributions from
# the consonant (red) and canonical (blue) DSSs
a = b = rep(interval(0,0),2)
a[[1]] = interval(1,4)
a[[2]] = interval(2,3)
b[[1]] = interval(1,3)
b[[2]] = interval(2,4)
V = function(x, n=length(x)) return(var(x) * (n-1) / n) # population variance
dssMV = function(a, color='black', many=1000,new=TRUE) {
n = length(a)
m = v = NULL
for (i in 1:many) {
pt = runif(n, left(a), right(a))
m = c(m, mean(pt))
v = c(v, V(pt,n))
}
if (new) plot(m,sqrt(v),col=color,ylim=c(0,1.5)) else points(m,sqrt(v),col=color)
}
dssMV(a,'red')
dssMV(b,'blue')