Skip to content

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 in dimension , the transform is a recursive sequence of conditional distribution evaluations:

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

Uses

Rosenblatt transforms are useful for simulation, model checking, goodness-of-fit diagnostics, and converting dependence models into independent uniforms.