Vielen Dank an Hadley und Statman für Ihre Antworten. Wir werden den vorgeschlagenen Ansatz ausprobieren, möchten aber dennoch etwas zusätzlichen Kontext liefern.
Ich stimme Statman darin zu, dass das Design zu schwach ist. Dies ist definitiv der Beginn einer Reise und es ist sehr unwahrscheinlich, dass das nächste von uns entworfene DOE uns das endgültige Modell liefern wird, aber wir wollen näher kommen und neben den Optimierungsvariablen so viele Daten wie möglich erfassen. Vielleicht erweist sich das DOE nur als eine Möglichkeit, einen größeren Datensatz aufzubauen, den wir mit maßgeschneiderten Modellen analysieren können.
- Sie schlagen vor, dass Sie ein „Experiment zur mittleren Optimierung“ durchführen möchten. Was ist das?
Wir optimieren die Rezeptur für ein Bakterienwachstumssubstrat
- 4-5 Variablen sind eine ziemlich große Anzahl von Variablen zur Optimierung. Haben Sie bereits ein Erstbestellungsmodell?
Wir prüfen immer noch die relevantesten Faktoren, daher die große Anzahl an Variablen. Wir haben ein definitives Screening-Design mit 11 Faktoren durchgeführt, das es uns ermöglichte, die 5 Variablen mit dem größten Effekt auszuwählen und einige auszuschließen, die wahrscheinlich nicht relevant sind. Wir haben einige Faktoren gesehen, bei denen das Optimum näher am „Mittelpunkt“ des DSD-Designs lag. Wir bauen auf diesen Beobachtungen auf, um die nächste Reihe von Experimenten mit angepassten Faktorniveaus durchzuführen. Zur Veranschaulichung habe ich unten die Hauptdarstellung der Residuen der endgültigen Ergebnisse des Screening-Designs eingefügt.

- Was meinen Sie mit „zuverlässigeren Ergebnissen“?
Trotz unserer besten Bemühungen, Schwankungen in der Produktion zu kontrollieren, stellen wir in unserem Prozess von Charge zu Charge erhebliche Geräusche fest. Wir haben alle nicht rezeptbasierten Variationsquellen behoben, die wir kontrollieren können, und erhalten dennoch keine Stabilität (biologische Systeme machen Spaß). Deshalb haben wir beschlossen, die Bestandteile des Rezepts zu ändern, um zu sehen, ob wir stabilere Betriebsbedingungen erreichen können, mit hoffentlich einigen Optimierungen auf dem Weg, was ein glücklicher Zufall ist.
- Sie schlagen vor, dass Sie den Lärm zwischen Inkubator und zwischen Tagen berücksichtigen möchten und wissen, dass dieser einen Einfluss hat? Was ist mit Rausch-nach-Faktor-Wechselwirkungen? Wie nützlich ist ein optimiert Modell, wenn es sich von Inkubator zu Inkubator und von Tag zu Tag ändert?
Ich stimme zu, dass es möglicherweise Wechselwirkungen gibt, aber auf der Produktionsebene ist die Situation dieselbe, sodass unser Scale-Down-Modell nützlich zu sein scheint. Für das statistische Modell besteht definitiv die Möglichkeit, dass einige dieser Faktoren mit den Variablen interagieren, die wir steuern können.
- Was verändert sich von Inkubator zu Inkubator?
Wir wissen, dass die Temperaturkontrolle nicht perfekt ist, deshalb habe ich darüber nachgedacht, dies als Kovariate zu berücksichtigen. Was die täglichen Variationen angeht, haben wir keine Ahnung.
- Wie lautet Ihre vorhergesagte Rangfolge der Modelleffekte? Berücksichtigen Sie Haupteffekte, lineare 2. Ordnung und quadratische Effekte 2. Ordnung. Auf diese Weise können Sie die geeignete Auflösung und das richtige Polynom für Ihr Design ermitteln.
Wir wissen nicht a priori, welche Faktoren einen quadratischen Effekt haben. Basierend auf biologischen Erkenntnissen haben wir einen starken Verdacht, hoffen aber, mit diesem Experiment der Antwort näher zu kommen. Ich bin mir ziemlich sicher, dass wir nach diesem Durchlauf nicht alles bekommen werden, was wir brauchen, um ein richtiges statistisches Modell zu erstellen. Unser Ziel ist es, dies iterativ zu erreichen.
- Blockieren kann nützlich sein
Könnten Sie zeigen, wie diese zweistufige Blockierung in JMP genau erfolgt? Die Einbeziehung der Inkubatoren und Tage als separate kategoriale Faktoren fühlt sich irgendwie falsch an. Ich habe versucht, zwei Blöcke einzurichten, aber ich verstehe nicht, wie JMP die Anzahl der Läufe in einem Block berechnet, und ich kann anscheinend keine Einschränkung festlegen, dass jeder Inkubator genau 4 Läufe pro Tag benötigt.
- Teilt das Partitionsrauschen anhand eines Entwurfsfaktors auf, das ist also nicht das, was Sie vorschlagen.
Vielen Dank für die Aufklärung!
Hallo,
Unter Berücksichtigung Ihrer Beschreibung des Problems und der von Ihnen vorgeschlagenen Lösung @statman In Punkt 5 habe ich dieses Design erstellt (Tabellenskript unten).Ich habe mithilfe von Custom Design eine Antwortoberfläche für 32 Läufe mit 5 kontinuierlichen Faktoren erstellt und die Läufe dann in zufällige Blöcke der Größe 4 gruppiert (entsprechend der Anzahl der Flaschen pro Inkubator und Tag).In der Tabelle habe ich manuell eine Variable „Tag“ hinzugefügt und „Inkubator“ so angepasst, dass sich 1–4 an beiden Tagen wiederholen.Es wäre dann möglich, die zufällige Variation zu berücksichtigen, indem man das Modell wie in der Abbildung dargestellt aufstellt.
Es würde mich sehr interessieren, ob @statman oder jemand anderes hat eine Meinung zu diesem Ansatz.

New Table( "day and incubator block design",
Add Rows( 32 ),
New Table Variable( "Design", "Custom Design" ),
New Table Variable( "Criterion", "I Optimal" ),
New Script(
"Model",
Fit Model(
Effects(
:incubator & Random, :X1 & RS, :X2 & RS, :X3 & RS, :X4 & RS,
:X5 & RS, :X1 * :X1, :X1 * :X2, :X2 * :X2, :X1 * :X3, :X2 * :X3,
:X3 * :X3, :X1 * :X4, :X2 * :X4, :X3 * :X4, :X4 * :X4, :X1 * :X5,
:X2 * :X5, :X3 * :X5, :X4 * :X5, :X5 * :X5
),
Y( :Y )
)
),
New Script(
"Evaluate Design",
DOE( Evaluate Design, X( Random Block, :X1, :X2, :X3, :X4, :X5 ) )
),
New Script(
"Fit Mixed",
Fit Model(
Y( :Y ),
Random Effects( :incubator ),
Effects(
:X1 & RS, :X2 & RS, :X3 & RS, :X4 & RS, :X5 & RS, :X1 * :X1,
:X1 * :X2, :X2 * :X2, :X1 * :X3, :X2 * :X3, :X3 * :X3, :X1 * :X4,
:X2 * :X4, :X3 * :X4, :X4 * :X4, :X1 * :X5, :X2 * :X5, :X3 * :X5,
:X4 * :X5, :X5 * :X5
),
NoBounds( 1 ),
Personality( "Mixed Model" ),
Run
)
),
New Script(
"DOE Dialog",
DOE(
Custom Design,
{Add Response( Maximize, "Y", ., ., . ),
Add Factor( Continuous, -1, 1, "X1", 0 ),
Add Factor( Continuous, -1, 1, "X2", 0 ),
Add Factor( Continuous, -1, 1, "X3", 0 ),
Add Factor( Continuous, -1, 1, "X4", 0 ),
Add Factor( Continuous, -1, 1, "X5", 0 ), Set Random Seed( 1910031543 ),
Number of Starts( 105 ), Add Term( {1, 0} ), Add Term( {1, 1} ),
Add Term( {2, 1} ), Add Term( {3, 1} ), Add Term( {4, 1} ),
Add Term( {5, 1} ), Add Term( {1, 2} ), Add Term( {1, 1}, {2, 1} ),
Add Term( {2, 2} ), Add Term( {1, 1}, {3, 1} ),
Add Term( {2, 1}, {3, 1} ), Add Term( {3, 2} ),
Add Term( {1, 1}, {4, 1} ), Add Term( {2, 1}, {4, 1} ),
Add Term( {3, 1}, {4, 1} ), Add Term( {4, 2} ),
Add Term( {1, 1}, {5, 1} ), Add Term( {2, 1}, {5, 1} ),
Add Term( {3, 1}, {5, 1} ), Add Term( {4, 1}, {5, 1} ),
Add Term( {5, 2} ), Set Runs Per Random Block( 4 ),
Set Sample Size( 32 ), Optimality Criterion( 2 ),
Simulate Responses( 0 ), Save X Matrix( 0 ), Make Design}
)
),
New Column( "Day",
Character,
"Nominal",
Set Property( "Design Role", Design Role( "Random Block" ) ),
Set Values(
{"1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1",
"1", "1", "2", "2", "2", "2", "2", "2", "2", "2", "2", "2", "2", "2",
"2", "2", "2", "2"}
)
),
New Column( "incubator",
Character,
"Nominal",
Set Property( "Design Role", DesignRole( Random Block ) ),
Set Property(
"Value Order",
{Custom Order( {"1", "2", "3", "4", "5", "6", "7", "8"} )}
),
Set Values(
{"1", "1", "1", "1", "2", "2", "2", "2", "3", "3", "3", "3", "4", "4",
"4", "4", "1", "1", "1", "1", "2", "2", "2", "2", "3", "3", "3", "3",
"4", "4", "4", "4"}
)
),
New Column( "X1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Property( "Coding", {-1, 1} ),
Set Property( "Design Role", DesignRole( Continuous ) ),
Set Property( "Factor Changes", Easy ),
Set Values(
[-1, -1, 1, 0, 1, 0, -1, 0, 1, 0, -1, 1, -1, 0, 0, 1, 1, 0, -1, 1, -1, 1,
-1, 1, -1, 1, 0, -1, 0, 1, 0, -1]
)
),
New Column( "X2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Property( "Coding", {-1, 1} ),
Set Property( "Design Role", DesignRole( Continuous ) ),
Set Property( "Factor Changes", Easy ),
Set Values(
[-1, 0, 1, 0, -1, 1, 1, 0, -1, 0, -1, 1, 1, -1, 0, 1, -1, 1, 0, -1, 0, 1,
1, -1, -1, 0, 1, -1, 0, 1, -1, 1]
)
),
New Column( "X3",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Property( "Coding", {-1, 1} ),
Set Property( "Design Role", DesignRole( Continuous ) ),
Set Property( "Factor Changes", Easy ),
Set Values(
[-1, 0, 1, 0, -1, -1, 1, 0, 1, -1, 1, 0, -1, 0, 1, -1, 1, 1, -1, 0, 0, 1,
-1, -1, 1, 1, 0, -1, 0, -1, 1, 1]
)
),
New Column( "X4",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Property( "Coding", {-1, 1} ),
Set Property( "Design Role", DesignRole( Continuous ) ),
Set Property( "Factor Changes", Easy ),
Set Values(
[1, -1, 1, 0, 1, 1, 0, 0, 1, -1, -1, 0, 1, 0, 1, 1, -1, -1, 0, -1, 1,
-1, -1, 0, 1, 0, 0, -1, 1, -1, 0, 1]
)
),
New Column( "X5",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Property( "Coding", {-1, 1} ),
Set Property( "Design Role", DesignRole( Continuous ) ),
Set Property( "Factor Changes", Easy ),
Set Values(
[1, 0, -1, -1, -1, 0, -1, -1, 1, 1, 1, 0, -1, 0, 0, 1, -1, -1, 0, 1, 1,
1, 1, 0, -1, 0, 1, -1, 0, -1, 1, 1]
)
),
New Column( "Y",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Property(
"Response Limits",
{Goal( Maximize ), Lower( . ), Upper( . ), Importance( . )}
),
Set Values(
[., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., .,
., ., ., ., ., ., ., .]
)
)
)