Program example to compute a PDF as a numerical derivative of a CDF.

==================================================================================

options linesize = 80 ;
footnote "~john-c/5421/sasprog.sas &sysdate &systime" ;

FILENAME GRAPH 'gsas.grf' ;
LIBNAME  loc '' ;

OPTIONS  LINESIZE = 80 MPRINT ;

GOPTIONS
         RESET = GLOBAL
         ROTATE = PORTRAIT
         FTEXT = SWISSB
         DEVICE = PSCOLOR
         GACCESS = SASGASTD
         GSFNAME = GRAPH
         GSFMODE = REPLACE
         GUNIT = PCT BORDER
         CBACK = WHITE
         HTITLE = 2 HTEXT = 1 ;

*===================================================================== ;        

/* Program illustrating how to find a pdf, given the cdf  ... */ ;

data cdfpdf ;

     pi = 4*atan(1) ;
     x = 1 ;
     h = 1e-7 ;

     cdfx = probnorm(x) ;

     fderivx = (probnorm(x + h) - probnorm(x)) / h ;

     pdfx = (1/sqrt(2 * pi))* exp(-x*x/2) ;

     output ;

run ;

proc print data = cdfpdf ;
run ;

/* How to graph a pdf ... */ ;

data pdfgraph ;

     n = 400 ;
     h = 1e-7 ;

     do i = 1 to n ;

        x = -3 + 6 * i / n ;
        cdf = probnorm(x) ;

        pdf = (probnorm(x + h) - probnorm(x)) / h ;
        output ;

     end ;

run ;

symbol1 i = j v = none w = 8 h = 8 l = 1 c = ligrey  ;
symbol2 i = j v = none w = 8 h = 8 l = 3 c = black ;

proc gplot data = pdfgraph ;
     plot  cdf * x  pdf * x / overlay ;
title1 h = 2 'Graph of the Standard Normal CDF (grey) and PDF (black)' ;
title2 h = 2 'Based on Numerical Approximation of the PDF' ;
title3 h = 2 'As a derivative of the CDF' ;
run ;

endsas ;

==================================================================================
/home/gnome/john-c/5421/derivative.sas  Most recent update: Sep 29, 2010