cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
JMP is taking Discovery online, April 16 and 18. Register today and join us for interactive sessions featuring popular presentation topics, networking, and discussions with the experts.
Choose Language Hide Translation Bar
Xuhaidan
Level I

Steepest ascent search

How to implement PSA (Steepest ascent search) analysis in JMP DOE mode?

2 REPLIES 2
ian_jmp
Staff

Re: Steepest ascent search

I'm not completely sure, but I think you are talking about a sequential approach to experimentation in which  (by exploiting the results from a first design) you augment that design by picking new points along the line of steepest ascent. I think that there are many who would suggest that there are better ways to augment a design, though 'better' will depend on your particular situation.

 

In spite of this, if you want to use the approach this script might get you started. Do 'File > New > New Script', copy the JSL, then 'Edit > Run 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 )} )
				)
			);
Xuhaidan
Level I

Re: Steepest ascent search

Hi my frend,

thanks very very much for your help.