Statistical programming, matrix languages, and more

Quantile Function Error on a Matrix of Probabilities in Proc IML

Reply
Occasional Contributor
Posts: 13

Quantile Function Error on a Matrix of Probabilities in Proc IML

[ Edited ]
/*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. 

SAS Super FREQ
Posts: 3,232

Re: Quantile Function Error on a Matrix of Probabilities in Proc IML

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).

 

 

Occasional Contributor
Posts: 13

Re: Quantile Function Error on a Matrix of Probabilities in Proc IML

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

Post a Question
Discussion Stats
  • 2 replies
  • 138 views
  • 0 likes
  • 2 in conversation