From: "Piotrovskij, Vladimir [JanBe]" <VPIOTROV@janbe.jnj.com>

Subject: Box-Cox transformation in NONMEM

Date: 25 Sep 1998 03:56:48 -0400

Dear NONMEM users,

If residuals are highly skewed log transformation of observations and model predictions may help. There is, however, a more general approach in regression called Transform Both Side (TBS) approach (see Carroll & Ruppert 'Transformation and weighting in regression'). Log transformation is a particular case of Box-Cox modified power transformation (y^lambda-1)/lambda for lambda=0. Generally, lambda is a parameter which can be estimated together with other parameters of a regression model. Has anybody experience in applying Box-Cox transformation in NONMEM?

Kind regards,

Vladimir

--------------

Vladimir Piotrovsky

Clinical Pharmacokinetics

Janssen Research Foundation

2340 Beerse, Belgium

e-mail: vpiotrov@janbe.jnj.com

****

From: Mats Karlsson <Mats.Karlsson@biof.uu.se>

Subject: Re: Box-Cox transformation in NONMEM

Date: 25 Sep 1998 10:20:16 -0400

Dear Vladimir,

We applied a Box-Cox transformation when analyzing leucopenia data that were highly skewed (Clin. Pharm&Ther 1995;57:325-34). We didn't try to estimate lambda as part of the model though.

Best regards,

Mats

________________________________________________________

Mats Karlsson, PhD

Uppsala University

Div. of Biopharmaceutics and Pharmacokinetics

Dept. of Pharmacy/

Box 580, SE-751 23 Uppsala, Sweden

Internet: mats.karlsson@biof.uu.se

Phone: +46 18 471 41 05

Fax: +46 18 471 40 03

________________________________________________________

****

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.