NAG Library Function Document nag_rand_copula_normal (g05rdc)

Similar documents
NAG Library Function Document nag_rand_copula_clayton (g05rhc)

NAG Library Function Document nag_rand_bivariate_copula_frank (g05rfc)

NAG Library Function Document nag_rngs_copula_students_t (g05rbc)

NAG Library Function Document nag_rand_2_way_table (g05pzc)

NAG Library Function Document nag_rgsn_matrix_multi_normal (g05lyc)

NAG Library Function Document nag_5d_shep_eval (e01tnc)

NAG Library Function Document nag_nd_shep_eval (e01znc)

NAG Library Function Document nag_rand_arma (g05phc)

NAG Library Function Document nag_real_gen_matrix_exp (f01ecc)

NAG Library Function Document nag_4d_shep_eval (e01tlc)

NAG Library Function Document nag_dgetrf (f07adc)

NAG C Library Function Document nag_binary_factor_service (g11sbc)

NAG Library Function Document nag_dgelsd (f08kcc)

NAG Library Function Document nag_zgelss (f08knc)

NAG Library Function Document nag_quasi_init_scrambled (g05ync)

NAG Library Function Document nag_zgelsy (f08bnc)

NAG Library Function Document nag_robust_m_corr_user_fn_no_derr (g02hmc)

NAG Library Function Document nag_dger (f16pmc)

NAG Library Function Document nag_robust_m_corr_user_fn (g02hlc)

NAG Library Function Document nag_dstev (f08jac)

NAG Library Function Document nag_dspr (f16pqc)

NAG Library Function Document nag_zhfrk (f16zqc)

NAG Library Function Document nag_zhpev (f08gnc)

NAG Library Function Document nag_dtpttr (f01vcc)

NAG Library Function Document nag_dtpsv (f16plc)

NAG Library Function Document nag_wav_2d_coeff_ins (c09ezc)

NAG Library Function Document nag_bsm_price (s30aac)

NAG Library Function Document nag_zaxpby (f16gcc)

NAG Library Function Document nag_dtrttf (f01vec)

NAG C Library Function Document nag_rngs_varma_time_series (g05pcc)

NAG Library Function Document nag_zsymv (f16tac)

NAG Library Function Document nag_dgttrs (f07cec)

NAG Library Function Document nag_dspsv (f07pac)

NAG C Library Function Document nag_dgemv (f16pac)

NAG Library Function Document nag_rngs_varma_time_series (g05pcc)

NAG Library Function Document nag_dtfttp (f01vlc)

NAG Library Function Document nag_dgb_norm (f16rbc)

NAG C Library Function Document nag_zgemv (f16sac)

NAG Library Function Document nag_mv_promax (g03bdc)

NAG Library Function Document nag_matop_complex_gen_matrix_fun_num (f01flc)

NAG Library Function Document nag_ztrttf (f01vfc)

NAG Library Function Document nag_dgbmv (f16pbc)

NAG Library Function Document nag_ztfttp (f01vmc)

NAG Library Function Document nag_zheevx (f08fpc)

NAG Library Function Document nag_dsbev (f08hac)

NAG Library Function Document nag_zhpr2 (f16ssc)

NAG Library Function Document nag_ztzrzf (f08bvc)

NAG Library Function Document nag_matop_real_gen_matrix_fun_num (f01elc)

NAG Library Function Document nag_durbin_watson_stat (g02fcc)

NAG Library Function Document nag_dtr_load (f16qgc)

NAG Library Function Document nag_matop_complex_gen_matrix_cond_sqrt (f01kdc)

NAG Library Function Document nag_dtrmv (f16pfc)

NAG Library Function Document. nag_matop_real_gen_matrix_cond_num

NAG Library Function Document nag_all_regsn (g02eac)

NAG Library Function Document. nag_matop_complex_gen_matrix_cond_num

NAG Library Function Document nag_dsygv (f08sac)

NAG C Library Function Document nag_rank_regsn (g08rac)

NAG Library Function Document nag_chain_sort (m01cuc)

NAG C Library Function Document nag_zger (f16smc)

NAG Library Function Document nag_dgglse (f08zac)

NAG Library Function Document nag_zpbequ (f07htc)

NAG Library Function Document nag_summary_stats_onevar_combine (g01auc)

NAG Library Function Document nag_sum_convcorr_real (c06fkc)

NAG C Library Function Document nag_zhemv (f16scc)

NAG C Library Function Document nag_surviv_risk_sets (g12zac)

NAG Library Function Document nag_sum_fft_real_3d (c06pyc)

NAG Library Function Document nag_2_sample_ks_test (g08cdc)

NAG Library Function Document nag_superlu_lu_factorize (f11mec)

NAG C Library Function Document nag_linf_fit (e02gcc)

NAG Library Function Document nag_friedman_test (g08aec)

NAG Library Function Document nag_dgetri (f07ajc)

NAG Library Function Document nag_sum_sqs_update (g02btc)

NAG Library Function Document nag_ztgsen (f08yuc)

NAG Library Function Document nag_tsa_dickey_fuller_unit (g13awc)

NAG Library Function Document nag_dsymv (f16pcc)

NAG Library Function Document nag_zero_nonlin_eqns_rcomm (c05qdc)

NAG Library Function Document nag_wfilt (c09aac)

NAG C Library Function Document nag_dgbmv (f16pbc)

NAG Library Function Document nag_zhbevx (f08hpc)

NAG Library Function Document nag_2d_panel_sort (e02zac)

NAG Library Function Document nag_full_step_regsn (g02efc)

NAG C Library Function Document nag_zhpmv (f16sec)

NAG Library Function Document nag_lars_param (g02mcc)

NAG Library Function Document nag_dwt (c09cac)

NAG C Library Function Document nag_dgbtrs (f07bec)

NAG Library Function Document nag_mldwt_2d (c09ecc)

NAG Library Function Document nag_dtrsyl (f08qhc)

NAG Library Function Document nag_mv_prin_comp (g03aac)

NAG C Library Function Document nag_zsytri (f07nwc)

NAG Library Function Document nag_real_sym_posdef_tridiag_lin_solve (f04bgc)

NAG Library Function Document nag_outlier_peirce (g07gac)

NAG Library Function Document nag_2_sample_ks_test (g08cdc)

NAG Library Function Document nag_prob_durbin_watson (g01epc)

NAG C Library Function Document nag_tsa_multi_auto_corr_part (g13dbc)

NAG Library Function Document nag_dsf_norm (f16rkc)

NAG Library Function Document nag_asian_geom_price (s30sac)

NAG C Library Function Document nag_zhbmv (f16sdc)

NAG Library Function Document nag_binomial_ci (g07aac)

NAG C Library Function Document nag_dsbmv (f16pdc)

NAG Library Function Document nag_tsa_cp_binary (g13ndc)

Transcription:

NAG Library Function Document nag_rand_copula_normal () 1 Purpose nag_rand_copula_normal () sets up a reference vector and generates an array of pseudorandom numbers from a Normal (Gaussian) copula with covariance matrix C. 2 Specification #include <nag.h> #include <nagg05.h> void nag_rand_copula_normal (Nag_OrderType order, Nag_ModeRNG mode, Integer n, Integer m, const double c[], Integer pdc, double r[], Integer lr, Integer state[], double x[], Integer pdx, NagError *fail) 3 Description The Gaussian copula, G, isdefinedby Gu ð 1 ;u 2 ;...;u m ; CÞ ¼ C 1 ð C 11 u 1 Þ; 1 ð C 22 u 2 Þ;...; 1 where m is the number of dimensions, C is the multivariate Normal density function with mean zero and covariance matrix C and 1 C ii is the inverse of the univariate Normal density function with mean zero and variance C ii. nag_rand_matrix_multi_normal (g05rzc) is used to generate a vector from a multivariate Normal distribution and nag_prob_normal (g01eac) is used to convert each element of that vector into a uniformly distributed value between zero and one. One of the initialization functions nag_rand_init_repeatable (g05kfc) (for a repeatable sequence if computed sequentially) or nag_rand_init_nonrepeatable (g05kgc) (for a non-repeatable sequence) must be called prior to the first call to nag_rand_copula_normal (). 4 References Nelsen R B (1998) An Introduction to Copulas. Lecture Notes in Statistics 139 Springer Sklar A (1973) Random variables: joint distribution functions and copulas Kybernetika 9 499 460 5 Arguments 1: order Nag_OrderType Input On entry: theorder argument specifies the two-dimensional storage scheme being used, i.e., rowmajor ordering or column-major ordering. C language defined storage is specified by order ¼ Nag RowMajor. See Section 3.2.1.3 in the Essential Introduction for a more detailed explanation of the use of this argument. Constraint: order ¼ Nag RowMajor or Nag ColMajor. 2: mode Nag_ModeRNG Input On entry: a code for selecting the operation to be performed by the function. mode ¼ Nag InitializeReference Set up reference vector only. C mm ð u m Þ.1

NAG Library Manual mode ¼ Nag GenerateFromReference Generate variates using reference vector set up in a prior call to nag_rand_copula_normal (). mode ¼ Nag InitializeAndGenerate Set up reference vector and generate variates. Constraint: mode ¼ Nag InitializeReference, Nag GenerateFromReference or Nag InitializeAndGenerate. 3: n Integer Input On entry: n, the number of random variates required. Constraint: n 0. 4: m Integer Input On entry: m, the number of dimensions of the distribution. Constraint: m > 0. 5: c½dimš const double Input Note: the dimension, dim, ofthearraycmust be at least pdc m. The ði; jþth element of the matrix C is stored in c½ðj 1Þpdc þ i 1Š when order ¼ Nag ColMajor; c½ði 1Þpdc þ j 1Š when order ¼ Nag RowMajor. On entry: the covariance matrix of the distribution. Only the upper triangle need be set. Constraint: C must be positive semidefinite to machine precision. 6: pdc Integer Input On entry: the stride separating row or column elements (depending on the value of order) inthe array c. Constraint: pdc m. 7: r½lrš double Communication Array On entry: if mode ¼ Nag GenerateFromReference, the reference vector as set up by nag_rand_copula_normal () in a previous call with mode ¼ Nag InitializeReference or Nag InitializeAndGenerate. On exit: if mode ¼ Nag InitializeReference or Nag InitializeAndGenerate, the reference vector that can be used in subsequent calls to nag_rand_copula_normal () with mode ¼ Nag GenerateFromReference. 8: lr Integer Input On entry: the dimension of the array r. Ifmode ¼ Nag GenerateFromReference, it must be the same as the value of lr specified in the prior call to nag_rand_copula_normal () with mode ¼ Nag InitializeReference or Nag InitializeAndGenerate. Constraint: lr m ðm þ 1Þþ1. 9: state½dimš Integer Communication Array Note: the dimension, dim, of this array is dictated by the requirements of associated functions that must have been previously called. This array MUST be the same array passed as argument state in the previous call to nag_rand_init_repeatable (g05kfc) or nag_rand_init_nonrepeatable (g05kgc). On entry: contains information on the selected base generator and its current state..2

On exit: contains updated information on the state of the generator. 10: x½dimš double Output Note: the dimension, dim, ofthearrayxmust be at least maxð1; pdx mþ when order ¼ Nag ColMajor; maxð1; n pdxþ when order ¼ Nag RowMajor. Where Xði; jþ appears in this document, it refers to the array element x½ðj 1Þpdx þ i 1Š when order ¼ Nag ColMajor; x½ði 1Þpdx þ j 1Š when order ¼ Nag RowMajor. On exit: the array of values from a multivariate Gaussian copula, with Xði; jþ holding the jth dimension for the ith variate. 11: pdx Integer Input On entry: the stride used in the array x. Constraints: if order ¼ Nag ColMajor, pdx n; if order ¼ Nag RowMajor, pdx m. 12: fail NagError* Input/Output The NAG error argument (see Section 3.6 in the Essential Introduction). 6 Error Indicators and Warnings NE_ALLOC_FAIL Dynamic memory allocation failed. See Section 3.2.1.2 in the Essential Introduction for further information. NE_BAD_PARAM On entry, argument hvaluei had an illegal value. NE_INT On entry, lr is not large enough, lr ¼ hvaluei: minimum length required ¼ hvaluei. On entry, m ¼ hvaluei. Constraint: m > 0. On entry, n ¼ hvaluei. Constraint: n 0. NE_INT_2 On entry, pdc ¼ hvaluei and m ¼ hvaluei. Constraint: pdc m. On entry, pdx ¼ hvaluei and m ¼ hvaluei. Constraint: pdx m. On entry, pdx ¼ hvaluei and n ¼ hvaluei. Constraint: pdx n. NE_INTERNAL_ERROR An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact NAG for assistance..3

NAG Library Manual An unexpected error has been triggered by this function. Please contact NAG. See Section 3.6.6 in the Essential Introduction for further information. NE_INVALID_STATE On entry, state vector has been corrupted or not initialized. NE_NO_LICENCE Your licence key may have expired or may not have been installed correctly. See Section 3.6.5 in the Essential Introduction for further information. NE_POS_DEF On entry, the covariance matrix C is not positive semidefinite to machine precision. NE_PREV_CALL m is not the same as when r was set up in a previous call. Previous value of m ¼ hvaluei and m ¼ hvaluei. 7 Accuracy See Section 7 in nag_rand_matrix_multi_normal (g05rzc) for an indication of the accuracy of the underlying multivariate Normal distribution. 8 Parallelism and Performance nag_rand_copula_normal () is threaded by NAG for parallel execution in multithreaded implementations of the NAG Library. nag_rand_copula_normal () makes calls to BLAS and/or LAPACK routines, which may be threaded within the vendor library used by this implementation. Consult the documentation for the vendor library for further information. Please consult the X06 Chapter Introduction for information on how to control and interrogate the OpenMP environment used within this function. Please also consult the Users Note for your implementation for any additional implementation-specific information. 9 Further Comments The time taken by nag_rand_copula_normal () is of order nm 3. It is recommended that the diagonal elements of C should not differ too widely in order of magnitude. This may be achieved by scaling the variables if necessary. The actual matrix decomposed is C þ E ¼ LL T,whereE is a diagonal matrix with small positive diagonal elements. This ensures that, even when C is singular, or nearly singular, the Cholesky factor L corresponds to a positive definite covariance matrix that agrees with C within machine precision. 10 Example This example prints ten pseudorandom observations from a Normal copula with covariance matrix 2 3 1:69 0:39 1:86 0:07 6 0:39 98:01 7:07 0:71 7 4 5; 1:86 7:07 11:56 0:03 0:07 0:71 0:03 0:01 generated by nag_rand_copula_normal (). All ten observations are generated by a single call to nag_rand_copula_normal () with mode ¼ Nag InitializeAndGenerate. The random number generator is initialized by nag_rand_init_repeatable (g05kfc)..4

10.1 Program Text /* nag_rand_copula_normal () Example Program. * * Copyright 2014 Numerical Algorithms Group. * * Mark 9, 2009. */ /* Pre-processor includes */ #include <stdio.h> #include <math.h> #include <nag.h> #include <nag_stdlib.h> #include <nagg05.h> #define X(I, J) x[(order == Nag_ColMajor)?(J*pdx + I):(I*pdx + J)] #define C(I, J) c[(order == Nag_ColMajor)?(J*pdc + I):(I*pdc + J)] int main(void) /* Integer scalar and array declarations */ Integer exit_status = 0; Integer i, j, lstate, lr, x_size; Integer *state = 0; Integer pdx; /* NAG structures */ NagError fail; Nag_ModeRNG mode; /* Double scalar and array declarations */ double *r = 0, *x = 0; /* Use column major order */ Nag_OrderType order = Nag_RowMajor; /* Set the number of variables and variates */ Integer m = 4; Integer n = 10; /* Input the covariance matrix */ double c[] = 1.69e0, 0.39e0, -1.86e0, 0.07e0, 0.39e0, 98.01e0, -7.07e0, -0.71e0, -1.86e0, -7.07e0, 11.56e0, 0.03e0, 0.07e0, -0.71e0, 0.03e0, 0.01e0 ; Integer pdc = 4; /* Choose the base generator */ Nag_BaseRNG genid = Nag_Basic; Integer subid = 0; /* Set the seed */ Integer seed[] = 1762543 ; Integer lseed = 1; /* Initialise the error structure */ INIT_FAIL(fail); printf( "nag_rand_copula_normal () Example Program Results\n\n"); /* Get the length of the state array */ lstate = -1; nag_rand_init_repeatable(genid, subid, seed, lseed, state, &lstate, &fail); if (fail.code!= NE_NOERROR) printf("error from nag_rand_init_repeatable (g05kfc).\n%s\n", fail.message); exit_status = 1;.5

NAG Library Manual pdx = (order == Nag_ColMajor)?n:m; x_size = (order == Nag_ColMajor)?pdx * m:pdx * n; /* Calculate the size of the reference vector */ lr = m*m+m+1; /* Allocate arrays */ if (!(r = NAG_ALLOC(lr, double))!(x = NAG_ALLOC(x_size, double))!(state = NAG_ALLOC(lstate, Integer))) printf("allocation failure\n"); exit_status = -1; /* Initialise the generator to a repeatable sequence */ nag_rand_init_repeatable(genid, subid, seed, lseed, state, &lstate, &fail); if (fail.code!= NE_NOERROR) printf("error from nag_rand_init_repeatable (g05kfc).\n%s\n", fail.message); exit_status = 1; /* Set up reference vector and generate variates */ mode = Nag_InitializeAndGenerate; nag_rand_copula_normal(order, mode, n, m, c, pdc, r, lr, state, x, pdx, &fail); if (fail.code!= NE_NOERROR) printf("error from nag_rand_copula_normal ().\n%s\n", fail.message); exit_status = 1; /* Display the results */ for (i = 0; i < n; i++) printf(" "); for (j = 0; j < m; j++) printf("%9.4f%s", X(i, j), (j+1)%10?" ":"\n"); if (m%10) printf("\n"); END: NAG_FREE(r); NAG_FREE(x); NAG_FREE(state); return exit_status; 10.2 Program Data None. 10.3 Program Results nag_rand_copula_normal () Example Program Results 0.6364 0.0517 0.4137 0.8817 0.1065 0.2461 0.7993 0.3806 0.7460 0.6313 0.2708 0.5421 0.7983 0.0564 0.6868 0.9234.6

0.1046 0.5790 0.8533 0.2208 0.4925 0.2784 0.3513 0.5158 0.3843 0.2349 0.9472 0.7801 0.7871 0.9941 0.9403 0.2044 0.4982 0.9015 0.7176 0.2914 0.6717 0.5359 0.5961 0.4487.7 (last)