Scénario de test & Cas d'usage
Simulation d'une copule à 5 dimensions avec 1 million de lignes et 5 tables de pertes marginales distinctes.
| 1 | |
| 2 | DATA work.copule_banque; |
| 3 | call streaminit(777); |
| 4 | array u[5]; |
| 5 | DO i=1 to 1000000; |
| 6 | DO j=1 to 5; |
| 7 | u[j]=rand('Uniform'); |
| 8 | END; |
| 9 | OUTPUT; |
| 10 | END; |
| 11 | |
| 12 | RUN; |
| 13 | %macro gen_marge(nom, loi, p1, p2); |
| 14 | |
| 15 | DATA work.&nom; |
| 16 | call streaminit(1); |
| 17 | DO i=1 to 2000; |
| 18 | perte=rand("&loi", &p1, &p2); |
| 19 | OUTPUT; |
| 20 | END; |
| 21 | |
| 22 | RUN; |
| 23 | %mend; |
| 24 | %gen_marge(m_fraude, Weibull, 1.5, 5000); |
| 25 | %gen_marge(m_it, Gamma, 3, 10000); |
| 26 | %gen_marge(m_juridique, Lognormal, 9, 2); |
| 27 | %gen_marge(m_rh, Exponential, 2000, 0); |
| 28 | %gen_marge(m_actifs, Gamma, 1, 10000); |
| 29 | |
| 30 | PROC CAS; |
| 31 | upload path="work.copule_banque" casout={name="copule_1m", replace=true}; |
| 32 | upload path="work.m_fraude" casout={name="m_fraude", replace=true}; |
| 33 | upload path="work.m_it" casout={name="m_it", replace=true}; |
| 34 | upload path="work.m_juridique" casout={name="m_juridique", replace=true}; |
| 35 | upload path="work.m_rh" casout={name="m_rh", replace=true}; |
| 36 | upload path="work.m_actifs" casout={name="m_actifs", replace=true}; |
| 37 | |
| 38 | RUN; |
| 39 |
| 1 | |
| 2 | PROC CAS; |
| 3 | ecm.ecm / copulaSample={name="copule_1m"} analysisVariables={"u1", "u2", "u3", "u4", "u5"} marginals={{TABLE={name="m_fraude"}, sampleVarName="perte", idVarValue="u1"}, {TABLE={name="m_it"}, sampleVarName="perte", idVarValue="u2"}, {TABLE={name="m_juridique"}, sampleVarName="perte", idVarValue="u3"}, {TABLE={name="m_rh"}, sampleVarName="perte", idVarValue="u4"}, {TABLE={name="m_actifs"}, sampleVarName="perte", idVarValue="u5"}} seed=12345 bodySampleFrac=0.5 shuffleData=true OUTPUT={outSample={name="pertes_banque_1m", compress=true, replace=true}}; |
| 4 | |
| 5 | RUN; |
| 6 |
L'action doit traiter le million de lignes sans erreur mémoire, produire une table compressée 'pertes_banque_1m', et les résultats doivent être identiques à chaque exécution grâce au paramètre seed=12345.