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
.
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