Come implementare PSA ( Ricerca della salita più ripida). in modalità JMP DOE?
Ciao amico mio,
grazie mille per il tuo aiuto.
Non ne sono del tutto sicuro, ma penso che tu stia parlando di un approccio sequenziale alla sperimentazione in cui (sfruttando i risultati di un primo progetto) aumenti quel progetto individuando nuovi punti lungo la linea di salita più ripida. Penso che ci siano molti che suggerirebbero che ci sono modi migliori per aumentare un progetto, anche se "migliore" dipenderà dalla tua situazione particolare.
Nonostante ciò, se si desidera utilizzare l'approccio, questo script potrebbe iniziare. Fai 'File> Nuovo> Nuovo script', copia il JSL, quindi 'Modifica> Esegui script':
// ian.cox@jmp.com: 18Sep2010
// Quick demo of design augmentation by steepest ascent
// Make some random data from a main effects model with no interaction
dt1 = New Table("Original Design",
Add Rows( 10 ),
New Column( "x1", Numeric, Continuous, Formula( Random Uniform(-1, 1) ) ),
New Column( "x2", Numeric, Continuous, Formula( Random Uniform(-1, 1) ) ),
New Column( "y", Numeric, Continuous, Formula( (2 * :x1 + 3 * :x2) + 0.1 * Random Normal() ) )
);
// Fit the model
fmd = dt1 << Fit Model(
Y( :y ),
Effects( :x1, :x2 ),
Personality( Standard Least Squares ),
Emphasis( Effect Leverage ),
Invisible
);
fmo = fmd << Run;
// Get what we need
fmr = fmo << Report;
pn = fmo << GetParameterNames;
pe = fmo << GetEstimates;
ps = fmo << GetStdErrors;
Print(pn, pe, ps);
// Close the (invisible) report
fmr << CloseWindow;
// Take x1 to be the base factor
X2OverX1 = pe[3]/pe[2];
// Specify number of steps to take and x1 step size for each
n = 6;
delX1 = 0.3;
// Get points on the path of steepest ascent into a new 'design' table
x1pts = J(n, 1, .);
x2pts = J(n, 1, .);
for (p=1, p<=n, p++,
x1pts[p] = delX1 * p;
x2pts[p] = x1pts[p] * X2OverX1;
);
dt2 = AsTable(x1pts||x2pts);
dt2 << SetName("Path of Steepest Ascent from Fit of "||(dt1 << GetName));
x1Col = Column(dt2, "Col1") << SetName("x1");
x2Col = Column(dt2, "Col2") << SetName("x2");
// Concatenate the two design tables
dt1 << NewColumn("Design", Numeric, Ordinal, Values(J(Nrow(dt1), 1, 1)));
dt2 << NewColumn("Design", Numeric, Ordinal, Values(J(Nrow(dt2), 1, 2)));
dt3 = dt1 << Concatenate(dt2, Output Table( "Augmented Design" ));
// Use graph builder to show the final result
dt3 = Graph Builder(
Show Control Panel( 0 ),
Variables( X( :x1 ), Y( :x2 ), Color( :Design ) ),
Elements( Points( X, Y, Color, Legend( 1 ) ) ),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model( 1, Properties( 1, {Line Color( 67 )} ) )}
),
Dispatch( {}, "Graph Builder", FrameBox, {Marker Size( 4 )} )
)
);