cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Browse apps to extend the software in the new JMP Marketplace
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
Level X

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.