Choose Language Hide Translation Bar

How To Use JMP in Pharma Process Validation and Continuous Process Verification (2023-EU-30MP-1330)

The three PQ batch concept in the pharmaceutical industry is being replaced by continued process verification. However, there is still a validation event (stage 2) before going into commercial manufacturing (stage 3). In stage 2, you are supposed to prove future batches will be good, and in stage 3, you are to prove that the validated state is maintained. If this can be done, there is no need for end-product testing any longer leading to large QC cost reductions. JMP has the ideal toolbox for both stages. If the process can be described with a model, prediction intervals with batch as a random factor can be used to predict the performance of future batches. To live up to the assumptions behind the model, JMP has an excellent toolbox to do the sanity check. Even cases with variance heterogeneity can be handled through weighted regression. A JMP script that combines the necessary tools described above to calculate control limits, prediction limits, and process capability in stages 2 & 3 will be demonstrated. The script has been heavily used by many of our customers. It only requires that data can be described with a model in JMP.

 

 

Thank you  for  giving  us  this  opportunity  to  talk  about  how  we  use  JMP  in  pharma  process  validation  and  continuous  process  verification.  My  colleague,  Louis  and  I  will  give  you  a  guide  to  the  background  of  it,  how  we  do  it,  and  what  is  the  outcome.

The  agenda  is  that  first  we  will  describe  the  background  and  the  concepts.  Since  its  validation,  we  must  justify  the  assumptions  we  have  behind  our  models,  so  sanity  check  is  important.  Then  I  will  go  on  to  talk  about  the  particular  methods  we  are  using  and  which  formulas  we  have  to  make  for  things  that  are  not  there  in  JMP  upfront.

Then  Louis  will  take  over  and  show  how  the  JMP  script  is  doing  it  to  automate  the  calculations  and  implement  what  is  missing  in  JMP.  Finally,  we  will  make  some  conclusions  and  hopefully  there  will  also  be  time  for  questions.

Now  to  the  background  and  the  concept  we  are  working  with.  Louis  and  I  come  from  a  company  called  NNE,  and  we  do  consultancy  within  the  pharmaceutical  industry,  and  we  are  JMP  partners,  so  we  help  our  clients  getting  value  out  of  the  data,  of  course,  using  JMP.

A big  issue  within  the  pharmaceutical  industry  is  process  validation  when  they're  going  to  launch  a  new  product. T raditionally  for  many,  many  years,  it  has  been  done  by  making  three  batches.  I f  they  were  good,  the  validation  was  passed.

But  this  is  not  really  predicting  the  future,  this  is  predicting  the  past.  So, o f  course,  you  can  make  three  batches  that  were  good,  and  then  the  problem  can  appear  later  on.   To  compensate  for  that,  that,  the  industry  has  traditionally  had  an  extensive  and  thereby  costly  QC  inspection  on  every  batch  to  ensure  it  was  okay.

However,  if  we  could  prove  that  all  future  batches  would  be  good,  then  we  could  reduce  the  QC  cost  heavily.  But  how  do  we  predict  that  the  future  batches  will  be  good  with  confidence?  Yeah,  we  could  use  prediction  intervals  or  individual  confidence  levels,  as  I  call  in  JMP,  at  least  in  some  menus.

If  we  put  batch  as  a  random  factor,  then  the  validation  batches  we  are  looking  at  will  be  seen  as  a  random  sampling  of  all  future  batches.  T hereby,  we  can  predict  how  future  batches  are  going  to  be.   If  this  prediction  is  inside  specification,  we  have  actually  proven  that  all  future  batches  will  be  good  given  that  we  can  maintain  the  validator  state  force.

However,  this  might  take  more  than  three  batches,  but  do  they  all  have  to  be  in  state  two,  as  we  show  in  this  graph?  Maybe  not.   We  actually  should  just  still  make  three  batches  in  your  first  process  of  validation.   If  it's  not  enough,  then  make  the  rest  in  which  we  call  straight  three  A,  which  is  after  commercialization,  because  then  you  can  just  sell  them  one  by  one.   It's  not  a  big  problem  that  you  have  to  make  more.

However,  this  requires  two  things  to  be  fulfilled.  The  first  is  that  we  still  have  this  extensive  QC  test  that  we  can  find  out  if  your  batch  is  bad  because  we  are  not  yet  tooled,  it  will  not  happen.  A lso,  of  course,  it  requires  that  the  estimated  performance  is  okay.  How  can  we  see  if  the  estimated  performance  is  okay?   We  can  do  that  by  seeing  if  control  limits  are  inside  the  specification.

Then  we  can  go  on  the  market  and  later  on,  when  also  prediction  limits  are  in  such  specification,  then  we  can  actually  remove  or  at  least  reduce  the  QC  inspection.   We  might  be  going  from  monitoring  the  product  until  monitoring  the  process.

What  is  it  all  about?  Validation  is  about  predicting  the  forms  of  future  batches  with  confidence,  not  just  predicting  the  past.  How  can  we  do  that?  We  can  do  that  by  using  prediction  or  12 intervals  in  JMP.  How  many  batches  will  we  suggest  to  make  in  stage  two?  We  still  suggest  three,  but  you  might  not  be  done.

How  can  you  then  pass  stage  two  with  few  batches  so  we  can  go  on  to  the  market?  That's,  as  I  said  before,  look  at  control  intervals  because  they  are  without  confidence.  You're  not  punished  by  only  having  three  batches.  T hen  later  on,  look  at  prediction  or  12  intervals.

If  control  intervals  are  inside  specification,  prediction  intervals  are  not.  The  most problem  of  the  reason  for  that  is  lack  of  data.  This  shouldn't  be  limiting  you  to  go  onto  the  market.

Then  how  many  batches  to  make  in  stage  3A?  That's  fairly  simple.  Simply  until  your  prediction  limits  are  inside  specification,  then  you  have  passed  your  stage  3 A.  These  limits  you  can  also  use  as  prediction  limit  after  stage  3 A  when  you  go  into  stage  3B.

We  can  also  see  it  on  this  flow  chart  where  you  in  upper  left  corner,  start  with  analyzing  your  validation  ones,  typically  tree.  Then  you  calculate  your  prediction  limits  in  JMP  as  a  random  factor.  If  they  are  inside  spec  limits,  everything  is  fine.  You  have  passed  both  stage  2  and  3 A  and  everything  is  fine.

If  it  turns  out  that  prediction  limits  are  too  wide  compared  to  the  spec  limit,  I  would,  as  a  next  thing  l ook  at  my  control  limits  which  are  without  confidence.   If  they  are  inside,  then  we  just  need  more  data  and  we  will  collect  more  data  and  we  calculate  and  a  point  of  time  we  will  go  out  here  and  have  passed  also  strict  TA.

Of  course,  if  it  happens  that  even  control  limits  are  outside  specification,  then  actually  the  estimated  value  is  bad  and  you  are  not  really  ready  for  validation  and  you  have  failed.  Hopefully,  this  is  not  going  to  happen.

Let's  go  on  to  the  sanity  check.  Now  I  will  go  into  into  JMP.  I  will  try  to  demonstrate  how  it  works.  Here  you  see  a  JMP  table  which  we  have  made,  or  not  we  have  made,  it  actually  comes  from  ISPE,  International  Society  of   Pharmacoepidemiology,  who  put  us  this  data  set  as  a  good  example  on  how  a  validation  set  should  look  like.  Many  companies  or  consultancy  has  tried  to  calculate  on  that  and  see  how  would  they  conclude.

It's  basically  a  data  set  from  tablet  manufacturing,  and  classically  it  contains  these  three  batches  A,  B  and  C.  Then  we  are  taking  out  powders  in  15  locations  in  the  blender,  and  then  we  are  measuring  the  API  content,  that's  the  strength  of  the  actual   [inaudible 00:06:52]   ingredient,  which  would  be  between  85  and  115  to  be  inside  specification.

If  you  look  at  the  variability  chart  of  the  data,  you  can  see  here  we  have  the  three  batches  A,  B  and  C,  and  we  also  have  the  15  locations  in  each  batch.  Then  within  each  batch  location  combination,  we  have  four  measurements.

The  first  you  can  see  is  that  the  within  location  variation  on  batch  B  is  somewhat  bigger  than  on  batch  A  and  C.  We  do  not  have  ba tch heterogeneity.  To  make  that  more  objective,  you  can  put  S  control  limit  on  your  standard  deviation  chart  and  you  can  see  that  you  are  out  of  control  in  Batch  B.

Another  way  of  seeing  it  would  be  to  make  a   heterogeneity  of  variance  test  as  you're  seeing  down  here.  Then  it's  also  very  clear  that  there's  more  within  or  in  location  variation  on  batch  B  than  on  the  other  ones.

Strictly,  you  cannot  pool  these  variances  however  you  can,  but  we  need  then  to  do  weighted  regression  where  we  weigh  with  inverse  variance.  That's  the  next  step  we  will  do,  go  into  log  variance  modeling,  which  you  can  do  in  JMP.

We  have  simply  here  just  made  a  log  variance  model  where  you  can  see  that  the  location,  the  batch,  the  interaction  all  have  a  significant  influence  on  the  level,  but  only  the  batch  has  a  significant  influence  on  the  variance.  As  you  can  see  that  the  variance  for  batch  B  is  somewhat  bigger  than  within  variance  on  batch  A  and  C.

When  you  have  built  this  model,  you  can  from  up  here  just  save  the  columns  and  you  can  save  your  variance  formula.  I've  already  done  that.   It's  already  in  my  data  set.   If  I  unhide  here,  here  you  can  see  my  variance  column  from  my  log  variance  model.   You  have  a  formula  here  saying,  what  is  it  in  group  A  and  C  for  batch  A  and  C,  and  what  is  it  for  batch  B?  Based  on  that,  I  can  now  make  weighted  regression  where  I  simply  just  make  a  weight  column  where  I  weight  my  regression  classically  with  inverse  variance.

Then  I'm  ready  for  making  a  sanity  check  on  my  data  because  now  I  can  pool  the  variances  after  weighted  regression,  so  I  can  start  doing  sanity  check  on  my  data.   The  first  thing  I  would  do  is  to  look  at  a  systematic  model  where  I  have  my  location,  batches,  and  the  interaction. T hen  I  can  see  on  my   [inaudible 00:09:28]  type  residual  plot,  I  have  no  outliers  and   outlaws ,  but  it  is  inside.

I  can  also  see  on  my  box  plot  transformation,  there's  no  need  to  transform  my  data.   Here  it's  reasonable  to  assume  that  I  have  these  normal  distributed  residuals,  which  is  the  assumption  behind  a  fixed  least  squares  model.

Then  next  step  is  to  put  batches  as  a  random  factor,  not  just  a  systematic  factor,  because  I  would  like  to  predict  future  batches.   This  is  what  I  have  done  here.  T hen  suddenly  you  get  these  variance  components.  What  is  the  between  batch  variation?  What  is  the  batch  location  variation?  W hat  is  the  residual  mean  within  batch  within  location  variation?

Since,  of  course,  I  have  weighted  it  with  inverse  variance,  this  number,  of  course,  gets  close  to  one.  However,  in  this  model,  there  are  also  some  additional  assumptions,  namely  that  the  batch  effect  and  the  batch  location  effect  is  randomly  distributed,  meaning  that  these  random  effect  predictions  up  here  should  follow  a  normal  distribution.

To  test  that,  you  can  just  put  them  into  a  table,  which  I've  done  here,  and  we  can  test  the  loops  just  making  an  empty  model  where  you  put  them  as  a  response.   You  can  see  both  the  batch  signals  or  the  batch  variances  and  the  interaction  variances  all  are  inside  the  residual  limits.  Also  here  we  can  justify  the  assumption  that  these  are  just  random  factors.  This  is  the  sanity  check  of  the  model.

Now  to  make  models  for  batch  A  and  batch  C,  we  need  to  scale  them  differently.   That's  what  I  have  done  in  these  columns  over  here.   If  I  unhide  my  columns  here,  you  can  see  I  made  an  AC  scale  weight  where  I  simply  just  multiplied  my  weight  factor  with  the  scaling.  So  I  get  the  variation  I  have  seen  for  batches  A  and  C,  and  the  same  thing  for  my batch  B.  I  can  scale  the  weight  with  the  variance  I  would  like  to  have  as  a  residual  variance,  which  is  just  coming  from  my  block  variance  modeling.   That's  also  pretty  straightforward  to  do.

N ow  I  can  actually  have  my  two  models  from  where  I  can  predict.  One  where  I  scale  with  my  AC  scale  weight  and  one  where  I  scale  with  my  B  scale  weight.   Thereby  I  can  see,  if  I  just  run  one  of  them,  one  scale  with  the  AC  scale  weight,  then  you  can  see  that  you  have  this  model,  you  have  these  residuals,  you  have  these  balance  components.

What  is  very  easy  in  JMP  is  just  to  go  up  here  and  you  can  go  and  you  can  save  your  columns.  F rom  up  here,  you  can  actually  save  the  prediction  formula  that  would  be  your  center  line.  But  you  can  also  save  your  prediction  interval  that  here  are  called  individual  confidence  interval.

I  have  done  that  both  for  this  model  and  also  for  the  other  model.  I  also  want  the  other  model  with  the  different  scaling  for  batch  B.  T hen  I  save  these  columns  as  individual  confidence  intervals.   Then  they  are  just  saved  down  here  as  these  prediction  formulas.  Then  I  can  make  a  combined  one  by  just  combining  these  depending  on  which  batch  group  things  are  coming  from.   Now  I  have  limits  for  both  batch  A,  B  and  C,  which  I  can  plot  on  the  same  graph.

This  is  straight  over  to  do.   Until  now,  I  just  used  what's i nside  JMP.  But  to  get  the  control  limits  and  to  get  the  tolerance  limit,  I  need  to  calculate  them  myself,  because in  JMP,  you  don't  have  tolerance  limits,  you  don't  have  control  limits  in   Fit Model.

Of  course,  you  have  control  limits  when  you  do  control  chart,  but  that's  also  only  for  one  mean  and  one  standard  deviation.  Of  course,  you  also  have  tolerance  limits  in  analyzed  distribution.  But  again,  that's  only  for  one  mean  and  one  standard  deviation.

Here  we  have  to  calculate  them  ourselves.   The  first  thing  we  then  do  is  just  get  the  variance  components.  This  is  what  we  have  here.  W e  just  saved  the  variance  components  from  the  two  models,  one  where  we  scaled  to  batch  A  and  C,  and  one  where  we  scale  to  batch  B.

Because  when  we  have  the  variance  components,  it's  pretty  straightforward  to  calculate  the   control  limit  because  it's  basically  just  the  prediction  formula   minus  a  normal  quantile,  and  then  the  square  root  of  the  total  variance,  and  then  either  variance  A  and  C  or  B,  depending  on  what we're  looking  at.  I t's  actually  pretty  straightforward  to  calculate  the   control  limits  that  way.

The  same  we  can  do  for  the  tolerance  limits.  If  you  prefer  tolerance  limits  instead  of  prediction  limits,  many  companies  do.   Again,  unfortunately,  they  are  not  in   JMP  model,  but  we  can  calculate  them.   There  we  simply  just  put  in  the  classical  formula  for  a  tolerance  limit.  Where  one  sided,  we  put  in  the  T  quantile,  we  put  in  the  degrees  of  freedom,  we  put  in  the  normal  quantile,  and  as  before,  of  the  proportion,  and  then  we  multiply  by  the  total  balances  from  the  variance  component.

The  only  little  bit  tricky  thing  here  is  that  we  need  the  degrees  of  freedom  under  total  variance.   JMP  is  not  really  giving  you  that.  It's  only  giving  you  degrees  of  freedom  in  systematic  models.  But  we  can  see  based  on  the  width  of  the  prediction  interval,  that's  what  we  have  here.  Then  we  can  actually  calculate  based  on  the  width  of  the  prediction  intervals,  how  many  degrees  of  freedom  do  we  have  there,  and  then  we  just  apply  the  same  degrees  of  freedom  on  the  tolerance  limits  and  then  we  are  ready  to  go  and  we  can  save  all  of  these  limits  down  here.   If  we  want,  we  can  plot  them.  This  is  what  we  have  done  here.

Here  you  can  see  actually  the  prediction  limits  and  the  tolerance  limits  and  the  control  limits.  The  control  limits  are  the  dotted  line,  the  prediction  limits  are  the  full  line,  and  the  rough  dotted  line  are  the  tolerance  limits.   You  see  that  for  the  15  different  locations  and  for  the  three  batches  A,  B  and  C and  of  course,  limits  are  wider  for  batch  B  because  it  has  more  within  location  variances.

You  can  actually  see  that  even  the  control  limits  at  the  dotted  line  are  outside  for  location  1  and  2  and  actually  also  four.  Even  though  this  process,  this  is  a  good  example  of  a  validation,  I  would  say,  well,  if  batch  B  is  representative,  you  have  actually  failed  the  validation.

If  you  look  at  A  and  C,  then  all  the  dotted  lines  are  inside,  meaning  that  we  have  passed  stage  two  because  the  estimate  value  is  fine.  But  on  a  few  of  them,  you  can  see  that  the  prediction  limits  are  just  outside.  But  when  you  have  this  big  gap  between  control  limits  and  prediction  limit,  just  one  batch  more  would  probably  make  them  inside.  This  is  how  it  works.

Some  companies  they  do  not  think  it's  enough  to  look  at  if  the  limits  are  inside  specification.  They  would  actually  like  to  get  a  Ppk  capability  index  on  them.   We  also  put  that  one  into  our  method  here.   If  you  look  at  the  formulas  here,  you  can  see  where  we  have  the  prediction  limits,  that's  also  put  in  a  Ppk  formula.

Basically  what  we  do,  we  just  take  the  prediction  formulas,  this  into  the  spec  limit,  and  and  divided  by  the  half  width  of  the  prediction  limits.   This  is  this  Ppk  that  corresponds  to  the  prediction  limits.   Because  they  are  with  confidence,  this  is  actually  Ppk  with  confidence.

You  can  do  exactly  the  same  with  your  control  limits.  Just  take  the  classical  Ppk  formula  and  just  put  in  control  limits  instead  of  prediction  limits.  B ecause  control  limits  are  just  estimated  values,  this  is  Ppk  without  confidence.  Of  course,  you  can  do  exactly  the  same  thing  also  for  the  tolerance  limits,  which  we  have  down  here,  a  Ppk  based  on  the  tolerance  limits.  You  can  also  calculate  all  of  these.   If  you  want,  of  course,  you  can  plot  them  on  a  graph  as  you  see  here.

Up  here,  we  have  estimated  Ppk  without  confidence,  that's  the  red  one.  T hen  we  have  the  blue  one  that  is  based  on  tolerance  limits  and  the  green  one  that  is  based  on  prediction  limits.   Up  here,  it's  for  the  good  group  A  and  C   with  indication  variation.   Down  here  how  it  is  with batch  B, is  a  bigger  one.

You  can  actually  see,  as  we  saw  with  the  limits  for  batch  B  variation,  even  the  estimated  value  has  a  Ppk  below  one  for  one,  two,  and  four  positions.  While  all  the  estimated  value  is  nicely  about  one  for  A  and  C. A lso  the  Ppk  based  on  prediction,  the  green  one,  most  of  them  are  about  one,  and  they're  very  close  to  one  on  location  one  and  two.  This  would  just  require  one  additional  batch  probably,  and  then  they  would  be  inside.

However,  as  you'll  probably  see  it's  a  bit  tedious  to  do  all  these  calculations  by  hand.   This  is  why  we  have  made  a  script  for  it,  which  Louis  is  now  going  to  demonstrate.  I  should  just  Louis  take  over  now  and  shows  how  the  script  works.  I'm  sure  he  will  also  make  a  few  more  examples.

Yes,  Pierre,  thank  you  very  much.  I  will  just  try  to  share  my  screen  here  then.  Yes.  First  thing  first,  as  Pierre  has  shown  us,  we  face  a  lot  of  issues  during  the  special  validation.  Luckily  for  us,  JMP  has  a  lot  of  straight  up  box  functionalities  to  help  us  deal  with  these  issues.  We  really  like  to  use  the  functionalities  coming  out  of  the  box  with  JMP  because  this  really  lessens  our  validation  burden  when  going  forward.

Some  of  the  things  JMP  has  solved  for  us  is,  for  example,  the  issue  that  we  are  working  with  complex  processes  and  these  cannot  be  described  by  just  one  mean  and  one  standard  deviation.  Here  to  deal  with  this,  we're  leveraging  the   Fit Model  platform  in  JMP  where  we  can  have  multiple  systematic  factors  to  handle  the  many  means,  and  we  can  also  have  multiple  random  factors  to  deal  with  many  variance  components.

Then  there's  the  issue  with  data  often  needing  some  data  transformation.  Again,  JMP  has  the   Box-Cox  transformation  window  we  use  to  deal  with  this  directly  in  the   Fit Model  platform.  Then  we  usually  see  a  lot  of  outliers  we  have  to  handle  in  bigger  data  sets.  H ere  we  again  leverage  the   Fit Model  platform,  more  specifically  the  student  sized  residuals  plot  where  we  exclude  outliers  based  on  the  Bonferroni  limits.

Here  it's  just  important  to  note  that  at  least  our  concept  is  that  we  like  to  exclude   the  actual  model,  but  we  always  report  them  separately.  It  has  to  be  visual  that  these  are  not  included  in  the  analysis.

Then  there  is  the  lack  of  homogeneity  of  variance,  which  Pierre  also  showed  how  to  deal  with  using  the  log  variance  modeling  to  get  out  the  variation  and  then  use  this  variance  to  compute  a  weight  formula.

Then  again,  there  is  the  prediction  intervals  which  we  use  quite  a  lot  here.  Here  as  well  JMP  is  ready  to  go  with  individual  confidence  intervals  directly  in  the   Fit Model  platform.

But  then  as  Pierre  also  mentioned,  we  felt  like  there  were  some  parts  where  JMP  could  not  bring  us  all  the  way  home.  This  includes,  for  example,  controlled  intervals  in  JMP,  which  can  only  handle  the  one  mean  and  one  variance  component.

How  we  overcome  this  is  that  we  calculate  controlled  intervals  from  the   Fit Model  using  the  prediction  formula  and  standard  error  on  prediction  formula  and  residuals  to  calculate  the  total  variance,  and  from  here,  the  control  intervals.

Then  there  is  the  fact  that  tolerance  intervals  is  preferred  by  many  of  our  customers  because  this  allows  you  to  separately  set  the  confidence  and  coverage.  However,  we  only  found  that  JMP  can  do  tolerance  intervals  in  the  distribution  platform,  and  it  can  only  handle  one  mean  and  one  variance  component  again.

Of  course,  in  the  script  built- ins  that  it  can  calculate  the  tolerance  intervals  similar  to  the  control  intervals.  W hen  we  do  the  calculation  of  the  tolerance  intervals,  we  use  the  same  degrees  of  freedom  as  used  when  JMP  calculates  its  prediction  intervals.

Then  maybe  the  primary  reason  for  doing  this  script,  or  the  initial  reason  at  least,  is  that  calculation  and  visualization  of  all  these  intervals  is  very  time  consuming  and  very  prone  to  human  errors.   Actually,  we  decided  to  make  this  script  to  automate  calculations  and  visualizations.

Then  lastly,  many  of  our  customers  require  capability  and  dialysis  such  as  Ppk.   We  have,  of  course,  also  included  this  in  our  script  such  that  it  calculates  Ppk  corresponding  to  both  prediction  limits,  what  we  call  Ppk  with  confidence,  and  also  control  limits,  what  we  call  Ppk  without  confidence.

To  talk  about  the  script  a  little  bit,  the  script  we  have  designed  here  consists  of  two  parts.  We  primarily  have  the  JMP  script  you  see  here  in  the  middle,  and  then  we  also  have  a  template  document,  as  you  see  up  here  in  the  upper  left  corner.

When  making  this  script,  there  were  a  few  things  we  really  wanted  to  achieve.  We  wanted  to  make  it  really  transparent,  meaning  that  our  customers  could  go  in  and  look  under  the  hood,  so  to  say,  and  follow  the  calculations  of  these  different  limits  and  potentially  even  edit  them  themselves,  which  takes  us  to  the  next  thing.

We  wanted  this  to  be,  at  least  to  some  extent,  customizable  by  our  customers.  If  they  don't  like  the  way  we  calculate  Ppk,  we  would  like  to  give  them  the  option  to  go  in  and  edit  the  equations.

The  template  document  in  itself  is  actually, so to say,  an  empty  data  table.  It  has  a  lot  of  defined  columns  with  column  formulas,  but  it  has  no  rows  in  there  yet.  What  our  script  does,  essentially,  is  that  it  works  from  this  template  document  as  an  input.  It  also  takes  the  original  data  file  on  which  you  base  your  analysis  as  an  input,  and  then  it  takes  the  model  window.

Here  it  is  to  be  said  that  the  model  window  is  assumed  to  be  a  complete  model.  So  you  have  done  all  the  all  your  data  manipulations,  ensured  that  this  is  a  proper  response  you  get  from  the  model. A lso  you  have  made  these  sanity  checks  and  justified  the  assumptions  behind  the  model  ensuring  it's  valid.

What  the  script  does  itself  is  that  it  takes  the  template  document,  it  takes  the  original  data  file,  and  then  it  copies  the  data  from  the  original  data  file  to  the  template  document.   We've  done  this  such  that  we  don't  interfere  with  our  customer's  original  data  either.

It  then  also  takes  all  the  relevant  parameters  from  the  model  window  and  insert  it  into  this  template  document.  F rom  there  on,  more  or  less,  this  template  document  will  fill  out  itself  through  the  already  defined  formulas  in  the  columns.

This  template  document  will  then  in  the  end  be  converted  to  an  output  table  where  the  first  many  columns  would  look  very  much  like  the  original  data  file,  and  then  you  will  have  the  remaining  calculation  and  input  values  as  additional  columns  further  on.

I  think  we  should  go  to  an  example  and  see  how  this  looks  in  real  life.  I  will  just  try  to  stop  sharing  this  screen  and  share  this  one.  What  we  have  here  is  in  fact,  the  same  ESBIC  case  as   [inaudible 00:25:20]   here.  What  you  would  do  is  you  would  have  your  data,  you  will  run  a  model.  In  this  case,  I  run  the  model  where  peer  scale  it  to  correspond  to  the  variation  in  batch  A  and  C,  the  batches  with  the  lower  variation.

What  you  simply  do  is  that  you  have  your  model,  ensure  it's  done  in  sense  of  sanity  checks  and  so  forth.  Then  we  run  this  script  on  this  model,  which  is  here.  We  have  the  model  and  we  run  the  script.

We'll  see  a  few  things  pop  up  here.  First,  we  have  the template  document,  output  document  which  has  now  been  populated  with  a  lot  of  different  rows,  some  table  variables,  and  so  forth.  We  have  our  Ppk  graph  here  visualizing  the  Ppk  based  on  different  limits.  The  blue  being  based  on  control  limits,  the  red  being  based  on  prediction  limits,  and  the  green  one  being  based  on  tolerance  limits.  Then  lastly,  we  have  our  graph  here  plotting  all  the  data,  specification  lines,  and  as  well  our  prediction  limit,  control  limits,  and  tolerance  limits  here.

We  get  the  image  that  Pierre  also  showed  earlier.  What  we  see  here  is,  in  fact,  that  if  we  look  at  our  data  and  assume  all  batches  varies  as  much  as  batch  A  and  C,  we  are  actually  in  an  okay  position  here.  At  least  we  would  have  passed  our  stage  two  because  control  limits  are  for  all  batches,  all  locations  within  specification.

We  do,  however,  have  a  small  problem  out  here  on  the  location  1  and  2,  where  we  see  at  least  the  prediction  of  tolerance  limits  extending  a  bit  over  the  upper  specification  limit.  However,  we  believe  this  could  be  fixed  by  just  adding  a  few  more  batches  to  know  the  variation  better.

But  what  we  also  see  here  is,  of  course,  we  have  an  observation  outside  our  limits,  and  this  is  because  what  we're  looking  at  here  is  in  fact  batch  B,  which  as  we  remember,  had  a  higher  variance.  I  would  just  try  to  run  this  model  here,  scale  according  to  batch  B,  so  you  can  see  the  difference.

Now  what  we  see  here  is  that  all  our  limits  has  moved  out  from  the  mean.  Now  they're  actually  going  beyond  specification,  not  only  on  the  first  two  locations,  but  on  multiple  locations  here,  which  would,  in  essence,  for  us,  especially  because  you  have  the  control  them  as  outside  specification,  mean  that  you  have  failed  your  validation  here.  Maybe  not  the  best  example  for  this  data  set  to  showcase  a  good  validation.

Now  I  thought  I  would  just  try  to  go  through  how  we  envisioned  the  entire  process  relating  more  to  the  flowchart,  Pierre,  showed  you  in  the  beginning  of  this  presentation.  I  have  brought  a  customer  example  from  an  actual  PPQ  validation  run.  They  ended  up  producing  a  total  of  six  batches  here.

What  we  have  done  here  is  that  we  have  made  a  model.  I  will  just  deploy  local  data  filter  to  simulate  where  it  started,  having  only  these  three  batches.  Then  what  we  have  here  is  just,  so  to  say,  our  finished  model.  What  we  do  now,  after  having  produced  the  first  batches,  analyzed  the  data,  we  just  run  the  script.  We  get  a  result  looking  like  this.

The  scenario  we  see  here  is  that  both  our  control  limits  and  prediction  limits,  the  prediction  limits  up  here,  tolerance  limits  here,  are  both  very  much  outside  the  specification.  However,  lucky  enough  for  us,  our  control  limits  are  actually  inside  specification.

This  means  in  the  sense  of  the  flowchart  that  we  now  have  passed  stage  2  and  we  can  actually  start  from  now  on  to  when  we  do  our  continued  validation,  getting  our  control  prediction  limit  and  tolerance  limits  inside  specification,  that  we  actually  can  start  sending  batches  to  market  simultaneously.

But  bear  in  mind  here,  we  still  have  a  pretty  high  QC  effort  in  the  end.  The  reason  we  believe  that,  because  many  customers  also  ask,  how  can  we  do  this  if  we  are  so  uncertain  about  the  batches  we  produce?  But  if  you  want  to  know  the  quality  of  your  already  produced  batches,  we  actually  have  to  look  at  this  in  a  different  way.

Here  in  this  model,  we  have  batch  as  a  random  effect  because  as  we  consider  it  as  a  part  of  a  larger  population.  But  if  we  want  to  look  at  the  batch  individually,  we  actually  have  to  put  it  as  a  systematic  effect  in  here.  If  I  run  the  script  on  this  one,  we  will  see  the  limits  narrowing  significantly  in  here.  I  forgot  to  deploy  data  filter,  but  I  think  this  makes  sense  anyway.

What  we  see  here  is  that  the  limits  now  are  much  closer  to  the  center  lines  of  each  batch  here,  and  they  are  way  within  our  specification  because  we  are  now  looking  at  the  batches  we  have  already  produced  and  not  trying  to  predict  the  performance  of  future  batches.  Which  is  also  why  we  believe  that  this  is  an  acceptable  point  to  go  to  market  while  still  having  the  high  QC  effort  at  the  end.

If  I  just  continue  with  our  example,  what  we  saw  in  this  example  was  we  have  passed  stage  two  because  control  limits  are inside  specification,  but  prediction  limits  are outside.  The  next  step  here  would  be  to  simply  produce  another  batch,  create  your  model,  it's  done  here,  and  then  run  the  script  again.

What  we  see  now  here  compared  to  the  first  view  is  that  our  prediction  and  tolerance  limits  are  moving  towards  spec  and  also  toward  our  control  limits,  which  is  the  behavior  we  will  assume  as  we  start  to  get  the  between  batch v ariants or s tarting  to  know  the  between  batch  variants  better  and  better.

However,  still,  prediction  limits  are  not  inside  specification,  so  the  routine  would  simply  be  to  do  everything  again.  Now  because  I  know  how  this  will  end,  I  will  simply  include  the  two  last batch  and  we  will  on  the  model  again.

Finally,  after  including  the  sixth  batch,  the  results  we  get  here  are  that  all  our  limits  are  now  within  our  specification,  which  means  we  have  passed  both  stage  2  after  3  batches,  and  now  we  have  also  passed  stage  3 A.  Which  means  we  now  go  into  stage   3B,  where  we  will  start  to  put  our  attention  on  reducing  the  high  amount  of  QC  effort  in  the  end  and  replacing  this  with  continued  process  verification  and  CTV.

Just  to  sum  up,  I  will  go  back  to  the  presentation.  The  purpose  of  a  validation  is,  at  least  in  our  opinion,  to  predict  the  future  of  batches  will  be  okay.   We  firmly  believe  that  if  you  can  describe  your  validation  set  with  a  model,  you  can  also  predict  the  future  with  confidence.  This  can  be  done  from  either  prediction  intervals  or  tolerance  intervals.

We  believe  that  JMP  has  unique  possibilities  to  model  your  data  and  also  to  justify  assumptions  behind  your  model. I t  offers  the  opportunity  to  look  at  variance  heterogeneity.   If  we  do  not  have  this,  we  have  the  option  to  do  a  log  variance  model  to  find  a  weight  factor  as  Pierre  showed  you,  and  include  that  in  our  normal  regression  models.

Then  we  can  look  at  whether  or  not  the  residuals  are  normally  distributed.   If  they  are  not,  we  can  do  a   Box-Cox  transformation,  also  directly  from  the   Fit Model  platform.  Then  we  have  the  problem  of  outliers,  which  we  can  handle  through  the  student  task  residual  plot,  excluding  observations  outside  the  95 %   Bonferroni limits.  Again,  a  window  directly  accessible  through  the   Fit Model  platform.

Then  lastly,  there  is  also  that  we  request  our  random  factors  to  be  normally  distributed,  at  least  effect  fronted.   This  we  did  by  the  blue  test,  and  here  we  can  also  exclude  outlier  level.

Then  to  make  the  process  easier  for  us,  our  customers,  and  also  adding  a  bit  on  top  of  this  to  actually  achieve  the  functionalities  we  desire,  we  have  decided  to  make  a  script  that  can  automate  visualization  of  prediction  intervals.  It  calculates  and  visualizes  tolerance  intervals  using  the  same  number  of  degrees  of  freedom  as  when  JMP  calculates  prediction  interval.  It  also  calculates  control  limits  for  more  complex  processes  where  you  have  many  means  and  many  variance  components.   Lastly,  it  calculates  also  capability  values  for  where  these  might  be  needed.

Presenter