code{white-space: pre;}
Pius Dahinden, PhD, Responsabile della scienza analitica, Tillotts Pharma
Astratto
Da quando è entrata in vigore nel 2014 la nuova linea guida EU GMP (EudraLex Volume 4) Capitolo 6 (Controllo qualità), l'esecuzione di un'analisi di tendenza sui dati di stabilità del farmaco è un requisito aggiuntivo di controllo di qualità analitico. Il gruppo di lavoro per il controllo di qualità analitico (AQCWG) dell'European Compliance Academy (ECA) ha elaborato una procedura operativa standard per la valutazione dei risultati fuori aspettativa (OOE) e fuori tendenza (OOT). Per la valutazione dei dati di stabilità si raccomanda di utilizzare la procedura del grafico di controllo di regressione (RCC) per il confronto dei lotti correnti con i dati dei lotti storici. Tuttavia, le pendenze e/o le intercette stimate dai dati dei lotti storici stessi sono soggette a incertezza. L'ECA AQCWG propone un metodo di regressione a coefficienti casuali (RCR) semplificato che ne tiene conto. Viene presentato uno script JMP di recente sviluppo che implementa la procedura RCC/RCR raccomandata. Lo script semplifica l'identificazione dei punti OOE/OOT nei dati di stabilità e fornisce tutte le informazioni necessarie nell'output, insieme a una visualizzazione grafica appropriata.
Introduzione
I produttori applicano il controllo statistico di processo (SPC) per garantire la qualità degli articoli prodotti e per prevenire perdite finanziarie causate da processi di produzione fuori controllo. Il controllo di processo significa che un processo in esecuzione viene monitorato di routine e che, se uno qualsiasi dei parametri monitorati dovesse presentare un andamento anomalo, vengono prese misure per riportare il processo sotto controllo. L'SPC è uno strumento che consente ai produttori di rilevare precocemente i cambiamenti in un processo, consentendo loro di indagare sui problemi che causano problemi e di adottare misure correttive in una fase iniziale. Uno strumento potente per il monitoraggio del processo è il metodo del grafico di controllo che è stato reso popolare da Shewhart [6]. La Figura 1 mostra la vista schematica di un tipico grafico di controllo.
Contrariamente ai processi di produzione in cui non dovrebbe esserci alcuna tendenza, ci sono molti problemi di gestione dei dati con una tendenza intrinseca. Per l'analisi di problemi di gestione dei dati di questo tipo, il metodo convenzionale del grafico di controllo è stato combinato con l'analisi di regressione e questo approccio è stato definito "grafico di controllo di regressione" (RCC) da Mandel [4]. Come limiti di controllo, l'utilizzo di intervalli di tolleranza (TI) è ragionevole. Per monitorare i dati di stabilità dei prodotti farmaceutici conservati alle condizioni di conservazione raccomandate (ad esempio, 25 °C / 60% RH), gli RCC vengono utilizzati per monitorare, ad esempio, la degradazione del principio attivo farmaceutico o l'accumulo di impurità nel tempo, per supportare la data di scadenza del prodotto, ovvero per confermare la stabilità del farmaco per la durata della durata di conservazione indicata sull'etichetta.
Figure_1Figura_1Figura_1
Figura 1 Composizione tipica del grafico di controllo
Un grafico di controllo mostra solitamente i valori XX o una statistica di diversi valori (ad esempio la media) della caratteristica di qualità di un campione rispetto al numero di campioni o al tempo. In generale, il grafico contiene una linea centrale che rappresenta il valore medio X¯\overset{\overline{}}{X} del processo sotto controllo. Un presupposto fondamentale è che i dati siano distribuiti normalmente. Due linee orizzontali caratteristiche aggiuntive sono i limiti di controllo inferiore e superiore (rispettivamente LCL e UCL) a una distanza di ± 3 deviazioni standard (SD) dalla linea centrale in modo tale che, finché il processo è sotto controllo, il 99,7% dei punti dati rientrerà in questi limiti a causa della variazione casuale che è indicata come variazione di causa comune. Le linee a una distanza di ± 2 SD dalla linea centrale sono chiamate limiti di avviso inferiore e superiore (rispettivamente LWL e UWL), mentre le linee a una distanza di ± 1 SD dalla linea centrale non hanno un nome specifico. Con l'ausilio di queste linee, un grafico di controllo può essere suddiviso in zone da C ad A. Le regole per il rilevamento della variazione di causa speciale che caratterizza un processo non sotto controllo utilizzano le frequenze delle osservazioni in queste zone come base decisionale.
Procedure e risultati
L'RCC applicato ai dati di stabilità di un prodotto farmaceutico mira a rispondere a due domande: 1) Il lotto attuale è fuori dalle aspettative (OOE) o fuori dal trend (OOT) in termini di lotti storici (ad esempio per quanto riguarda l'intervallo di previsione derivato dai dati storici) e 2) il punto dati misurato più di recente del lotto attuale è OOE in termini di lotto attuale (ad esempio per quanto riguarda il suo intervallo di previsione (PI)?
Per la valutazione di un trend in termini di domanda 1 sono necessari almeno tre punti dati del batch corrente. Per la valutazione della domanda 2 sono necessari almeno quattro punti dati perché il punto dati misurato più di recente non dovrebbe essere utilizzato per la costruzione del PI.
Poiché è molto probabile che i singoli lotti storici varino rispetto alle loro intercette e alle loro pendenze, un modello di minimi quadrati ordinari (pendenza comune – intercetta comune) potrebbe non essere significativo. Per questo motivo, l'Analytical Quality Control Working Group (AQCWG) dell'European Compliance Academy (ECA) raccomanda di utilizzare il metodo della "regressione a coefficienti casuali" (RCR) che tiene conto della variabilità delle intercette e delle pendenze dei singoli lotti [7]. Un modello RCR semplificato (modello modificato di Carter e Yang [1]) contiene due parametri sconosciuti, ovvero l'intercetta β1\beta_{1} e la pendenza β2\beta_{2} Questa procedura è conforme alle linee guida dell'OMS [9] e dell'ICH [2].
Il termine OOT è stato definito dalla Medicines and Healthcare Products Regulatory Agency (MHRA) del Regno Unito come un risultato di test di stabilità che non segue la tendenza prevista, sia in confronto ad altri lotti di stabilità sia rispetto ai risultati precedenti raccolti durante uno studio di stabilità [8]. Il termine OOS è stato definito dalla MHRA come un risultato di test che non è conforme ai criteri di accettazione predeterminati o un risultato di test che esula dai criteri di accettazione stabiliti che sono stati stabiliti in compendi ufficiali e/o dalla documentazione aziendale [8]. Finora non esiste una definizione formale del termine OOE. L'ECA AQCWG propone (sia per i test qualitativi che quantitativi) di definire i risultati OOE come risultati anomali, inaspettati o insoliti che non possono essere classificati come fuori specifica (OOS) o OOT [7].
Modello RCR
Il modello RCR semplificato può essere scritto come
Eio sono=𝛃1i+𝛃2i•Ioio sono+Ioio sono\mathbf{y}_{\testo{ij}} = \mathbf{\beta}_{1i} + \mathbf{\beta}_{2i} \bullet \mathbf{t}_{\testo{ij}} + \mathbf{\varepsilon}_{\testo{ij}}
Dove Ei\mathbf{io} è un ni×1n_{i} \volte 1 vettore che rappresenta il iili^{\testo{esimo}} lotto niio_io misurazioni ripetute (dove j=1,⋯,nij = 1,\ \cpunti,\ n_{i} , con niio_io che rappresenta il numero totale di misurazioni ripetute del lotto ii ) sulla variabile di risposta (ad esempio saggio [%], somma delle impurità [%] o dissoluzione [%]), 𝛃1i\mathbf{\beta}_{1i} E 𝛃2i\mathbf{\beta}_{2i} sono vettori rispettivamente delle intercette e delle pendenze specifiche del lotto, Ioi\mathbf{t}_{io} è il iili^{\testo{esimo}} vettore temporale del batch (ad esempio [Mese]) e Ioi\mathbf{\varepsilon}_{i} è un ni×1n_{i} \volte 1 vettore di niio_io errori casuali. Un prerequisito per questo modello RCR è una relazione lineare tra la risposta e la variabile esplicativa. Se la relazione non dovesse essere lineare, è necessario applicare una trasformazione appropriata prima di eseguire la modellazione RCR.
Si presume che ogni εio sono\varepsilon_{\testo{ij}} proviene da una popolazione normale univariata con media zero, varianza σ2\sigma^{2} , e tutto εio sono\varepsilon_{\testo{ij}} sono indipendenti l'uno dall'altro (indipendenza condizionale) e dai coefficienti del modello β1i\beta_{1i} E β2i\beta_{2i} . Questa ipotesi è ragionevole perché è altamente improbabile che la variabilità del metodo analitico dipenda dal lotto sottoposto a test o dal momento in cui viene eseguito il test. Si presume inoltre che il vettore del coefficiente di regressione di ciascun lotto, 𝛃i\mathbf{\beta}_{i} , è indipendente dai loro vettori di errori casuali e da tutti gli altri batch, Iok\mathbf{\varepsilon}_{k} .
La modellazione RCR si compone di tre fasi.
Fase a) Adattamento di un semplice modello di regressione lineare ai dati di ciascun lotto
I dati associati al batch ii sono indicati da (tio sono,yio sono)\sinistra( t_{\testo{ij}},y_{\testo{ij}} \destra) , Dove yio sonoy_{\testo{ij}} rappresenta il iili^{\testo{esimo}} risposta misurata del lotto al punto temporale tjil_{io} , Dove j=1,⋯,nij = 1,\ \cpunti,\ n_{i} I singoli punti temporali tjil_{io} può variare tra i lotti, e così può variare anche il numero totale di punti temporali niio_io La matrice di progettazione 𝐗i\mathbf{X}_{io} per lotto ii può essere scritto in forma matriciale come segue.
𝐗i=[1ti1⋮⋮1tini]\mathbf{X}_{i} = \begin{bmatrix} 1 & t_{i1} \\ \vdots & \vdots \\ 1 & t_{in_{i}} \\ \end{bmatrix}
Questa matrice è normalizzata e designata da Ioi\mathbf{M}_{io} .
Ioi=(𝐗i′𝐗i)−1\mathbf{M}_{i} = \sinistra( \mathbf{X}_{i}^{'}\mathbf{X}_{i} \destra)^{- 1}
Le stime per le intercettazioni βi1\beta_{i1} , le piste βi2\beta_{i2} , l'"errore quadratico medio" della regressione MSEi=σiy^2\text{MSE}_{i} = \sigma_{i\hat{y}}^{2} , e i gradi di libertà dfi=(ni−2)\testo{df}_{i} = \sinistra( n_{i} - 2 \destra) associato a MSEi\testo{MSE}_{i} si ottengono adattando un semplice modello di regressione lineare ai dati di ogni lotto. Le intercette e le pendenze (𝛃1,𝛃2)′\sinistra( \mathbf{\beta}_{1},\mathbf{\beta}_{2} \destra)^{'} sono stimati da
Ioi=(𝐗i′𝐗i)−1𝐗i′Ei\mathbf{b}_{i} = \sinistra( \mathbf{X}_{i}^{'}\mathbf{X}_{i} \destra)^{- 1}\mathbf{X}_{i}^{'}\mathbf{y}_{i}.
Fase b) Stima della matrice varianza-covarianza dell'errore
La stima della matrice di varianza-covarianza dell'errore dei coefficienti casuali inizia stimando i coefficienti aggregati MSE\testo{MSE} di tutti i lotti, cioè MSEpiscina\testo{MSE}_{\testo{piscina}} , come segue.
MSEpiscina=σ^2=∑i=1ndfi•MSEi∑i=1Bdfi\text{MSE}_{\text{pool}} = {\hat{\sigma}}^{2} = \frac{\sum_{i = 1}^{n}{\text{df}_{i} \bullet \text{MSE}_{i}}}{\sum_{i = 1}^{B}\text{df}_{i}}
Il numeratore di questa equazione può essere espresso come segue.
dfi•MSEi=SSEi=Io^i′Io^i=(Ei−𝐗iIoi)′(Ei−𝐗iIoi)\text{df}_{i} \bullet \text{MSE}_{i} = \text{SSE}_{i} = {\hat{\mathbf{\varepsilon}}}_{i}^{'}{\hat{\mathbf{\varepsilon}}}_{i} = \left( \mathbf{y}_{i} - \mathbf{X}_{i}\mathbf{b}_{i} \right)^{'}\left( \mathbf{y}_{i} - \mathbf{X}_{i}\mathbf{b}_{i} \right)
La matrice di varianza-covarianza del campione Iobb\mathbf{S}_{\testo{bb}} delle intercette e delle pendenze stimate (𝛃1,𝛃2)′\sinistra( \mathbf{\beta}_{1},\mathbf{\beta}_{2} \destra)^{'} si calcola come segue.
Iobb=1n−1∑i=1n(Ioi−β^SUL)(Ioi−β^SUL)′\mathbf{S}_{\text{bb}} = \frac{1}{n - 1}\sum_{i = 1}^{n}\left( \mathbf{b}_{i} - {\hat{\beta}}_{\text{ULS}} \right)\left( \mathbf{b}_{i} - {\hat{\beta}}_{\text{ULS}} \right)^{'}
Doveβ^SUL=1n∑i=1nIoi{\hat{\beta}}_{\text{ULS}} = \frac{1}{n}\sum_{i = 1}^{n}\mathbf{b}_{i} , cioè il vettore medio dei coefficienti, cioè intercette e pendenze (ULS sta per "Unweighted Least-Squares"). Ora, la matrice varianza-covarianza Io^BB{\hat{\mathbf{\Sigma}}}_{\testo{ββ}} può essere stimato come segue.
Io^BB=Iobb−σ^2n•∑i=1n(𝐗i′𝐗i)−1=Iobb−σ^2•Io¯=[σβ12σβ1β2σβ1β2σβ22]{\hat{\mathbf{\Sigma}}}_{\text{ββ}} = \mathbf{S}_{\text{bb}} - \frac{{\hat{\sigma}}^{2}}{n} \bullet \sum_{i = 1}^{n}\left( \mathbf{X}_{i}^{'}\mathbf{X}_{i} \right)^{- 1} = \mathbf{S}_{\text{bb}} - {\hat{\sigma}}^{2} \bullet \overset{\overline{}}{\mathbf{M}} = \begin{bmatrix} \sigma_{\beta_{1}}^{2} & \sigma_{\beta_{1}\beta_{2}} \\ \sigma_{\beta_{1}\beta_{2}} & \sigma_{\beta_{2}}^{2} \\ \end{matrice_b}
Dove Io¯=1n•∑i=1nIoi\overset{\overline{}}{\mathbf{M}} = \frac{1}{n} \bullet \sum_{i = 1}^{n}\mathbf{M}_{i} , vale a dire la matrice varianza-covarianza del modello medio. La varianza dell'errore σ^2{\il{sigma}}^{2} stima la varianza del metodo analitico. La componente di varianza dell'intercetta σβ12\sigma_{\beta_{1}}^{2} rappresenta la varianza all'interno del lotto della risposta osservata al rilascio del prodotto dovuta esclusivamente al processo di fabbricazione, ovvero escludendo la varianza dovuta al metodo analitico. La componente di varianza della pendenza σβ22\sigma_{\beta_{2}}^{2} rappresenta la varianza tra lotti delle velocità di degradazione.
Poiché la matrice varianza-covarianza Io^BB{\hat{\mathbf{\Sigma}}}_{\testo{ββ}} è stimato calcolando la differenza di due matrici, il risultato potrebbe non essere positivo-definito, ovvero l'intercetta e/o la componente di varianza della pendenza potrebbero essere negative. Un possibile rimedio a questo è sostituire il valore negativo con 0. Questo è un semplice approccio di primo soccorso per le stime di varianza negativa ed è equivalente alla conversione di un effetto casuale in un effetto fisso. Nel caso in cui entrambe le varianze siano zero, il modello RCR corrisponde al modello dei minimi quadrati ordinari (OLS).
Fase c) Stima del vettore medio dei coefficienti mediante uno stimatore dei minimi quadrati ponderati (WLS)
La stima del vettore medio dei coefficienti inizia con il calcolo della stima di Ioi\mathbf{W}_{io} ,
Ioi=(Io^BB+σ^2•Ioi)−1\mathbf{W}_{i} = \left( {\hat{\mathbf{\Sigma}}}_{\text{ββ}} + {\hat{\sigma}}^{2} \bullet \mathbf{M}_{i} \right)^{- 1}
che corrisponde all'inverso della varianza della stima del parametro di regressione per l' iili^{\testo{esimo}} lotto. Sulla base di questa equazione il 2×i2 \volte i la matrice dimensionale delle stime dei coefficienti di intercetta e pendenza, ovvero la stima dei minimi quadrati ponderati, è ora ottenuta dalla seguente equazione:
𝛃^SVL=(∑i=1nIoi)−1(∑i=1nIoiIoi)=𝛀(∑i=1nIoiIoi){\hat{\mathbf{\beta}}}_{\text{WLS}} = \left( \sum_{i = 1}^{n}\mathbf{W}_{i} \right)^{- 1}\left( \sum_{i = 1}^{n}\mathbf{W}_{i}\mathbf{b}_{i} \right) = \mathbf{\Omega}\left( \sum_{i = 1}^{n}\mathbf{W}_{i}\mathbf{b}_{i} \right)
Dove 𝛀\mathbf{\Omega} è una stima per la varianza dello stimatore dei minimi quadrati ponderati. La media delle stime dell'intercetta rappresenta la risposta al rilascio del prodotto mediata sul processo di produzione, e la media delle stime della pendenza rappresenta la pendenza comune.
Intervallo di tolleranza (TI) per il modello RCR
I coefficienti del modello RCR β1\beta_{1} E β2\beta_{2} descrivere la tendenza generale, cioè la tendenza comune dei lotti storici. Il TI per il modello RCR può essere calcolato con l'ausilio della stima y^j{\c{io}}_{j} per la retta di regressione e il suo errore standard σy^,RCR\sigma_{\hat{y},RCR} secondo il metodo proposto da Scholz e Vangel [5] come segue. Il loro metodo fa uso del concetto di dimensione effettiva del campione.
y^j±k•σy^,RCR{\hat{y}}_{j} \pm k \bullet \sigma_{\hat{y},\text{RCR}}
Il termine di errore σy^,RCR\sigma_{\hat{y},RCR} è calcolato da
σy^,RCR=D(Io(Io^BB+1n𝛀)Io′+σ^2)\sigma_{\hat{y},RCR} = D\left( \sqrt{\mathbf{t}\left( {\hat{\mathbf{\Sigma}}}_{\text{ββ}} + \frac{1}{n}\mathbf{\Omega} \right)\mathbf{t}^{\mathbf{'}}\mathbf{+}{\hat{\sigma}}^{2}} \right)
Dove Io=[1t1⋮⋮1tk],kϵ N\mathbf{t} = \begin{bmatrix}
1 & t_{1} \\
\vdots & \vdots \\
1 & t_{k} \\
\end{bmatrix},\ k\ \epsilon\mathbb{\text{\ N}} , E DD è la diagonale dell'argomento. Il fattore kk è dato da
k=n−1n•1n*−1•tn*−1,zp•n*,γk = \sqrt{\frac{n - 1}{n}} \bullet \frac{1}{\sqrt{n^{*} - 1}} \bullet t_{n^{*} - 1,\ z_{p} \bullet \sqrt{n^{*}},\gamma}
dove il fattore tn*−1,zp•n*,γt_{n^{*} - 1,z_{p} \bullet \sqrt{n^{*}},\gamma} è il γ\gamma quantile della distribuzione t con n*−1n^{*} - 1 gradi di libertà e parametro di non centralità zp•n*z_{p} \bullet \sqrt{n^{*}} , Dove zpz_{p} è il pp quantile della distribuzione normale standard. Il parametro n*n^{*} è la dimensione effettiva del campione data da
n*=[σb2σb2+σe2•∑i=1nb(nin)2+1n•σe2σb2+σe2]−1=[ρ•1f+1+(1−ρ)•1n]−1{n^{*} = \left\lbrack \frac{\sigma_{b}^{2}}{\sigma_{b}^{2} + \sigma_{e}^{2}} \bullet \sum_{i = 1}^{n_{b}}\left( \frac{n_{i}}{n} \right)^{2} + \frac{1}{n} \bullet \frac{\sigma_{e}^{2}}{\sigma_{b}^{2} + \sigma_{e}^{2}} \right\rbrack}^{- 1} = \left\lbrack \rho \bullet \frac{1}{f + 1} + \left( 1 - \rho \right) \bullet \frac{1}{n} \right\rbrack^{- 1}
dove il parametro ff e il rapporto di varianza ρ\rho sono definiti da
| f=1∑i=1nb(nin)2−1f = \frac{1}{\somma_{i = 1}^{n_{b}}\sinistra( \frac{n_{i}}{n} \destra)^{2}} - 1 |
ρ=σb2σb2+σe2\rho = \frac{\sigma_{b}^{2}}{\sigma_{b}^{2} + \sigma_{e}^{2}} |
Dove σb2\sigma_{b}^{2} è la varianza tra lotti, σe2\sigma_{e}^{2} è la varianza all'interno del lotto (o varianza del metodo), niio_io è il numero di misurazioni per lotto ii , cioè i=1,⋯,nbi = 1,\ \cpunti,\ n_{b} , nbnon_{b} è il numero di lotti storici, e nn è il numero totale di campioni, cioè n=∑i=1nbnin = \somma_{i = 1}^{n_{b}}n_{i} .
Le coperture TI p(100%)p\sinistra( 100\% \destra) della popolazione con una probabilità di γ(100%)\gamma\sinistra( 100\% \destra) . Il concetto di dimensione effettiva del campione tiene conto del fatto che i dati all'interno del lotto sono più correlati dei dati tra lotti, il che diminuisce la quantità di informazioni indipendenti. Per questo motivo, quanto segue è sempre vero: n*≤nn^{*} \leq n Il caso ideale n*=nn^{*} = n si realizza se i dati all'interno del lotto sono totalmente non correlati.
Implementazione di RCC/RCR in JMP
Lo script JSL che implementa la procedura RCC / RCR è strutturato in più parti.
Innanzitutto è necessario definire i nomi dei lotti di riferimento e di prova, nonché i nomi delle varie variabili per la risposta, l'ora, i lotti e le condizioni di conservazione.
Il modello RCR è costruito (semplificato Carter e Yang [1]) come descritto sopra.
Il TI per il modello RCR è costruito utilizzando il metodo proposto da Scholz e Vangel [5].
Viene generata una finestra di report che riassume i parametri calcolati in forma tabellare e grafica.
Esempio
Per la valutazione della funzionalità dello script sono stati generati vari set di dati per nove batch storici e un batch corrente. Il seguente frammento di codice esegue il passaggio a ) dell'adattamento del modello RCR, ovvero le intercette (a, 𝛃1\mathbf{\beta}_{1} ), pendenze (b, 𝛃2\mathbf{\beta}_{2} ), errori quadratici medi ((RMSE ) MSE, MSEi\testo{MSE}_{i} ), gradi di libertà (df, dfi\testo{df}_{i} ), e numero di osservazioni (n, niio_io ) del ii i lotti storici vengono raccolti e archiviati in vettori di lunghezza nbnon_{b} .
For( i = 1, i <= n.refBatches, i++,
fm = Fit Model(
Y( :Eval( responseVariable ) ),
Effects( :Month ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" ),
Where( :Batch == refBatches[i] ),
Invisible
);
fit = fm << Run;
fitr = fit << Report;
a.i[i, 1] = fitr["Parameter Estimates"][Number Col Box( 1 )] << Get( 1 );
b.i[i, 1] = fitr["Parameter Estimates"][Number Col Box( 1 )] << Get( 2 );
RMSE.i[i, 1] = fitr["Summary of Fit"][Number Col Box( 1 )] << Get( 3 );
df.i[i, 1] = fitr["Analysis of Variance"][Number Col Box( 1 )] << Get( 2 );
n.i[i, 1] = fitr["Summary of Fit"][Number Col Box( 1 )] << Get( 5 );
);
For( i = 1, i <= n.refBatches, i++,
MSE.i[i] = RMSE.i[i] ^ 2
);
Il passaggio b ) inizia con la stima dell'MSE aggregato (MSE.pool, MSEpiscina\testo{MSE}_{\testo{piscina}} ). Successivamente, la matrice varianza-covarianza del modello medio (M.bar, Io¯\overset{\overline{}}{\mathbf{M}} ) viene stimato, che viene poi combinato con la matrice di varianza-covarianza del campione (S, Iobb\mathbf{S}_{\testo{bb}} ) per ottenere la matrice varianza-covarianza (Sigma.hat, Io^BB{\hat{\mathbf{\Sigma}}}_{\testo{ββ}} ).
ab.i = a.i || b.i; // Matrix of the intercept and slope vectors
S = Covariance( ab.i ); // Sample variance-covariance matrix of the intercepts and slopes
MSE.pool = Sum( E Mult( df.i, MSE.i ) ) / Sum( df.i ); // Pooled MSE
RMSE.pool = Sqrt( MSE.pool );
M.i = J( 2, 2, 0 );
For( i = 1, i <= n.refBatches, i++,
dat << Select All Rows << Invert Row Selection;
dat << Select Where( :Batch == refBatches[i] );
x = dat << Get As Matrix( {"Month"} );
x.length = N Row( x ); // Number of observations
colReprIntcpt = J( x.length, 1, 1 ); // Column of 1 representing the intercept
x = colReprIntcpt || x; // Design matrix of the OLS model
M.i = M.i + Inverse( x` * x );
);
M.bar = M.i / n.refBatches; // Mean model variance-covariance matrix
Sigma.hat = S - MSE.pool * M.bar;
Sigma.hat[Loc( Diag( Sigma.hat ) < 0 )] = 0; // Replace negative values on the diagonal of Sigma.hat by 0.
Nel passaggio c ) i coefficienti del modello RCR ab.hat ( 𝛃^SVL{\hat{\mathbf{\beta}}}_{\testo{WLS}} ) vengono stimati mediante l'ausilio del seguente frammento di codice.
M.i = J( 2, 2, 0 );
W.i = J( 2, 2, 0 );
For( i = 1, i <= n.refBatches, i++,
dat << Select All Rows << Invert Row Selection;
dat << Select Where( :Batch == refBatches[i] );
x = dat << Get As Matrix( {"Month"} );
colReprIntcpt = J( n.i[i, 1], 1, 1 ); // Column of 1 representing the intercepts
x = colReprIntcpt || x; // Design matrix of the linear model
M.i = M.i + Inverse( x` * x );
W.i = W.i + Inverse( Sigma.hat + MSE.pool * M.i );
);
Omega = Inverse( W.i );
ab.hat = Omega * (W.i * ab.i`);
ab.hat = ab.hat`;
ab.hat.bar = V Mean( ab.hat );
Il frammento di codice successivo mostra la costruzione del TI per il modello RCR secondo Scholz und Vangel [5]. Per la costruzione dell'intervallo vengono utilizzate le stime dell'intercetta media e del coefficiente di pendenza memorizzate nel vettore ab.hat.bar.
utp = Associative Array( dat:Month ); // Unique time points
time.points = Matrix( utp << Get Keys ); // Vector with (new) time points for which the response is sought
n.new = N Row( time.points ); // Number of data points of the new data set
m.x = J( n.new, 1, 1 ) || time.points; // Design matrix
n = Sum( n.i ); // Total number of data points
df.th = n - 2; // Number of degrees of freedom if only fixed effects are allowed, i.e. if a "common slope, common intercept" model is appropriate.
df = df.th;
variance.ratio = Sigma.hat[1, 1] / (Sigma.hat[1, 1] + MSE.pool);
t.f = 1 / Sum( (df.i / n) ^ 2 ) - 1;
If( Sigma.hat[1, 1] == 0,
df.eff = df,
df.eff = 1 / (variance.ratio / (t.f + 1) + (1 - variance.ratio) / n)
);
// Calculation of the k.eff factor on the basis of the effective number of degrees of freedom.
k.eff = Sqrt( (n - 1) / n ) * 1 / Sqrt( df.eff - 1 ) * t Quantile(
gamma,
(df.eff - 1),
(Normal Quantile( (1 - alpha) ) * Sqrt( df.eff ))
);
t.quantil = t Quantile( (1 - alpha / 2), df.eff );
y.hat = ab.hat.bar[1] + ab.hat.bar[2] * time.points;
LTL = y.hat - k.eff * Vec Diag( Sqrt( m.x * (Sigma.hat + Omega / n.refBatches) * m.x` + MSE.pool ) );
UTL = y.hat + k.eff * Vec Diag( Sqrt( m.x * (Sigma.hat + Omega / n.refBatches) * m.x` + MSE.pool ) );
Nell'ultima parte dello script i risultati vengono preparati per essere visualizzati in una finestra di report. Un report di esempio è mostrato nella Figura 2.
I risultati riassunti dalla finestra del report consentono di rispondere alle domande poste all'inizio del capitolo 3 come segue: 1) poiché il punto dati di 18 mesi (vale a dire la misurazione più recente) del lotto corrente si trova al di fuori del TI adattato ai dati dei lotti storici, si deve concludere che il lotto corrente è OOE / OOT e 2) poiché il punto dati di 18 mesi del lotto corrente ricade al di fuori del PI del lotto corrente, si deve concludere che il lotto corrente è anche OOE / OOT in termini di lotto corrente. La stessa conclusione avrebbe dovuto essere tratta già alla stazione temporale precedente, sebbene il punto temporale di 12 mesi rientri nel PI del lotto corrente. Tuttavia, poiché questo punto si trova al di fuori del TI adattato ai dati dei lotti storici, la conclusione complessiva alla stazione temporale di 12 mesi deve essere stata che questo è un punto OOE / OOT.
Come accennato all'inizio del capitolo 3, è molto probabile che i singoli lotti storici varino rispetto alle loro intercette e alle loro pendenze e che per questo motivo il modello RCR superi il modello dei minimi quadrati ordinari. Si possono distinguere cinque casi: caso I: nessuna variazione dell'intercetta, nessuna variazione della pendenza; caso II: variazione dell'intercetta, nessuna variazione della pendenza; caso III: nessuna variazione dell'intercetta, variazione della pendenza; caso IV: variazione dell'intercetta, variazione della pendenza; e caso V: non linearità. I risultati sono riassunti nella Figura 3 per tutti e cinque i casi. I grafici nella Figura 3 mostrano che il modello RCR rappresenta meglio i dati nei casi in cui le intercette e/o le pendenze variano ed è molto simile al metodo di base nei casi in cui non vi è alcuna variabilità dell'intercetta e della pendenza.
Figure_2Figura_2Figura_2
Figura 2 Output dello script che implementa il metodo RCC / RCR
La finestra è divisa nelle parti "Historical Batch Assessment", "Current Batch Assessment (Individual Model Parameters)" e la visualizzazione grafica che riassume i dati storici e quelli attuali del batch. I dati dei batch storici sono rappresentati da punti blu () e i dati del batch attuale da croci rosse (). Il TI adattato ai dati dei batch storici è rappresentato dalla banda delimitata dalle linee tratteggiate blu e il PI adattato ai dati del batch attuale (ma senza includere l'osservazione più recente) dalla banda delimitata dalle linee tratteggiate rosse.
Figura 3 Confronto degli intervalli del modello RCR e degli intervalli del modello di regressione lineare di base in diverse situazioni
L'adattamento del modello RCR è rappresentato dalla linea di regressione continua blu e dalle linee tratteggiate blu dell'intervallo di tolleranza corrispondente (95% di confidenza e 95% di copertura). L'adattamento del modello di base è rappresentato dalla linea di regressione tratteggiata viola e dalla tonalità viola dell'intervallo di previsione corrispondente (95% di confidenza), ovvero i limiti di confidenza per un singolo valore previsto. Le linee tratteggiate grigie nel pannello Va rappresentano l'adattamento non lineare calcolato sulla base della risposta al quadrato. I sei pannelli confrontano gli intervalli del modello RCR e gli intervalli del modello di regressione lineare di base nelle seguenti situazioni: Pannello I: caso "nessuna variazione di intercetta, nessuna variazione di pendenza"; Pannello II: caso "nessuna variazione di intercetta, nessuna variazione di pendenza"; Pannello III: caso "nessuna variazione di intercetta, variazione di pendenza"; Pannello IV: caso "variazione di intercetta, variazione di pendenza"; Pannello Va: caso "non linearità"; Pannello Vb: caso "non linearità" dopo la trasformazione, ovvero la quadratura, della variabile di risposta.
Conclusione
Lo script JMP presentato in questo manoscritto è uno strumento adatto e robusto per valutare i dati di stabilità di un lotto corrente di un farmaco rispetto ai risultati OOE e OOT. Un prerequisito è la disponibilità di dati storici di stabilità di almeno tre lotti con almeno quattro punti temporali di ciascuno di questi lotti.
Bibliografia
Carter, RL, e Yang, MCK Inferenza di grandi campioni in modelli di regressione a coefficienti casuali. Comunicazioni in statistica – Teoria e metodi (1986) 15 (8): 2507-2525. COLLEGAMENTO
Conover, WJ (1980), Statistica pratica non parametrica, Milano: Einaudi, Torino: Einaudi.
ICH Guidance Q1A(R2), Stability Testing of New Drug Substances and Product, versione fase 4, 6 febbraio 2003. COLLEGAMENTO
Mandel, BJ Tabella di controllo della regressione. Tecnologia J Qual (1969) 1 (1): 1-9. COLLEGAMENTO
Scholz, F., e Vangel, M. Limiti di tolleranza e limiti di confidenza Cpk sotto effetti batch. Pubblicato in: Advanced in Stochastic Models for Reliability, Quality and Safety. A cura di Kahle, W., von Collani, E., Franz, J., e Jensen, U. Birkhäuser, Boston, 1998, 361-379. COLLEGAMENTO
Shewhart, WA (1939). Metodo statistico dal punto di vista del controllo di qualità. (Deming, WE). Washington, DC, The Graduate School, Department of Agriculture.
Procedura operativa standard – Guida alla gestione dei dati di laboratorio – Risultati fuori dalle aspettative (OOE) e fuori dalla tendenza (OOT). European Compliance Academy (ECA) Analytical Quality Control Working Group, Christopher Burgess, Draft V 0.3, 2015.
Agenzia di regolamentazione dei medicinali e dei prodotti sanitari del Regno Unito (MHRA), Out Of Specification Investigations, note di presentazione e pacchetto per i delegati, 28 agosto 2013. COLLEGAMENTO
Serie di rapporti tecnici dell'OMS, n. 953, Allegato 2 Test di stabilità dei principi attivi farmaceutici e dei prodotti farmaceutici finiti, 2009. COLLEGAMENTO