Given m
matrix distributions distributions of length N
,
creates a new Matdist by summing over the weighted cdfs. Note that this
method does not create a MixtureDistribution but a new Matdist.
Assumes Matrix distributions have the same number of columns, otherwise use
mixturiseVector(lapply(mds, as.VectorDistribution))
.
mixMatrix(mds, weights = "uniform")
This method returns a new Matdist which is less flexible than a
MixtureDistribution which has parameters (i.e. weights
) that can be
updated after construction.
Also works for Arrdists, where we convert these to Matdists, based on the
which.curve
initialization parameter.
m1 <- as.Distribution(
t(apply(matrix(runif(25), 5, 5, FALSE,
list(NULL, 1:5)), 1,
function(x) x / sum(x))),
fun = "pdf"
)
m2 <- as.Distribution(
t(apply(matrix(runif(25), 5, 5, FALSE,
list(NULL, 1:5)), 1,
function(x) x / sum(x))),
fun = "pdf"
)
# uniform mixing
m3 <- mixMatrix(list(m1, m2))
# un-uniform mixing
m4 <- mixMatrix(list(m1, m2), weights = c(0.1, 0.9))
m1$cdf(3)
#> [,1] [,2] [,3] [,4] [,5]
#> 3 0.6998555 0.4082011 0.7042785 0.6939649 0.6087956
m2$cdf(3)
#> [,1] [,2] [,3] [,4] [,5]
#> 3 0.508945 0.6287211 0.4297181 0.5005523 0.5717845
m3$cdf(3)
#> [,1] [,2] [,3] [,4] [,5]
#> 3 0.6044002 0.5184611 0.5669983 0.5972586 0.59029
m4$cdf(3)
#> [,1] [,2] [,3] [,4] [,5]
#> 3 0.528036 0.6066691 0.4571742 0.5198936 0.5754856