(a) [10] Write a program to draw 100,000 observations from the following bivariate distribution which is uniform over a unit circle. f(x, y) = 1/ℼ where x2 + y2 < 1
(b) [10] Draw the bivariate histogram for x and y. (c) [10] Draw the (marginal) histogram for x .
I've tried transforming x and y so that they vary between (-1,1) and then using the Do while loop so that x2 + y2< 1. Still new to SAS so any would be great.
This is my code so far:
data test; Do i=1 to 10000; Do While x^2 + b^2 <1; x=2*ranuni(111)-1; y=2*ranuni(111)-1; z= x^2 + b^2 <1; end; output; end; run; ods graphics on; proc bivariatete data=test; var x; var y; var z; histogram z; run; ods graphics off;
This is invalid:
x^2
In SAS, the correct operator is **
x**2
For the histogram, use PROC UNIVARIATE or PROC SGPLOT.
PS. You have a lot of other errors in your code. I would suggest doing one step at a time, getting that working and then moving forward. Look at Rick Wicklin blog or book for informaiton on how to simulate data in SAS. If you're a student, since this is clearly homework, your university library may have a digital version available for you to peruse.
It is about data simulation, better post it at IML forum.
what doest f(x,y) looks like,what is its form ?
In addition to the excellent responses from @Reeza and @Ksharp, use PROC KDE to draw the bivariate histogram. The BIVAR statement and PLOTS=HISTOGRAM are what you want to use.
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.