Re: Box-Cox transformation in NONMEM
From: stuart@c255.ucsf.EDU (S.Beal)
Subject: Re: Box-Cox transformation in NONMEM
Date: 29 Sep 1998 19:01:54 -0400
Subject: Transform-both-sides
We do have some experience with this. Here is a set-up using the Box-Cox power transformation and homoscedastic (uncorrelated, univariate) epsilon
error on the transformed scale. It can be modified for other transformations.
The set-up requires two user-routines, the use of which is not supported by the NPG. These routines are included.
If X gives the prediction for an observation (based on the eta values) Use the statement
Y=(X**THETA(xxx)-1)/THETA(xxx)+ERR(1)
to set Y in abbreviated code, where xxx is the index of that element of theta serving as the lambda parameter. Include the options
OTHER=CONTR OTHER=CCONTR
in the $SUBROUTINES record, and the two user routines:
subroutine contr (icall,cnt,ier1,ier2)
double precision cnt
call ncontr (2,cnt,ier1,ier2)
return
end
subroutine ccontr (icall,c1,c2,c3,ier1,ier2)
parameter (lth=40,lvr=30)
common /rocm0/ theta (lth)
common /rocm4/ y
double precision c1,c2,c3,theta,y,w,one,two
dimension c2(*),c3(lvr,*)
data one,two/1.,2./
if (icall.le.1) return
w=y
y=(y**theta(xxx)-one)/theta(xxx)
call cels (c1,c2,c3,ier1,ier2)
y=w
c1=c1-two*(theta(xxx)-one)*log(y)
return
end
in the NONMEM executable.