Chapter 11: Probability Distribution Functions and Inverses

GFNIN

This function evaluates the inverse of a general continuous cumulative distribution function given in a subprogram.

Function Return Value

GFNIN — The inverse of the function F at the point P.   (Output)
F(GFNIN) is “close” to P.

Required Arguments

F — User-supplied FUNCTION to be inverted. F must be continuous and strictly monotone. The form is F(X), where
X — The argument to the function.   (Input)
F — The value of the function at X.   (Output)
F must be declared EXTERNAL in the calling program.

P — The point at which the inverse of F is desired.   (Input)

GUESS — An initial estimate of the inverse of F at P.   (Input)

Optional Arguments

EPS — Convergence criterion.   (Input)
When the relative change in GFNIN from one iteration to the next is less than EPS, convergence is assumed. A common value for EPS is 0.0001. Another common value is 100 times the machine epsilon.
Default: EPS = 100 times the machine epsilon.

FORTRAN 90 Interface

Generic:                              GFNIN (F, P, GUESS [,…])

Specific:                             The specific interface names are S_GFNIN and D_GFNIN.

FORTRAN 77 Interface

Single:                                GFNIN (F, P, EPS, GUESS)

Double:                              The double precision name is DGFNIN.

Description

Function GFNIN evaluates the inverse of a continuous, strictly monotone function. Its most obvious use is in evaluating inverses of continuous distribution functions that can be defined by a FORTRAN function. If the distribution function cannot be specified in a FORTRAN function, but the density function can be evaluated at a number of points, then routine GCIN can be used.

Function GFNIN uses regula falsi and/or bisection, possibly with the Illinois modification (see Dahlquist and Bjorck 1974). A maximum of 100 iterations are performed.

Comments

1.         Informational errors

Type Code

4         1                  After 100 attempts, a bound for the inverse cannot be determined. Try again with a different initial estimate.

4         2                  No unique inverse exists.

4         3                  Over 100 iterations have occurred without convergence. Convergence is assumed.

2.         The function to be inverted need not be a distribution function, it can be any continuous, monotonic function.

Example

In this example, we find the 99–th percentage point for an F random variable with 1 and 7 degrees of freedom. (This problem could be solved easily using routine FIN. Compare the example for FIN). The function to be inverted is the F distribution function, for which we use routine FDF. Since FDF requires the degrees of freedom in addition to the point at which the function is evaluated, we write another function F that receives the degrees of freedom via a common block and then calls FDF. The starting point (initial guess) is taken as two standard deviations above the mean (since this would be a good guess for a normal distribution). It is not necessary to supply such a good guess. In this particular case, an initial estimate of 1.0, for example, yields the same answer in essentially the same number of iterations. (In fact, since the F distribution is skewed, the initial guess, 7.0, is really not that close to the final answer.)

 

      USE UMACH_INT

      USE GFNIN_INT

      IMPLICIT   NONE

      INTEGER    NOUT

      REAL       DFD, DFN, F, F0, GUESS, P, SQRT

      COMMON     /FCOM/ DFN, DFD

      INTRINSIC  SQRT

      EXTERNAL   F

!

      CALL UMACH (2, NOUT)

      P   = 0.99

      DFN = 1.0

      DFD = 7.0

!                                 Compute GUESS as two standard

!                                 deviations above the mean.

      GUESS = DFD/(DFD-2.0) + 2.0*SQRT(2.0*DFD*DFD*(DFN+DFD-2.0)/(DFN* &

             (DFD-2.0)**2*(DFD-4.0)))

      F0    = GFNIN(F,P,GUESS)

      WRITE (NOUT,99999) F0

99999 FORMAT (' The F(1,7) 0.01 critical value is ', F6.3)

      END

!

      REAL FUNCTION F (X)

      REAL       X

!

      REAL       DFD, DFN, FDF

      COMMON     /FCOM/ DFN, DFD

      EXTERNAL   FDF

!

      F = FDF(X,DFN,DFD)

      RETURN

      END

Output

 

The F(1,7) 0.01 critical value is 12.246



http://www.vni.com/
PHONE: 713.784.3131
FAX:713.781.9260