필터 지우기
필터 지우기

How to simulate multivariate non-archimedean copulas?

조회 수: 3 (최근 30일)
ANA PEREZ ESPARTERO
ANA PEREZ ESPARTERO 2022년 3월 2일
댓글: Jeff Miller 2024년 1월 16일
Is it possible to simulate in Matlab multivariate (trhee or more dimensions) copulas beyond Gaussian, Student-t or the archimedeans (Gumbel, Frank, and Clayton? I would like to simulate multivariate Farlie-Gumbel-Morgensten (FGM) or Cuadras-Augé family. Any help is welcome.

답변 (1개)

Aditya
Aditya 2024년 1월 16일
Yes, it is possible to simulate multivariate copulas beyond the Gaussian, Student-t, or Archimedean families in MATLAB, including the Farlie-Gumbel-Morgenstern (FGM) and Cuadras-Augé families. However, MATLAB's built-in functionality for copulas is limited to the more common families, so for less common copulas like FGM or Cuadras-Augé, you would typically need to implement the simulation yourself or look for third-party implementations.
Here's a simple MATLAB function to simulate a bivariate FGM copula:
function [X, Y] = simulateFGMCopula(n, theta)
% n is the number of samples to generate
% theta is the dependence parameter of the FGM copula
% Step 1: Generate independent uniform random numbers
U = rand(n, 1);
V = rand(n, 1);
% Step 2: Apply the FGM copula formula
% For the bivariate case, we use the CDF directly to calculate the joint distribution.
% This is specific to the FGM copula and would be different for other copula types.
% Note: The FGM copula is only valid for -1 <= theta <= 1.
C = U .* V + theta .* U .* V .* (1 - U) .* (1 - V);
% Step 3: Apply the inverse of the marginals (if non-uniform marginals are desired)
% For example, if X and Y are normally distributed with mean 0 and standard deviation 1:
X = norminv(U, 0, 1);
Y = norminv(V, 0, 1);
% If you want to keep U and V as uniform marginals, you can simply return them:
% X = U;
% Y = V;
end
For the Cuadras-Augé family and other more complex or less common copulas, you would need to derive the appropriate simulation procedure based on the copula's definition and properties. This might involve more sophisticated sampling methods, such as Markov Chain Monte Carlo (MCMC) or other numerical techniques.
If you're looking for a more advanced or specific implementation, you may need to search for academic papers, specialized toolboxes, or contributions from the MATLAB community that provide code for these less common copulas.
  댓글 수: 1
Jeff Miller
Jeff Miller 2024년 1월 16일
I am puzzled that C is computed but not used or returned. As written, it looks like the returned X,Y are independent univariate normals, regardless of theta. What am I missing?

댓글을 달려면 로그인하십시오.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by