In the previous tutorial we used variables and methods to find properties and traits of the Normal distribution. Before that we looked at statistical methods and construction of the Normal distribution. In this tutorial we look at multivariate distributions, which should feel similar to univariate distributions.
Construction of a multivariate distribution is identical to a univariate distribution, except that a vector input is likely to be required for one of the parameters. In keeping with our running Normal example, we will now use the Multivariate Normal distribution.
MN <- MultivariateNormal$new(mean = c(0,0), cov = c(1,0,0,1))
MultivariateNormal$new() # This is in fact the default
#> MultiNorm(cov = c(1, 0, 0, 1), mean = c(0, 0))
Notice how this is almost identical to constructing a univariate Normal distribution. We even allow multiple parameterisations
MultivariateNormal$new(mean = c(0,0), prec = c(1,0,0,1))
#> MultiNorm(mean = c(0, 0), prec = c(1, 0, 0, 1))
The biggest difference between univariate and multivariate distributions is in how arguments are passed to the d/p/q/r methods. This differs slightly from R stats. For example to evaluate the pdf of the multinomial distribution at (1,2) in R stats we would run
Whereas in distr6, each point is its own argument
Multinomial$new(size = 3, probs = c(0.2,0.8))$pdf(1,2)
#> [1] 0.384
There is a very important reason for this: vectorisation. In R stats there is no way to generate multiple points from a multivariate distribution, whereas in distr6…
MN$pdf(c(1,2), c(2,3))
#> [1] 0.0130642333 0.0002392798
MN$rand(5)
#> V1 V2
#> <num> <num>
#> 1: 1.3709584 -0.56469817
#> 2: 0.3631284 0.63286260
#> 3: 0.4042683 -0.10612452
#> 4: 1.5115220 -0.09465904
#> 5: 2.0184237 -0.06271410
Note: cdf()
and quantile()
are often
omitted from multivariate distributions n distr6 as no closed form
analytic expression exists.
In this tutorial we looked at multivariate distributions and discussed the difference between distr6 and R stats in using the d/p/q/r functions. The next tutorial concludes the ‘Basic’ set of tutorials with a look at listing in distr6 to help you navigate the package more easily.