Edit

SAS: PROC SG PLOT (Normal Distribution)

  I will stop by somewhere   This is the sample program for drawing normal distribution (s) based on 'PROC SGPLOT.'  Since I will use this program for the future's article, I want to check this sample program.  If you want to draw probability distribution function (PDF), you can use 'PDF function', etc...  But PDF is difficult to create multiple graphs with same maximum of Y-axis, so I did different approach.  Although it is not smooth line on top, it should be smooth if we increase the sample for these graphs.



PROGRAM 
--------------------------------------
DATA D1 ;
 CALL STREAMINIT(12345) ; *** DEFINE A SEED. ***;

 DO N=1 TO 5000000 ;
   X1=RAND('NORMAL')   ;
   Y10=ROUND(-10+ 3.0*x1,.1) ;*** Y10∼N(-10, 3) ***;
     
   Y21=ROUND(-13+ 1.0*x1,.1) ;*** Y21∼N(-13, 1.0) ***;
   Y22=ROUND(-12+ 1.5*x1,.1) ;*** Y22∼N(-12, 1.5) ***;
   Y23=ROUND(- 7+ 2.0*x1,.1) ;*** Y23∼N(-7 , 2.0) ***;         
   OUTPUT;
 END;
RUN ;

PROC SQL ;
  CREATE TABLE D10 AS SELECT UNIQUE Y, COUNT(N) AS C_Y10
  FROM D1(RENAME=(Y10=Y)) GROUP BY
;
  CREATE TABLE D21 AS SELECT UNIQUE Y, COUNT(N) AS C_Y21
  FROM D1(RENAME=(Y21=Y)) GROUP BY
;
  CREATE TABLE D22 AS SELECT UNIQUE Y, COUNT(N) AS C_Y22
  FROM D1(RENAME=(Y22=Y)) GROUP BY Y
;
  CREATE TABLE D23 AS SELECT UNIQUE Y, COUNT(N) AS C_Y23
  FROM D1(RENAME=(Y23=Y)) GROUP BY
;
QUIT

DATA D3 ;
 MERGE D10 D21 D22 D23;
   BY Y;
   IF C_Y10=. THEN C_Y10=0 ;
   
   ** REFERENCE    **;
   IF C_Y21=. THEN C_Y21=0 ;   
                  
   ** C_Y22 and C_Y23: ADJUSTED BY SD **;
   IF C_Y22=. THEN C_Y22=0 ; C_Y221=C_Y22*1.5/1 ;
   IF C_Y23=. THEN C_Y23=0 ; C_Y231=C_Y23*2.0/1 ;
RUN ;

PROC SGPLOT DATA=D3 ;
  SERIES X =Y Y =C_Y10 ;
 
  REFLINE -10 /AXIS=X;
  XAXIS LABEL="THETA_i" ;
  YAXIS DISPLAY=NONE;
RUN ;

PROC SGPLOT DATA=D3 ;
  SERIES X =Y Y =C_Y21 ;
  SERIES X =Y Y =C_Y221 ;
  SERIES X =Y Y =C_Y231 ;

  XAXIS LABEL="Y_i" ;
  YAXIS DISPLAY=NONE;
RUN ;
--------------------------------------  



OUTPUT





Search This Blog