Re: PHI inverse?
hi Chuanpu,
i found implemenations of such an approximation here: http://home.online.no/~pjacklam/notes/invnorm/ < http://home.online.no/%7Epjacklam/notes/invnorm/ > The fortran implementation can be easily implemented in NONMEM by putting in your code:
$SUBROUTINE OTHER=dinvnorm.f
and somewhere in the model code e.g.:
B = PHI(ETA(1))
" C = dinvnorm(B)
C = C
This seems to work nicely, in the basic example I tried, differences between the original eta and the recalculated value were < 1e-05.
best regards,
Ron
PS. I'm including the fortran file below for archiving purposes.
--- file dinvnorm.f
real*8 function dinvnorm(p)
real*8 p,p_low,p_high
real*8 a1,a2,a3,a4,a5,a6
real*8 b1,b2,b3,b4,b5
real*8 c1,c2,c3,c4,c5,c6
real*8 d1,d2,d3,d4
real*8 z,q,r
a1=-39.6968302866538
a2=220.946098424521
a3=-275.928510446969
a4=138.357751867269
a5=-30.6647980661472
a6=2.50662827745924
b1=-54.4760987982241
b2=161.585836858041
b3=-155.698979859887
b4=66.8013118877197
b5=-13.2806815528857
c1=-0.00778489400243029
c2=-0.322396458041136
c3=-2.40075827716184
c4=-2.54973253934373
c5=4.37466414146497
c6=2.93816398269878
d1=0.00778469570904146
d2=0.32246712907004
d3=2.445134137143
d4=3.75440866190742
p_low=0.02425
p_high=1-p_low
if(p.lt.p_low) goto 201
if(p.ge.p_low) goto 301
201 q=dsqrt(-2*dlog(p))
z=(((((c1*q+c2)*q+c3)*q+c4)*q+c5)*q+c6)/((((d1*q+d2)*q+d3)*q+d4)*q+1)
goto 204
301 if((p.ge.p_low).and.(p.le.p_high)) goto 202
if(p.gt.p_high) goto 302
202 q=p-0.5
r=q*q
z=(((((a1*r+a2)*r+a3)*r+a4)*r+a5)*r+a6)*q/(((((b1*r+b2)*r+b3)*r+b4)*r+b5)*r+1)
goto 204
302 if((p.gt.p_high).and.(p.lt.1)) goto 203
203 q=dsqrt(-2*dlog(1-p))
z=-(((((c1*q+c2)*q+c3)*q+c4)*q+c5)*q+c6)/((((d1*q+d2)*q+d3)*q+d4)*q+1)
204 dinvnorm=z
return
end
---
--
-----------------------------------
Ron Keizer, PharmD PhD
Post-doctoral fellow
Pharmacometrics Research Group
Uppsala University
-----------------------------------
Quoted reply history
On 5/13/2012 5:21 PM, Hu, Chuanpu [JRDUS] wrote:
> Dear Colleagues,
>
> It appears that NM7 has the PHI() function but not its inverse. Before NM7 was available people used approximations of PHI, e.g., to handle BQL. Does anyone know of any similarly implementable approximations of the inverse function of PHI?
>
> Thank you,
>
> Chuanpu
>
> ~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*
>
> Chuanpu Hu, Ph.D.
>
> Scientific Director
>
> Pharmacokinetics and Pharmacometrics
>
> Biologics Clinical Pharmacology
>
> Janssen Pharmaceutical Companies of Johnson & Johnson
>
> 1400 McKean Road, PO Box 776, Spring House, PA 19477
>
> Phone: 215-793-7288
>
> Fax: 215-986-1013
>
> E-mail: [email protected] <mailto:[email protected]>
>
> ~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*