Skip to contents

Draws n iid samples from a d-variate Marshall–Olkin distribution parametrized by a vector of shock-arrival intensities.

Usage

rmo(n, d, lambda, method = c("AM", "ESM"))

Arguments

n

An integer for the number of samples.

d

An integer for the dimension.

lambda

A numeric vector for the shock-arrival intensities.

method

A string indicating which sampling algorithm should be used. Use "AM" for the Arnold model and "ESM" for the exogenous shock model. We recommend using the ESM for small dimensions only; the AM can be used up until dimension \(30\).

Value

rmo returns a numeric matrix of size n x d. Each row corresponds to an independently and identically (iid) distributed sample from a d-variate Marshall–Olkin distribution with specified parameters.

Details

The Marshall–Olkin distribution was introduced in (Marshall and Olkin 1967) . It is characterized by the survival function: $$ \bar{F}{(t)} = \exp{\left\{ - \sum_{I} \lambda_I \max_{i \in I} t_i \right\}}, \quad t = {(t_{1}, \ldots, t_{d})} > 0, $$ for shock-arrival intensities \(\lambda_I \geq 0\), \(\emptyset \neq I \subseteq {\{ 1 , \ldots, d \}}\). The shock-arrival intensities correspond to the rates of independent exponential random variables in the exogenous shock model (ESM). If \(\lambda_{I}\) is zero, it means that the shock \(I\) never arrives.

To map subsets of \({\{ 1, \ldots, d\}}\) to integers \(0, \ldots, 2^d-1\), we use a binary representation: $$ I \equiv \sum_{k \in I}{ 2^{k-1} } $$

Simulation algorithms

  • The exogenous shock model (ESM) is a simulation algorithm for generating samples from a Marshall–Olkin distributed random vector. It works by generating independent exponentially distributed shock arrival times for all non-empty subsets of components. Each component's death time is then defined as the minimum of all shock arrival times corresponding to a subset containing that component. See (Marshall and Olkin 1967) .

  • The Arnold model (AM) is a simulation algorithm used to generate samples from a Marshall–Olkin distributed random vector. It simulates a marked homogeneous Poisson process with set-valued marks, where the process is stopped when all components are hit by a shock. See (Arnold 1975) .

References

Arnold BC (1975). “A characterization of the exponential distribution by multivariate geometric compounding.” Sankhy\=a: The Indian Journal of Statistics, Series A, 37(1), 164--173.

Mai J, Scherer M (2017). Simulating copulas: stochastic models, sampling algorithms and applications, Series in Quantitative Finance, 2 edition. World Scientific. doi:10.1142/10265 .

Marshall AW, Olkin I (1967). “A multivariate exponential distribution.” Journal of the American Statistical Association, 62(317), 30--44. doi:10.2307/2282907 .

See also

Other sampling-algorithms: rexmo(), rextmo(), rpextmo()

Examples

rmo(
  10, 3,
  c(0.4, 0.4, 0.1, 0.4, 0.1, 0.1, 0.4)
)
#>            [,1]      [,2]      [,3]
#>  [1,] 1.4940680 0.4815166 1.4940680
#>  [2,] 1.5630504 1.2373555 0.2722576
#>  [3,] 0.8146715 0.8146715 0.6092743
#>  [4,] 0.3496862 0.3496862 0.3496862
#>  [5,] 0.3435542 0.4846409 0.4846409
#>  [6,] 1.6256177 0.1128544 0.9396170
#>  [7,] 1.5936785 1.6181729 2.0635134
#>  [8,] 1.1823875 1.0045385 0.8173033
#>  [9,] 1.4537369 1.5072054 1.5072054
#> [10,] 0.1561436 0.9978466 1.2825705
## independence
rmo(
  10, 3,
  c(1, 1, 0, 1, 0, 0, 0)
)
#>             [,1]      [,2]       [,3]
#>  [1,] 1.55043376 4.9591510 0.59314079
#>  [2,] 0.56480836 1.0989577 0.71035413
#>  [3,] 3.06501354 1.7777253 0.56828478
#>  [4,] 0.42291587 0.2076186 3.33923080
#>  [5,] 1.23372305 2.8210454 1.11498917
#>  [6,] 0.82371196 0.3091672 0.06546795
#>  [7,] 1.03867515 0.7887616 1.87408558
#>  [8,] 3.14180508 1.6819957 0.14326913
#>  [9,] 0.05036702 2.1274593 0.27919683
#> [10,] 0.33992185 1.1771542 0.19741569
## comonotone
rmo(
  10, 3,
  c(0, 0, 0, 0, 0, 0, 1)
)
#>            [,1]      [,2]      [,3]
#>  [1,] 0.6705312 0.6705312 0.6705312
#>  [2,] 3.9234935 3.9234935 3.9234935
#>  [3,] 3.0003424 3.0003424 3.0003424
#>  [4,] 1.0175859 1.0175859 1.0175859
#>  [5,] 0.4891376 0.4891376 0.4891376
#>  [6,] 0.3268564 0.3268564 0.3268564
#>  [7,] 2.9817897 2.9817897 2.9817897
#>  [8,] 1.4009379 1.4009379 1.4009379
#>  [9,] 0.3559706 0.3559706 0.3559706
#> [10,] 3.5363665 3.5363665 3.5363665

rmo(
  10, 3,
  c(0.4, 0.4, 0.1, 0.4, 0.1, 0.1, 0.4),
  method = "ESM"
)
#>            [,1]      [,2]      [,3]
#>  [1,] 1.9390463 0.8956118 0.7723317
#>  [2,] 0.1980023 0.1980023 1.6353970
#>  [3,] 1.2602306 0.3926964 0.3926964
#>  [4,] 0.3680278 0.6428365 0.3920976
#>  [5,] 0.2816918 0.2816918 0.2816918
#>  [6,] 2.4191220 1.8670950 1.4958052
#>  [7,] 0.2261208 0.6324528 0.3446946
#>  [8,] 0.7196356 0.1072250 1.6197650
#>  [9,] 5.6803805 1.6602886 0.4947832
#> [10,] 2.2850630 0.3962204 2.2850630
## independence
rmo(
  10, 3,
  c(1, 1, 0, 1, 0, 0, 0),
  method = "ESM"
)
#>            [,1]      [,2]      [,3]
#>  [1,] 0.7801827 1.1925207 1.2282790
#>  [2,] 0.6528116 1.1835067 0.6250840
#>  [3,] 1.2629739 0.8212927 0.1782162
#>  [4,] 0.5427513 2.8512961 0.2569508
#>  [5,] 0.5562053 0.8796018 0.5752900
#>  [6,] 0.3210594 1.7909844 1.0778337
#>  [7,] 0.2376185 1.4333168 0.2196906
#>  [8,] 2.0814817 0.7213820 2.5050839
#>  [9,] 0.1961726 1.4082164 0.2898257
#> [10,] 1.3030093 0.3541535 1.1675512
## comonotone
rmo(
  10, 3,
  c(0, 0, 0, 0, 0, 0, 1),
  method = "ESM"
)
#>            [,1]      [,2]      [,3]
#>  [1,] 1.9393370 1.9393370 1.9393370
#>  [2,] 1.2992857 1.2992857 1.2992857
#>  [3,] 0.4990043 0.4990043 0.4990043
#>  [4,] 0.3541411 0.3541411 0.3541411
#>  [5,] 0.7991115 0.7991115 0.7991115
#>  [6,] 0.9840713 0.9840713 0.9840713
#>  [7,] 1.0269125 1.0269125 1.0269125
#>  [8,] 1.3968638 1.3968638 1.3968638
#>  [9,] 0.1479245 0.1479245 0.1479245
#> [10,] 0.6183754 0.6183754 0.6183754

rmo(
  10, 3,
  c(0.4, 0.4, 0.1, 0.4, 0.1, 0.1, 0.4),
  method = "AM"
)
#>            [,1]      [,2]      [,3]
#>  [1,] 0.6992389 0.6992389 0.6992389
#>  [2,] 0.4701861 4.2561204 2.1753259
#>  [3,] 0.1978220 0.6064042 1.4022846
#>  [4,] 0.9311871 2.0127620 2.0127620
#>  [5,] 0.3142490 0.9734590 0.2767656
#>  [6,] 0.2090908 1.1308541 0.2090908
#>  [7,] 0.1316876 0.1316876 0.1316876
#>  [8,] 0.1746965 0.2043908 0.2043908
#>  [9,] 0.4649985 0.1396833 0.4649985
#> [10,] 1.8027330 1.0595503 1.8122288
## independence
rmo(
  10, 3,
  c(1, 1, 0, 1, 0, 0, 0),
  method = "AM"
)
#>            [,1]      [,2]      [,3]
#>  [1,] 0.5522557 2.4661127 3.8320752
#>  [2,] 1.1795123 0.4692113 2.3680299
#>  [3,] 1.2869295 1.1903597 0.1599839
#>  [4,] 1.1120509 0.2577420 0.7225105
#>  [5,] 1.2910405 2.4066856 0.1555744
#>  [6,] 1.8112570 0.5151302 0.2643085
#>  [7,] 1.0771988 0.1299781 0.2328066
#>  [8,] 0.4621908 1.1950802 1.4737141
#>  [9,] 0.6466723 0.2833440 1.1818346
#> [10,] 1.0017076 0.3536406 0.1577901
## comonotone
rmo(
  10, 3,
  c(0, 0, 0, 0, 0, 0, 1),
  method = "AM"
)
#>             [,1]       [,2]       [,3]
#>  [1,] 1.09504846 1.09504846 1.09504846
#>  [2,] 0.09458256 0.09458256 0.09458256
#>  [3,] 1.76391382 1.76391382 1.76391382
#>  [4,] 0.47302109 0.47302109 0.47302109
#>  [5,] 1.08291000 1.08291000 1.08291000
#>  [6,] 0.88865631 0.88865631 0.88865631
#>  [7,] 0.40215032 0.40215032 0.40215032
#>  [8,] 0.93347620 0.93347620 0.93347620
#>  [9,] 0.19469557 0.19469557 0.19469557
#> [10,] 0.19361824 0.19361824 0.19361824