BookmarkSubscribeRSS Feed
trash
Fluorite | Level 6

I'm given these two equations:

                       PDF: f(x) =1/(π(1+x^2))    -∞ ≤ x ≤ ∞                   CDF: F(x) =(1/2) + arctan(x)/π  -∞ ≤ x ≤ ∞
and I am asked to generate 10,000 random numbers using the Inversion Method for Cauchy Distribution.
Here is the code I have started:
PROC IML; 
      n=10000;
      myran = j(n,1, 0); 
      uniform = uniform(myran);
      exponential = (tan(uniform*pi-(pi/2)));
CREATE uniform2 FROM uniform[colname={'x'}];
APPEND FROM uniform;
CREATE exp2 FROM exponential[colname={'y'}];
APPEND FROM exponential;
QUIT;
 
but my log says: "ERROR: (execution) Matrix has not been set to a value." after the exponential statement. 
how do I correct for this? I'm not sure how to account for the -∞ ≤ x ≤ ∞ part. 
subsequently, I am asked to create a subset of the 10000 Cauchy Dist. of random numbers where -10<x<10
 
3 REPLIES 3
WarrenKuhfeld
Ammonite | Level 13

Set the scalar pi to a value after you invoke IML.

pi = constant('pi');
Ksharp
Super User

IML has build-in function, you can use it .

 

proc iml;
x=j(10000,1,.);
call randseed(12345678);
call randgen(x, 'CAUCHY'); 

create want var{x};
append;
close;
quit;
Rick_SAS
SAS Super FREQ

You asked, "how do I account for the [-infinity, infinity] part?" Here is a hint: What is the range of the expression

uniform*pi - pi/2 ?

Ask yourself how the TAN function behaves on this interval.

 

 

For more about the inverse CDF method of simulating data, see "The inverse CDF method for simulating from a distribution."

SAS Innovate 2025: Save the Date

 SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!

Save the date!

Multiple Linear Regression in SAS

Learn how to run multiple linear regression models with and without interactions, presented by SAS user Alex Chaplin.

Find more tutorials on the SAS Users YouTube channel.

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