You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Rosenblatt transformation considers a random vector ``X`` to be distributed as a certain multivariate cumulative distribution function ``F_{X}(x)``, and maps it back to a uniform distribution on the unit hypercube.
12
+
13
+
More formally, consider the map ``R_X(x)`` defined as follows:
In certain circonstances, in paritcular for Archimedean copulas, this map simplifies to tractable expressions. it has a few nice properties:
21
+
22
+
*``R_X(X) \sim \texttt{Uniform(Unit Hypercube)}``
23
+
*``R_X`` is a bijection.
24
+
25
+
These two properties are leveraged in some cases to construct the inverse rosenblatt transformations, that maps random noise to proper samples from the copula. In some cases, this is the best sampling algorithm available.
26
+
27
+
## Implementation
28
+
29
+
As soon as the random vector ``X`` is represented by an object `X` that subtypes `SklarDist` or `Copula`, you have access to the `rosenblatt(X, x)` and `inverse_rosenblatt(X,x)` operators, which both have a straghtforward interpretation from their names.
30
+
31
+
```@docs
32
+
rosenblatt
33
+
inverse_rosenblatt
34
+
```
35
+
36
+
!!! note "Not all copulas available !"
37
+
Some copulas such has archimedeans have known expressions for their rosenblatt and/or inverse rosenblatt transforms, and therefore benefit from this interface and our implementation. On the other hand, some copulas have no known closed form expressions for conditional cdfs, and therefore their rosenblatt transformation is hard to implement.
38
+
39
+
If you feel like you miss methods for certain particular copulas while the theory exists and it should be possible, do not hesitate to open an issue !
For some Archimedean [`Generator`](@ref) `G::Generator` and some dimenson `d`, this class models the archimedean copula which has this generator. The constructor checks for validity by ensuring that `max_monotony(G) ≥ d`. The ``d``-variate archimedean copula with generator ``\\phi`` writes:
11
+
For some Archimedean [`Generator`](@ref) `G::Generator` and some dimenson `d`, this class models the archimedean copula which has this generator. The constructor checks for validity by ensuring that `max_monotony(G) ≥ d`. The ``d``-variate archimedean copula with generator ``\\phi`` writes:
The default sampling method is the Radial-simplex decomposition using the Williamson transformation of ``\\phi``.
17
+
The default sampling method is the Radial-simplex decomposition using the Williamson transformation of ``\\phi``.
18
18
19
-
There exists several known parametric generators that are implement in the package. For every `NamedGenerator <: Generator` implemented in the package, we provide a type alias ``NamedCopula{d,...} = ArchimedeanCopula{d,NamedGenerator{...}}` to be able to manipulate the classic archimedean copulas without too much hassle for known and usefull special cases.
19
+
There exists several known parametric generators that are implement in the package. For every `NamedGenerator <: Generator` implemented in the package, we provide a type alias ``NamedCopula{d,...} = ArchimedeanCopula{d,NamedGenerator{...}}` to be able to manipulate the classic archimedean copulas without too much hassle for known and usefull special cases.
20
20
21
-
A generic archimdean copula can be constructed as follows:
21
+
A generic archimdean copula can be constructed as follows:
22
22
23
23
```julia
24
24
struct MyGenerator <: Generator end
25
25
ϕ(G::MyGenerator,t) = exp(-t) # your archimedean generator, can be any d-monotonous function.
26
-
max_monotony(G::MyGenerator) = Inf # could depend on generators parameters.
26
+
max_monotony(G::MyGenerator) = Inf # could depend on generators parameters.
0 commit comments