Rosenblatt transforms
The Rosenblatt transform maps observations from a copula distribution to independent uniforms. Its inverse maps independent uniforms into observations from the target copula.
For a vine copula
The inverse transform recursively applies inverse conditional distributions.
API
julia
rosenblatt(vine, U)
inverse_rosenblatt(vine, Z)
rosenblatt!(out, vine, U)
inverse_rosenblatt!(out, vine, Z)The non-mutating methods return matrices with the same p × n shape as the input.
julia
using VineCopulas
using Random
vine = DVineCopula(
[1, 2, 3],
[[GaussianCopula([1.0 0.5; 0.5 1.0]), ClaytonCopula(2, 2.0)], [FrankCopula(2, 3.0)]],
)
U = rand(MersenneTwister(11), vine, 100)
Z = rosenblatt(vine, U)
Uhat = inverse_rosenblatt(vine, Z)
maximum(abs.(Uhat .- U))1.9317880628477724e-14Uses
Rosenblatt transforms are useful for simulation, model checking, goodness-of-fit diagnostics, and converting dependence models into independent uniforms.