BookmarkSubscribeRSS Feed
abbaskashif
Calcite | Level 5
/*NORMINV of Random Binomial Probability of Default*/
%let N = 10;
%let M= 3;
proc iml;
call randseed(123);
x = j(&N,&M);
q=j(&N,&M);
p = {.100 .200 .500};
p_mat = repeat(p, &N);
stdev_mat=p_mat#(1-p_mat);
N_mat = repeat(&N, &N, &M);
call randgen(x, "Binomial", p_mat, N_mat);
x=x/&N;/*Random probability of default*/
q = quantile("Normal", x); /*Quantile of the probability
 from normal distribution (Distance to default)*/
mean=mean(x);
max=x[<>,];
min=x[><,];
print p,mean,max,min,x,q;
Quit;

I have generated random variables using Binnomial distribution and converted them into a matrix of probabilities of default (x=x/&N). Now I want to calculate distance to default by finding the quantile of these probabilities ( matrix q) assuming standard normal distribution. However, I am getting an error on the Quantile function (q) i.e. ERROR: (execution) Invalid argument to function. Please help and thanks in advance. 

2 REPLIES 2
Rick_SAS
SAS Super FREQ

The inverse CDF of 0 is not defined when elements of X are zero. The error is that you are trying to evaluate a function (QUANTILE) for values that are outside the domain of the function, which is (0, 1).

 

 

abbaskashif
Calcite | Level 5

Ture. I'll have to try to get around this, perhaps by replacing zeros with infinitesimally small probabilities.

sas-innovate-white.png

Missed SAS Innovate in Orlando?

Catch the best of SAS Innovate 2025 — anytime, anywhere. Stream powerful keynotes, real-world demos, and game-changing insights from the world’s leading data and AI minds.

 

Register now

From The DO Loop
Want more? Visit our blog for more articles like these.
Discussion stats
  • 2 replies
  • 1356 views
  • 0 likes
  • 2 in conversation