I define a bivariate distribution:
SN[μ1_, μ2_, σ1_, σ2_, a1_, a2_, ρ_] := SN[μ1, μ2, σ1, σ2, a1, a2, ρ] = CopulaDistribution[{"Binormal", ρ}, {SkewNormalDistribution[μ1, σ1, a1], SkewNormalDistribution[μ2, σ2, a2]}] and then a mixture distribution:
dist = MixtureDistribution[{p, 1 - p}, {SN[μ1a, μ2a, σ1a, σ2a, a1a, a2a, ρa], SN[μ1b, μ2b, σ1b, σ2b, a1b, a2b, ρb]}] This works well in generating some data:
adat = RandomVariate[dist /. {μ1a -> -0.233, μ2a -> 0.74, σ1a -> 0.541, σ2a -> 0.259, a1a -> 0.7, a2a -> 0.5, ρa -> 0.049, μ1b -> 1.488, μ2b -> 0.396, σ1b -> 0.396, σ2b -> 0.471, a1b -> -0.5, a2b -> -0.7, ρb -> 0.128, p -> 0.28}, 25] where the parameters are the initial parameters for what follows:
param = FindDistributionParameters[adat, dist, {{μ1a, -0.233}, {μ2a, 0.74}, {σ1a, 0.541}, {σ2a, 0.259}, {a1a, 0.7}, {a2a, 0.5}, {ρa, 0.049}, {μ1b, 1.488}, {μ2b, 0.396}, {σ1b, 0.396}, {σ2b, 0.471}, {a1b, -0.5}, {a2b, -0.7}, {ρb, 0.128}, {p, 0.28}}, ParameterEstimator -> {"MaximumLikelihood", Method -> "NMaximize"}] // AbsoluteTiming I generated only 25 realisations to make a fast test. The test outcome is that it does not work; that is, the param part just keeps running for hours without any messages and does not give any result.
The data I want to apply it to consists of ~2000 points.
A similar code but with a mixture of multinormal distributions works like a charm.
What is wrong with my approach? Is it something with the copula, or some simple syntax error I cannot see?