Data imputation [Software]

posted by Helmut Homepage – Vienna, Austria, 2010-04-24 18:21 (5478 d 01:34 ago) – Posting: # 5212
Views: 5,913

Dear Ravi!

❝ […] data was missing at 96 and 120 hr time point and for other subjects data was missing for 72 and 168 hrs. There are certain subjects for whom 48 hr observation is missing.


The sampling schedule was …, 48, 72, 96, 144, 168, 216 h. It does not matter what text you write in a data cell instead of a numeric result. WinNonlin's default (≤5.3) is 'Missing'; however any other text ('Absent' or even 'blabla') is treated in the same way (see below). In Phoenix (≤6.1) it's an empty cell - imported datasets are converted automatically and you can't write text into a numeric field any more.

❝ […] what is wrong with the first approach which I have suggested i.e. Just write missing in place of absent


Have you tried that before asking here? You would have noticed that there's no difference in results. Have you given Pharsight’s support all information? I can't imagine they suggested to essentially exclude measured concentrations of subjects with nonmissing values from the dataset.
However in WinNonlin as well in Phoenix missing values in the profile embedded within measured ones are problematic, because if you have specified the linear trapezoidal in NCA these values are always interpolated in a linear manner, which will give a positive bias of the AUC after tmax.
See also these threads: #3723 and #4182.
It is possible to calculate partial AUCs with the lin/log-option and sum them up later on. But this is a quite cumbersome procedure; for the technical details consider asking your question at Pharsight's Extranet.

I would suggest to log/linear-interpolate missing values; however, I would not interpolate more than two values in a row. Formula: Ci=exp{ln(Ci-1)+(ti-ti-1)×[ln(Ci+1)-ln(Ci-1)]/(ti+1-ti-1)}

Example-function C=100×exp(-0.025×t): 72/96/120/144; 96 & 120 missing, interpolation based on 72 and 144:
  t     C
 72   16.53
 96  Missing
120  Missing
144    2.732

C96 =exp{ln(16.53)+( 96-72)×[ln(2.732)-ln(16.53)]/(144-72)}=9.071
C120=exp{ln(16.53)+(120-72)×[ln(2.732)-ln(16.53)]/(144-72)}=4.978


AUC with imputed values within [72,144] will be 568.3, whilst Phoenix/WinNonlin will give 693.4 - or a positive bias of 20 % (theoretical from function: 551.9).
The only easy solution I know in PHX/WNL is to calculate AUCs for all (!) subjects by the lin-up/log-down trapezoidal - which is a good idea anyhow (Model Options > NCA Settings > Calculation Method > Linear Up/Log Down). AUC within [72,144] will be 551.9. If you have stated this procedure in the protocol, you don't have to worry about missing values any more.
Overview:
no imputation, linear trapezoidal:          693.4 (bias +20.41 %)
96 & 120 imputated, linear trapezoidal:     568.3 (bias  +2.89 %)
no imputation, lin-up/log-down trapezoidal: 551.9 (unbiased)


If you use data-imputation you must not use these values in the estimation of lambda-z later on (in PHX/WNL these values must be excluded). Hopefully you have still at least three values in the log/linear phase.

For the next study state your procedure in the protocol (regulators don't like post-hoc data manipulations). I received not a single deficiency letter in the past thirty years for this procedure. :cool:
BTW, why have you sampled beyond 72 hours?

Dif-tor heh smusma 🖖🏼 Довге життя Україна! [image]
Helmut Schütz
[image]

The quality of responses received is directly proportional to the quality of the question asked. 🚮
Science Quotes

Complete thread:

UA Flag
Activity
 Admin contact
23,424 posts in 4,927 threads, 1,669 registered users;
24 visitors (0 registered, 24 guests [including 3 identified bots]).
Forum time: 19:56 CEST (Europe/Vienna)

The difference between a surrogate and a true endpoint
is like the difference between a cheque and cash.
You can get the cheque earlier but then,
of course, it might bounce.    Stephen Senn

The Bioequivalence and Bioavailability Forum is hosted by
BEBAC Ing. Helmut Schütz
HTML5