code{white-space: pre;}
Pius Dahinden, PhD, Manager Analytical Science, Tillotts Pharma
Abstrakt
Seit Inkrafttreten des neuen EU-GMP-Leitfadens (EudraLex Band 4), Kapitel 6 (Qualitätskontrolle), im Jahr 2014 ist die Durchführung einer Trendanalyse von Daten zur Arzneimittelstabilität eine zusätzliche Anforderung der analytischen Qualitätskontrolle. Die Arbeitsgruppe Analytische Qualitätskontrolle (AQCWG) der European Compliance Academy (ECA) hat eine Standardarbeitsanweisung für die Bewertung von Ergebnissen erarbeitet, die außerhalb der Erwartungen (OOE) und außerhalb des Trends (OOT) liegen. Zur Bewertung von Stabilitätsdaten wird empfohlen, das Verfahren der Regressionskontrollkarte (RCC) für den Vergleich aktueller Chargen mit Daten historischer Chargen zu verwenden. Die aus den historischen Chargendaten geschätzten Steigungen und/oder Achsenabschnitte selbst sind jedoch mit Unsicherheiten behaftet. Die AQCWG der ECA schlägt eine vereinfachte Regressionsmethode mit Zufallskoeffizienten (RCR) vor, die dies berücksichtigt. Ein neu entwickeltes JMP-Skript, das das empfohlene RCC/RCR-Verfahren implementiert, wird vorgestellt. Das Skript vereinfacht die Identifizierung von OOE/OOT-Punkten in Stabilitätsdaten und stellt alle erforderlichen Informationen in der Ausgabe zusammen mit einer entsprechenden grafischen Anzeige bereit.
Einführung
Hersteller setzen statistische Prozesskontrolle (SPC) ein, um die Qualität der produzierten Produkte zu sichern und finanzielle Verluste durch außer Kontrolle geratene Produktionsprozesse zu vermeiden. Prozesskontrolle bedeutet, dass ein laufender Prozess regelmäßig überwacht wird und bei Abweichungen von den überwachten Parametern Maßnahmen ergriffen werden, um den Prozess wieder unter Kontrolle zu bringen. SPC ist ein Werkzeug, das es Herstellern ermöglicht, Prozessveränderungen frühzeitig zu erkennen, Fehlerursachen zu untersuchen und frühzeitig Korrekturmaßnahmen einzuleiten. Ein leistungsstarkes Werkzeug zur Prozessüberwachung ist die von Shewhart [6] entwickelte Regelkartenmethode. Abbildung 1 zeigt die schematische Darstellung einer typischen Regelkarte.
Im Gegensatz zu Produktionsprozessen, in denen es keinen Trend geben sollte, weisen viele Datenmanagementprobleme einen inhärenten Trend auf. Zur Analyse derartiger Datenmanagementprobleme wurde die konventionelle Regelkartenmethode mit der Regressionsanalyse kombiniert. Dieser Ansatz wurde von Mandel [4] als "Regressionskontrollkarte" (RCC) bezeichnet. Als Kontrollgrenzen ist die Verwendung von Toleranzintervallen (TI) sinnvoll. Zur Überwachung der Stabilitätsdaten pharmazeutischer Produkte, die unter den empfohlenen Lagerbedingungen (z. B. 25 °C / 60 % RH) gelagert werden, werden RCCs verwendet, um z. B. den Abbau des aktiven pharmazeutischen Bestandteils oder die Ansammlung von Verunreinigungen im Laufe der Zeit zu überwachen und so das Verfallsdatum des Produkts zu unterstützen, d. h. um die Stabilität des Arzneimittels für die Dauer der angegebenen Haltbarkeitsdauer zu bestätigen.
Figure_1Abbildung_1Abbildung_1
Abbildung 1 Typische Regelkartenzusammensetzung
Eine Kontrollkarte zeigt normalerweise die Werte XX oder eine Statistik mehrerer Werte (z. B. des Mittelwerts) des Qualitätsmerkmals einer Stichprobe im Vergleich zur Stichprobenanzahl oder zur Zeit. Im Allgemeinen enthält das Diagramm eine Mittellinie, die den Mittelwert darstellt X¯\overset{\overline{}}{X} des kontrollierten Prozesses. Eine grundlegende Annahme ist, dass die Daten normal verteilt sind. Zwei weitere charakteristische horizontale Linien sind die untere und obere Kontrollgrenze (LCL bzw. UCL) in einem Abstand von ± 3 Standardabweichungen (SD) von der Mittellinie, sodass, solange der Prozess kontrolliert ist, 99,7 % der Datenpunkte aufgrund zufälliger Variationen, die als Streuung durch gemeinsame Ursachen bezeichnet werden, innerhalb dieser Grenzen liegen. Die Linien in einem Abstand von ± 2 SD von der Mittellinie werden als untere und obere Warngrenze (LWL bzw. UWL) bezeichnet, während die Linien in einem Abstand von ± 1 SD von der Mittellinie keine spezifische Bezeichnung haben. Mithilfe dieser Linien kann eine Kontrollkarte in die Zonen C bis A unterteilt werden. Regeln zur Erkennung von Streuung durch besondere Ursachen, die einen nicht kontrollierten Prozess charakterisieren, verwenden die Häufigkeiten der Beobachtungen in diesen Zonen als Entscheidungsgrundlage.
Verfahren und Ergebnisse
Durch die Anwendung von RCC auf Stabilitätsdaten eines pharmazeutischen Produkts sollen zwei Fragen beantwortet werden: 1) Liegt die aktuelle Charge außerhalb der Erwartung (OOE) oder außerhalb des Trends (OOT) im Hinblick auf die historischen Chargen (d. h. hinsichtlich des aus historischen Daten abgeleiteten TI) und 2) liegt der zuletzt gemessene Datenpunkt der aktuellen Charge im Hinblick auf die aktuelle Charge OOE (d. h. hinsichtlich ihres Vorhersageintervalls (PI))?
Zur Beurteilung eines Trends im Sinne der Frage 1 sind mindestens drei Datenpunkte der aktuellen Charge notwendig. Zur Beurteilung der Frage 2 werden mindestens vier Datenpunkte benötigt, da der zuletzt gemessene Datenpunkt nicht zur Konstruktion des PI herangezogen werden soll.
Da die einzelnen historischen Chargen sehr wahrscheinlich hinsichtlich ihrer Achsenabschnitte und Steigungen variieren, ist ein gewöhnliches Kleinstquadrate-Modell (gemeinsame Steigung – gemeinsamer Achsenabschnitt) möglicherweise nicht aussagekräftig. Aus diesem Grund empfiehlt die Analytical Quality Control Working Group (AQCWG) der European Compliance Academy (ECA) die Anwendung der Methode der Zufallskoeffizientenregression (RCR), die die Variabilität der Achsenabschnitte und Steigungen der einzelnen Chargen berücksichtigt [7]. Ein vereinfachtes RCR-Modell (modifiziertes Carter- und Yang-Modell [1]) enthält zwei unbekannte Parameter, nämlich den Achsenabschnitt β1\beta_{1} und die Steigung β2\beta_{2} Dieses Verfahren steht im Einklang mit den Richtlinien der WHO [9] und ICH [2].
Der Begriff OOT wurde von der britischen Medicines and Healthcare Products Regulatory Agency (MHRA) als ein Stabilitätstestergebnis definiert, das nicht dem erwarteten Trend folgt, entweder im Vergleich mit anderen Stabilitätschargen oder in Bezug auf frühere Ergebnisse, die während einer Stabilitätsstudie gesammelt wurden [8]. Der Begriff OOS wurde von der MHRA als ein Testergebnis definiert, das nicht den vorher festgelegten Akzeptanzkriterien entspricht oder ein Testergebnis, das außerhalb der festgelegten Akzeptanzkriterien liegt, die in offiziellen Kompendien und/oder in der Firmendokumentation festgelegt wurden [8]. Bislang gibt es keine formelle Definition des Begriffs OOE. Die ECA AQCWG schlägt (für qualitative und quantitative Tests) vor, OOE-Ergebnisse als anomale, unerwartete oder ungewöhnliche Befunde zu definieren, die weder als außerhalb der Spezifikation (OOS) noch als OOT klassifiziert werden können [7].
RCR-Modell
Das vereinfachte RCR-Modell kann wie folgt geschrieben werden:
Undij=𝛃1i+𝛃2i•𝐭ij+𝛆ij\mathbf{y}_{\text{ij}} = \mathbf{\beta}_{1i} + \mathbf{\beta}_{2i} \bullet \mathbf{t}_{\text{ij}} + \mathbf{\varepsilon}_{\text{ij}}
Wo Undi\mathbf{y}_{i} ist ein ni×1n_{i} \times 1 Vektor, der den ithi^{\text{te}} Chargen nin_{i} wiederholte Messungen (wo j=1,⋯,nij = 1,\ \cdots,\ n_{i} , mit nin_{i} die Gesamtzahl der wiederholten Messungen der Charge ii ) auf die Antwortvariable (z. B. Gehalt [%], Summe der Verunreinigungen [%] oder Auflösung [%]), 𝛃1i\mathbf{\beta}_{1i} Und 𝛃2i\mathbf{\beta}_{2i} sind Vektoren der batchspezifischen Achsenabschnitte bzw. Steigungen, 𝐭i\mathbf{t}_{i} ist die ithi^{\text{te}} Zeitvektor des Batches (z. B. [Monat]) und 𝛆i\mathbf{\varepsilon}_{i} ist ein ni×1n_{i} \times 1 Vektor von nin_{i} Zufallsfehler. Voraussetzung für dieses RCR-Modell ist ein linearer Zusammenhang zwischen der Antwort und der erklärenden Variable. Sollte der Zusammenhang nicht linear sein, muss vor der RCR-Modellierung eine entsprechende Transformation durchgeführt werden.
Es wird davon ausgegangen, dass jeder εij\varepsilon_{\text{ij}} stammt aus einer univariaten Normalbevölkerung mit Mittelwert Null, Varianz σ2\sigma^{2} und alle εij\varepsilon_{\text{ij}} sind unabhängig voneinander (bedingte Unabhängigkeit) und von den Modellkoeffizienten β1i\beta_{1i} Und β2i\beta_{2i} Diese Annahme ist plausibel, da es höchst unwahrscheinlich ist, dass die Variabilität der analytischen Methode von der getesteten Charge oder dem Zeitpunkt der Testdurchführung abhängt. Es wird weiterhin angenommen, dass der Regressionskoeffizientenvektor jeder Charge, 𝛃i\mathbf{\beta}_{i} , ist unabhängig von ihren und allen anderen Batch-Vektoren zufälliger Fehler, 𝛆k\mathbf{\varepsilon}_{k} .
Die RCR-Modellierung umfasst drei Schritte.
Schritt a) Anpassen eines einfachen linearen Regressionsmodells an die Daten jedes Batches
Die mit der Charge verknüpften Daten ii sind gekennzeichnet durch (tij,yij)\left( t_{\text{ij}},y_{\text{ij}} \right) , Wo yijy_{\text{ij}} repräsentiert die ithi^{\text{te}} gemessene Reaktion der Charge zum Zeitpunkt tjt_{j} , Wo j=1,⋯,nij = 1,\ \cdots,\ n_{i} Die einzelnen Zeitpunkte tjt_{j} kann zwischen den Chargen unterschiedlich sein, ebenso wie die Gesamtzahl der Zeitpunkte nin_{i} Die Designmatrix 𝐗i\mathbf{X}_{i} für Batch ii kann wie folgt in Matrixform geschrieben werden.
𝐗i=[1ti1⋮⋮1tini]\mathbf{X}_{i} = \begin{bmatrix} 1 & t_{i1} \\ \vdots & \vdots \\ 1 & t_{in_{i}} \\ \end{bmatrix}
Diese Matrix wird normalisiert und bezeichnet durch 𝐌i\mathbf{M}_{i} .
𝐌i=(𝐗i′𝐗i)−1\mathbf{M}_{i} = \left( \mathbf{X}_{i}^{'}\mathbf{X}_{i} \right)^{- 1}
Die Schätzungen für die Abschnitte βi1\beta_{i1} , die Pisten βi2\beta_{i2} , der "mittlere quadratische Fehler" der Regression MSEi=σiy^2\text{MSE}_{i} = \sigma_{i\hat{y}}^{2} und die Freiheitsgrade dfi=(ni−2)\text{df}_{i} = \left( n_{i} - 2 \right) verbunden mit MSEi\text{MSE}_{i} werden durch die Anpassung eines einfachen linearen Regressionsmodells an die Daten jeder Charge ermittelt. Die Achsenabschnitte und Steigungen (𝛃1,𝛃2)′\left( \mathbf{\beta}_{1},\mathbf{\beta}_{2} \right)^{'} werden geschätzt durch
𝐛i=(𝐗i′𝐗i)−1𝐗i′Undi\mathbf{b}_{i} = \left( \mathbf{X}_{i}^{'}\mathbf{X}_{i} \right)^{- 1}\mathbf{X}_{i}^{'}\mathbf{y}_{i}.
Schritt b) Schätzung der Fehler-Varianz-Kovarianz-Matrix
Die Schätzung der Fehler-Varianz-Kovarianz-Matrix der Zufallskoeffizienten beginnt mit der Schätzung der gepoolten MSE\text{MSE} aller Chargen, d.h. MSEPool\text{MSE}_{\text{Pool}} , wie folgt.
MSEPool=σ^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}}
Der Zähler in dieser Gleichung kann wie folgt ausgedrückt werden.
dfi•MSEi=SSEi=𝛆^i′𝛆^i=(Undi−𝐗i𝐛i)′(Undi−𝐗i𝐛i)\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)
Die Stichproben-Varianz-Kovarianz-Matrix 𝐒bb\mathbf{S}_{\text{bb}} der geschätzten Abschnitte und Neigungen (𝛃1,𝛃2)′\left( \mathbf{\beta}_{1},\mathbf{\beta}_{2} \right)^{'} wird wie folgt berechnet.
𝐒bb=1n−1∑i=1n(𝐛i−β^GZT)(𝐛i−β^GZT)′\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)^{'}
Woβ^GZT=1n∑i=1n𝐛i{\hat{\beta}}_{\text{ULS}} = \frac{1}{n}\sum_{i = 1}^{n}\mathbf{b}_{i} , also der Mittelwertvektor der Koeffizienten, also Achsenabschnitte und Steigungen (ULS steht für "Unweighted Least-Squares"). Nun die Varianz-Kovarianz-Matrix 𝚺^BB{\hat{\mathbf{\Sigma}}}_{\text{ββ}} kann wie folgt geschätzt werden.
𝚺^BB=𝐒bb−σ^2n•∑i=1n(𝐗i′𝐗i)−1=𝐒bb−σ^2•𝐌¯=[σβ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{bmatrix}
Wo 𝐌¯=1n•∑i=1n𝐌i\overset{\overline{}}{\mathbf{M}} = \frac{1}{n} \bullet \sum_{i = 1}^{n}\mathbf{M}_{i} , also die mittlere Modellvarianz-Kovarianzmatrix. Die Fehlervarianz σ^2{\hat{\sigma}}^{2} schätzt die Varianz der analytischen Methode. Die Achsenabschnittsvarianzkomponente σβ12\sigma_{\beta_{1}}^{2} stellt die innerhalb einer Charge beobachtete Varianz der bei der Produktfreigabe beobachteten Reaktion dar, die ausschließlich auf den Herstellungsprozess zurückzuführen ist, d. h. ohne die Varianz, die auf die analytische Methode zurückzuführen ist. Die Steigungsvarianzkomponente σβ22\sigma_{\beta_{2}}^{2} stellt die Varianz der Abbauraten zwischen den Chargen dar.
Da die Varianz-Kovarianz-Matrix 𝚺^BB{\hat{\mathbf{\Sigma}}}_{\text{ββ}} Wird die Differenz zweier Matrizen berechnet, ist das Ergebnis möglicherweise nicht positiv definit, d. h. der Achsenabschnitt und/oder die Varianzkomponente(n) der Steigung können negativ sein. Eine mögliche Lösung hierfür ist das Ersetzen der negativen Werte durch 0. Dies ist eine einfache Erste-Hilfe-Methode für negative Varianzschätzungen und entspricht der Umwandlung eines Zufallseffekts in einen festen Effekt. Sind beide Varianzen null, entspricht das RCR-Modell dem Ordinary-Least-Squares-Modell (OLS).
Schritt c) Schätzung des Koeffizientenmittelwertvektors mit einem Schätzverfahren für gewichtete kleinste Quadrate (WLS)
Die Schätzung des Koeffizientenmittelwertvektors beginnt mit der Berechnung der Schätzung von 𝐖i\mathbf{W}_{i} ,
𝐖i=(𝚺^BB+σ^2•𝐌i)−1\mathbf{W}_{i} = \left( {\hat{\mathbf{\Sigma}}}_{\text{ββ}} + {\hat{\sigma}}^{2} \bullet \mathbf{M}_{i} \right)^{- 1}
Dies entspricht dem Kehrwert der Varianz der Regressionsparameterschätzung für die ithi^{\text{te}} Charge. Basierend auf dieser Gleichung 2×i2 \times i Die dimensionale Matrix der Achsenabschnitts- und Steigungskoeffizientenschätzungen, d. h. die gewichtete Kleinstquadrate-Schätzung, wird nun durch die folgende Gleichung erhalten:
𝛃^WLS=(∑i=1n𝐖i)−1(∑i=1n𝐖i𝐛i)=𝛀(∑i=1n𝐖i𝐛i)\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)
Wo 𝛀\mathbf{\Omega} ist eine Schätzung der Varianz des gewichteten Kleinstquadrate-Schätzers. Der Durchschnitt der Achsenabschnittsschätzungen stellt die über den Herstellungsprozess gemittelte Reaktion bei der Produktfreigabe dar, und der Durchschnitt der Steigungsschätzungen stellt die gemeinsame Steigung dar.
Toleranzintervall (TI) für das RCR-Modell
Die RCR-Modellkoeffizienten β1\beta_{1} Und β2\beta_{2} beschreiben den allgemeinen Trend, d. h. den gemeinsamen Trend der historischen Chargen. Der TI für das RCR-Modell kann mithilfe der Schätzung berechnet werden y^j{\hat{y}}_{j} für die Regressionslinie und ihren Standardfehler σy^,RCR\sigma_{\hat{y},RCR} nach der von Scholz und Vangel [5] vorgeschlagenen Methode wie folgt. Ihre Methode verwendet das Konzept der effektiven Stichprobengröße.
y^j±k•σy^,RCR{\hat{y}}_{j} \pm k \bullet \sigma_{\hat{y},\text{RCR}}
Der Fehlerterm σy^,RCR\sigma_{\hat{y},RCR} wird berechnet durch
σy^,RCR=D(𝐭(𝚺^BB+1n𝛀)𝐭′+σ^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)
Wo 𝐭=[1t1⋮⋮1tk],kϵ N\mathbf{t} = \begin{bmatrix}
1 & t_{1} \\
\vdots & \vdots \\
1 & t_{k} \\
\end{bmatrix},\ k\ \epsilon\mathbb{\text{\ N}} , Und DD ist die Diagonale des Arguments. Der Faktor kk ist gegeben durch
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}
wobei der Faktor tn*−1,zp•n*,γt_{n^{*} - 1,z_{p} \bullet \sqrt{n^{*}},\gamma} ist die γ\Gamma Quantil der t -Verteilung mit n*−1n^{*} - 1 Freiheitsgrade und der Nichtzentralitätsparameter zp•n*z_{p} \bullet \sqrt{n^{*}} , Wo zpz_{p} ist die pp Quantil der Standardnormalverteilung. Der Parameter n*n^{*} ist die effektive Stichprobengröße, gegeben durch
n*=[σb2σb2+σe2•∑i=1nb(nin)2+1n•σe2σb2+σe2]−1=[ρ•1f+1+(1−ρ)•1n]−1n^{*} = \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}
wobei der Parameter ff und das Varianzverhältnis ρ\rho sind definiert durch
| f=1∑i=1nb(nin)2−1f = \frac{1}{\sum_{i = 1}^{n_{b}}\left( \frac{n_{i}}{n} \right)^{2}} - 1 |
ρ=σb2σb2+σe2\rho = \frac{\sigma_{b}^{2}}{\sigma_{b}^{2} + \sigma_{e}^{2}} |
Wo σb2\sigma_{b}^{2} ist die Varianz zwischen den Chargen, σe2\sigma_{e}^{2} ist die Varianz innerhalb der Charge (oder Methodenvarianz), nin_{i} ist die Anzahl der Messungen pro Charge ii , dh i=1,⋯,nbi = 1,\ \cdots,\ n_{b} , nbn_{b} ist die Anzahl der historischen Chargen und nn ist die Gesamtzahl der Proben, d. h. n=∑i=1nbnin = \sum_{i = 1}^{n_{b}}n_{i} .
Die TI deckt p(100%)p\left( 100\% \right) der Bevölkerung mit einer Wahrscheinlichkeit von γ(100%)\gamma\left( 100\% \right) Das Konzept der effektiven Stichprobengröße berücksichtigt, dass die Daten innerhalb einer Charge stärker korreliert sind als die Daten zwischen den Chargen, was den Anteil unabhängiger Informationen verringert. Aus diesem Grund gilt immer: n*≤nn^{*} \leq n Der Idealfall n*=nn^{*} = n wird erreicht, wenn die Daten innerhalb der Charge völlig unkorreliert sind.
Implementierung von RCC/RCR in JMP
Das JSL-Skript, das das RCC/RCR-Verfahren implementiert, ist in mehrere Teile gegliedert.
Zunächst müssen die Referenz- und Testchargennamen sowie die verschiedenen Variablennamen für die Antwort, die Zeit, die Chargen und die Lagerbedingungen definiert werden.
Das RCR-Modell ist wie oben beschrieben aufgebaut (vereinfacht nach Carter und Yang [1]).
Der TI für das RCR-Modell wird unter Verwendung der von Scholz und Vangel [5] vorgeschlagenen Methode konstruiert.
Es wird ein Berichtsfenster generiert, das die berechneten Parameter in tabellarischer und grafischer Form zusammenfasst.
Beispiel
Zur Überprüfung der Skriptfunktionalität wurden verschiedene Datensätze für neun historische und eine aktuelle Charge generiert. Der folgende Codeausschnitt führt Schritt a ) der RCR-Modellanpassung aus, d. h. die Achsenabschnitte (a, 𝛃1\mathbf{\beta}_{1} ), Steigungen (b, 𝛃2\mathbf{\beta}_{2} ), (Wurzel-)mittlere quadratische Fehler ((RMSE ) MSE, MSEi\text{MSE}_{i} ), Freiheitsgrade (df, dfi\text{df}_{i} ) und Anzahl der Beobachtungen (n, nin_{i} ) der ii historische Batches werden gesammelt und in Vektoren der Länge gespeichert nbn_{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
);
Schritt b ) beginnt mit der Schätzung des gepoolten MSE (MSE.pool, MSEPool\text{MSE}_{\text{Pool}} ). Anschließend wird die mittlere Modellvarianz-Kovarianzmatrix (M.bar, 𝐌¯\overset{\overline{}}{\mathbf{M}} ) geschätzt, die dann mit der Stichproben-Varianz-Kovarianz-Matrix (S, 𝐒bb\mathbf{S}_{\text{bb}} ), um die Varianz-Kovarianz-Matrix (Sigma.hat, 𝚺^BB{\hat{\mathbf{\Sigma}}}_{\text{ββ}} ).
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.
In Schritt c ) werden die RCR-Modellkoeffizienten ab.hat ( 𝛃^WLS{\hat{\mathbf{\beta}}}_{\text{WLS}} ) werden mit Hilfe des folgenden Codeausschnitts geschätzt.
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 );
Der nächste Codeausschnitt zeigt die Konstruktion des TI für das RCR-Modell nach Scholz und Vangel [5]. Für die Konstruktion des Intervalls werden die im Vektor ab.hat.bar gespeicherten Schätzwerte für den durchschnittlichen Achsenabschnitt und den Steigungskoeffizienten verwendet.
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 ) );
Im letzten Teil des Skripts werden die Ergebnisse für die Anzeige in einem Berichtsfenster aufbereitet. Ein Beispielbericht ist in Abbildung 2 dargestellt.
Die im Berichtsfenster zusammengefassten Ergebnisse ermöglichen die Beantwortung der zu Beginn von Kapitel 3 gestellten Fragen wie folgt: 1) Da der 18-Monats-Datenpunkt (d. h. die jüngste Messung) der aktuellen Charge außerhalb des an die Daten der historischen Chargen angepassten TI liegt, muss der Schluss gezogen werden, dass die aktuelle Charge OOE / OOT ist, und 2) da der 18-Monats-Datenpunkt der aktuellen Charge außerhalb des PI der aktuellen Charge fällt, muss der Schluss gezogen werden, dass die aktuelle Charge in Bezug auf die aktuelle Charge auch OOE / OOT ist. Dieselbe Schlussfolgerung hätte bereits am vorhergehenden Zeitpunkt gezogen werden müssen, obwohl der 12-Monats-Zeitpunkt innerhalb des PI der aktuellen Charge liegt. Da dieser Punkt jedoch außerhalb des an die Daten der historischen Chargen angepassten TI liegt, muss die Gesamtschlussfolgerung am 12-Monats-Zeitpunkt gewesen sein, dass dies ein OOE / OOT-Punkt ist.
Wie zu Beginn von Kapitel 3 erwähnt, ist es sehr wahrscheinlich, dass die einzelnen historischen Chargen hinsichtlich ihrer Achsenabschnitte und Steigungen variieren und dass aus diesem Grund das RCR-Modell dem gewöhnlichen Kleinstquadrate-Modell überlegen ist. Es lassen sich fünf Fälle unterscheiden: Fall I: keine Achsenabschnittsvariation, keine Steigungsvariation; Fall II: Achsenabschnittsvariation, keine Steigungsvariation; Fall III: keine Achsenabschnittsvariation, Steigungsvariation; Fall IV: Achsenabschnittsvariation, Steigungsvariation; und Fall V: Nichtlinearität. Die Ergebnisse sind in Abbildung 3 für alle fünf Fälle zusammengefasst. Die Grafiken in Abbildung 3 zeigen, dass das RCR-Modell die Daten in den Fällen besser darstellt, in denen die Achsenabschnitte und/oder Steigungen variieren, und in den Fällen, in denen keine Achsenabschnitts- und Steigungsvariabilität vorliegt, der Basismethode sehr ähnlich ist.
Figure_2Abbildung_2Abbildung_2
Abbildung 2 Ausgabe des Skripts zur Implementierung der RCC/RCR-Methode
Das Fenster ist in die Bereiche „Historische Batch-Bewertung“, „Aktuelle Batch-Bewertung (Einzelne Modellparameter)“ und die grafische Darstellung unterteilt, die die historischen und aktuellen Batch-Daten zusammenfasst. Die Daten der historischen Batches werden durch blaue Punkte () und die Daten der aktuellen Batches durch rote Kreuze () dargestellt. Der an die Daten der historischen Batches angepasste TI wird durch das durch die blauen gepunkteten Linien begrenzte Band dargestellt, der an die Daten der aktuellen Batches angepasste PI (jedoch ohne Berücksichtigung der aktuellsten Beobachtung) durch das durch die roten gestrichelten Linien begrenzte Band.
Abbildung 3 Vergleich der RCR-Modellintervalle und der grundlegenden linearen Regressionsmodellintervalle in verschiedenen Situationen
Die RCR-Modellanpassung wird durch die blaue durchgezogene Regressionslinie und die blauen gepunkteten Linien des entsprechenden Toleranzintervalls (95 % Konfidenz und 95 % Abdeckung) dargestellt. Die grundlegende Modellanpassung wird durch die violette gestrichelte Regressionslinie und den violetten Farbton des entsprechenden Vorhersageintervalls (95 % Konfidenz) dargestellt, d. h. die Konfidenzgrenzen für einen einzelnen vorhergesagten Wert. Die grauen gestrichelten Linien in Feld Va stellen die nichtlineare Anpassung dar, die auf Grundlage der quadrierten Antwort berechnet wurde. Die sechs Felder vergleichen die RCR-Modellintervalle und die grundlegenden linearen Regressionsmodellintervalle in den folgenden Situationen: Feld I: Fall „keine Achsenabschnittsvariation, keine Steigungsvariation“; Feld II: Fall „Achsenabschnittsvariation, keine Steigungsvariation“; Feld III: Fall „keine Achsenabschnittsvariation, Steigungsvariation“; Feld IV: Fall „Achsenabschnittsvariation, Steigungsvariation“; Feld Va: Fall „Nichtlinearität“; Feld Vb: Fall „Nichtlinearität“ nach Transformation, d. h. Quadrierung, der Antwortvariablen.
Abschluss
Das in diesem Manuskript vorgestellte JMP-Skript ist ein geeignetes und robustes Werkzeug zur Bewertung von Stabilitätsdaten einer aktuellen Arzneimittelcharge hinsichtlich OOE- und OOT-Ergebnissen. Voraussetzung ist die Verfügbarkeit historischer Stabilitätsdaten von mindestens drei Chargen mit jeweils mindestens vier Zeitpunkten.
Bibliographie
Carter, RL, und Yang, MCK Großstichprobeninferenz in Regressionsmodellen mit Zufallskoeffizienten. Kommunikation in der Statistik – Theorie und Methoden ( 1986) 15 (8): 2507-2525.
Conover, WJ (1980), Praktische nichtparametrische Statistik, New York: John Wiley and Sons, Inc.
ICH-Leitlinie Q1A(R2), Stabilitätsprüfung neuer Arzneimittelsubstanzen und -produkte, Version Schritt 4, 6. Februar 2003. LINK
Mandel, BJ Regressionskontrollkarte. J Qual Technol (1969) 1 ( 1
1-9.
Scholz, F., und Vangel, M. Toleranzgrenzen und Cpk-Vertrauensgrenzen unter Batch-Effekten. Veröffentlicht in: Advanced in Stochastic Models for Reliability, Quality and Safety. Herausgegeben von Kahle, W., von Collani, E., Franz, J., und Jensen , U. Birkhäuser, Boston, 1998, 361-379.
Shewhart, WA (1939). Statistische Methode aus der Sicht der Qualitätskontrolle. (Deming, WE). Washington, DC, Graduiertenschule, Landwirtschaftsministerium.
Standardarbeitsanweisung – Leitfaden zur Labordatenverwaltung – Ergebnisse, die außerhalb der Erwartungen (OOE) und außerhalb des Trends (OOT) liegen. Arbeitsgruppe Analytische Qualitätskontrolle der European Compliance Academy (ECA), Christopher Burgess, Entwurf V 0.3, 2015.
Britische Arzneimittel- und Gesundheitsprodukte-Regulierungsbehörde (MHRA), Out Of Specification Investigations, Präsentationsnotizen und Teilnehmerpaket, 28. August 2013. LINK
WHO-Reihe technischer Berichte, Nr. 953, Anhang 2 Stabilitätsprüfung von pharmazeutischen Wirkstoffen und Fertigarzneimitteln, 2009. LINK