cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
The Discovery Summit 2025 Call for Content is open! Submit an abstract today to present at our premier analytics conference.
See how to use to use Text Explorer to glean valuable information from text data at April 25 webinar.
Choose Language Hide Translation Bar
View Original Published Thread

Steepest ascent search

Xuhaidan
Level I

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.