BookmarkSubscribeRSS Feed
SASorR
Calcite | Level 5

Hello,

I'm simulating a variable say X that follows a normal standard distribution with the rannor() function.

With n=5000, the mean of X is far from 0 and out of the prediction interval.

With 100 000 000 generated variables, the mean is near 0 but we cannot simulate such a number of variables for the rest of our work.

With R, the same simulation produces a variable with a mean less than 1.10-4 in absolute value and this with only 500 generated variables.

The same problem occurs with the normal() function.

I use SAS 9.2 with Windows 7 X64.

Do you encounter the same problem ? Is it due to SAS ?

Here is my code :

data test;

    do i=1 to 10000;

    Y1=rannor(-1);

    Y2=normal(-1);

    output;

    end;

run;

proc means data=test;

var Y1 Y2;

run;

4 REPLIES 4
Reeza
Super User

Not particularly helpful, but you can see this thread with some discussion around random numbers in SAS though they're discussing the uniform distribution instead.

http://listserv.uga.edu/cgi-bin/wa?A2=ind1204c&L=sas-l&D=0&P=19477

You can also try the rand('normal', 0, 1) function.

PGStats
Opal | Level 21

I get no sign of non-normality with this :

data test;
    do i=1 to 10000;
    Y1=rannor(-1);
    Y2=normal(-1);
    Y3=rand("NORMAL");
    output;
    end;
run;

proc univariate data=test normal;
var Y1 Y2 Y3;
run;

I'm using SAS 9.3 on Windows 7, 32 bits.

PG
data_null__
Jade | Level 19

If I recall correctly both of these random functions will use the same random number stream.  Use the CALL versions to have a different stream for each function.

This may be causing your problem.

Rick_SAS
SAS Super FREQ

A few comments:

1) RANNOR and NORMAL are the same function. NORMAL is just an alias to RANNOR.

2) A 95% confidence interval means that in 95% of random samples, the sample mean will be within the computed CI.  In terns of "seeds," this means that 95% of seeds will give a sample mean within the CI. So any single sample doesn't tell us anything. You might be "unlucky" and choose that one-in-twenty seed!

3) I am running on Windows 7 and X64 and I do not see the situation you report. Use the CLM option on the PROC MEANS statement to get PROC MEANS to display the confidence limits:

proc means data=test N mean clm;

var Y1 Y2;

run;

sas-innovate-2024.png

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.

 

Register now!

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.

Discussion stats
  • 4 replies
  • 1481 views
  • 0 likes
  • 5 in conversation