cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Choose Language Hide Translation Bar
0 Kudos

Raster plots or other visualization tools to help model evaluation and selection for DoEs

What inspired this wish list request? I came throught the LinkedIn post (and associated publication) from Peter Goos (Model selection for designed experiments with mixed integer programming: MIO and raster plots | Link...), and I found the raster plot a very efficient visualization to help select the most relevant terms in a model. 

 

Here is an example done on the dataset "2x3x4 Factorial" available in JMP Sample Index, where the evaluation metric can be changed (between R², RMSE, AICc and BIC) and is used to order the different models. The raster plot clearly shows where the different models agree or disagree in the inclusion of terms :

Victor_G_0-1709921611174.png

 

What is the improvement you would like to see? If possible in some platforms (for example in Fit Model with Stepwise personality), it would be great to have this kind of visualization to help compare and select the most relevant terms in the model(s). This visualization example can be associated with my previous wish list : https://community.jmp.com/t5/JMP-Wish-List/DoE-Fit-Model-Stepwise-Interactive-visualization-of-model...

@mia_stephens this wish is similar to the previous one where we discussed about the value of visualizations for models evaluation and selection (link above).

 

From the Stepwise platform, I used the "All Possible Models" option to generate different models with different terms presence.
The rest of the steps can be found in the following script (extracted from the log with some annotations added, sorry for the quality and length) and attached file :

// Combine similar TableBoxes into a Data Table (create a datatable based on the output from All Possible Models results)
// → Data Table( "Combined Data Table" )
Local( {obj},
	obj = Data Table( "2x3x4 Factorial" ) <<
	Fit Model(
		Y( :Y ),
		Effects( :X1, :X2, :X3, :X1 * :X2, :X1 * :X3, :X2 * :X3 ),
		Personality( "Stepwise" ),
		Run( Rules( "Whole Effects" ), All Possible Models( 8, 50 ) )
	);
	Report( obj )["All Possible Models", Table Box( 1 )] << Make Combined Data Table;
	obj << Close Window;
);

// Text to columns
Data Table( "Combined Data Table" ) << Text to Columns(
	columns( :Model ),
	Make Indicator Columns( 1 ),
	Delimiters( "," )
);

// Group columns
Data Table( "Combined Data Table" ) << Group Columns(
	"X1 etc.",
	{:X1, :"X1*X2{y-x}"n, :"X1*X2{z-y&x}"n, :"X1*X3{B&A-C}"n, :"X1*X3{B-A}"n,
	:"X1*X3{D-B&A&C}"n, :"X2{y-x}"n, :"X2{y-x}*X3{B&A-C}"n, :"X2{y-x}*X3{B-A}"n,
	:"X2{y-x}*X3{D-B&A&C}"n, :"X2{z-y&x}"n, :"X2{z-y&x}*X3{B&A-C}"n,
	:"X2{z-y&x}*X3{B-A}"n, :"X2{z-y&x}*X3{D-B&A&C}"n, :"X3{B&A-C}"n, :"X3{B-A}"n,
	:"X3{D-B&A&C}"n}
);

// Rename column group: X1 etc. → Terms
Data Table( "Combined Data Table" ) << Rename Column Group( "X1 etc.", "Terms" );

// Stack data table
// → Data Table( "Visualization table" )
Data Table( "Combined Data Table" ) << Stack(
	columns( Column Group( "Terms" ) ),
	Source Label Column( "Terms" ),
	Stacked Data Column( "Presence" ),
	Output Table( "Visualization table" )
);

// Change column modeling type: Presence (to facilitate the local data filter in graph builder used after)
Data Table( "Visualization table" ):Presence << Set Modeling Type( "Nominal" );

// Recode column: Model ID (to have models displayed by an ID instead of long names)
Local( {dt, col1},
	dt = Data Table( "Visualization table" );
	dt << Begin Data Update;
	col1 = dt << New Column( dt:Model );
	col1 << Set Name( "Model ID" );
	dt << Move Selected Columns( {col1}, after( dt:Model ) );
	col1 << Set Formula(
		Recode(
			:Model,
			{Num( _rcNow ), Map Value(
				_rcOrig,
				{"X1", 1, "X1*X2{y-x}", 2, "X1*X2{y-x},X1*X3{B&A-C}", 3,
				"X1*X2{y-x},X1*X3{B-A}", 4, "X1*X2{y-x},X1*X3{D-B&A&C}", 5,
				"X1*X2{y-x},X2{y-x}*X3{B&A-C}", 6, "X1*X2{y-x},X2{y-x}*X3{B-A}", 7,
				"X1*X2{y-x},X2{y-x}*X3{D-B&A&C}", 8,
				"X1*X2{y-x},X2{z-y&x}*X3{B&A-C}", 9, "X1*X2{y-x},X2{z-y&x}*X3{B-A}",
				10, "X1*X2{y-x},X2{z-y&x}*X3{D-B&A&C}", 11, "X1*X2{z-y&x}", 12,
				"X1*X2{z-y&x},X1*X2{y-x}", 13,
				"X1*X2{z-y&x},X1*X2{y-x},X1*X3{B&A-C}", 14,
				"X1*X2{z-y&x},X1*X2{y-x},X1*X3{B&A-C},X1*X3{B-A}", 15,
				"X1*X2{z-y&x},X1*X2{y-x},X1*X3{B&A-C},X2{y-x}*X3{B&A-C}", 16,
				"X1*X2{z-y&x},X1*X2{y-x},X1*X3{B&A-C},X2{y-x}*X3{B-A}", 17,
				"X1*X2{z-y&x},X1*X2{y-x},X1*X3{B&A-C},X2{y-x}*X3{D-B&A&C}", 18,
				"X1*X2{z-y&x},X1*X2{y-x},X1*X3{B&A-C},X2{z-y&x}*X3{B&A-C}", 19,
				"X1*X2{z-y&x},X1*X2{y-x},X1*X3{B&A-C},X2{z-y&x}*X3{B-A}", 20,
				"X1*X2{z-y&x},X1*X2{y-x},X1*X3{B&A-C},X2{z-y&x}*X3{D-B&A&C}", 21,
				"X1*X2{z-y&x},X1*X2{y-x},X1*X3{B-A}", 22,
				"X1*X2{z-y&x},X1*X2{y-x},X1*X3{B-A},X2{y-x}*X3{B&A-C}", 23,
				"X1*X2{z-y&x},X1*X2{y-x},X1*X3{B-A},X2{y-x}*X3{B-A}", 24,
				"X1*X2{z-y&x},X1*X2{y-x},X1*X3{B-A},X2{y-x}*X3{D-B&A&C}", 25,
				"X1*X2{z-y&x},X1*X2{y-x},X1*X3{B-A},X2{z-y&x}*X3{B&A-C}", 26,
				"X1*X2{z-y&x},X1*X2{y-x},X1*X3{B-A},X2{z-y&x}*X3{B-A}", 27,
				"X1*X2{z-y&x},X1*X2{y-x},X1*X3{B-A},X2{z-y&x}*X3{D-B&A&C}", 28,
				"X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C}", 29,
				"X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C}", 30,
				"X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B-A}", 31,
				"X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X2{y-x}*X3{B&A-C}", 32,
				"X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X2{z-y&x}*X3{D-B&A&C}", 33,
				"X1*X2{z-y&x},X1*X2{y-x},X2{y-x}*X3{B&A-C}", 34,
				"X1*X2{z-y&x},X1*X2{y-x},X2{y-x}*X3{B-A}", 35,
				"X1*X2{z-y&x},X1*X2{y-x},X2{y-x}*X3{D-B&A&C}", 36,
				"X1*X2{z-y&x},X1*X2{y-x},X2{z-y&x}*X3{B&A-C}", 37,
				"X1*X2{z-y&x},X1*X2{y-x},X2{z-y&x}*X3{B-A}", 38,
				"X1*X2{z-y&x},X1*X2{y-x},X2{z-y&x}*X3{D-B&A&C}", 39,
				"X1*X2{z-y&x},X1*X2{y-x},X2{z-y&x}*X3{D-B&A&C},X2{y-x}*X3{B&A-C}",
				40,
				"X1*X2{z-y&x},X1*X2{y-x},X2{z-y&x}*X3{D-B&A&C},X2{y-x}*X3{D-B&A&C}",
				41, "X1*X2{z-y&x},X1*X3{B&A-C}", 42,
				"X1*X2{z-y&x},X1*X3{B&A-C},X1*X3{B-A}", 43,
				"X1*X2{z-y&x},X1*X3{B&A-C},X2{y-x}*X3{B&A-C}", 44,
				"X1*X2{z-y&x},X1*X3{B&A-C},X2{y-x}*X3{B-A}", 45,
				"X1*X2{z-y&x},X1*X3{B&A-C},X2{y-x}*X3{D-B&A&C}", 46,
				"X1*X2{z-y&x},X1*X3{B&A-C},X2{z-y&x}*X3{B&A-C}", 47,
				"X1*X2{z-y&x},X1*X3{B&A-C},X2{z-y&x}*X3{D-B&A&C}", 48,
				"X1*X2{z-y&x},X1*X3{B-A}", 49,
				"X1*X2{z-y&x},X1*X3{B-A},X2{y-x}*X3{B&A-C}", 50,
				"X1*X2{z-y&x},X1*X3{B-A},X2{y-x}*X3{B-A}", 51,
				"X1*X2{z-y&x},X1*X3{B-A},X2{y-x}*X3{D-B&A&C}", 52,
				"X1*X2{z-y&x},X1*X3{B-A},X2{z-y&x}*X3{B&A-C}", 53,
				"X1*X2{z-y&x},X1*X3{B-A},X2{z-y&x}*X3{B-A}", 54,
				"X1*X2{z-y&x},X1*X3{B-A},X2{z-y&x}*X3{D-B&A&C}", 55,
				"X1*X2{z-y&x},X1*X3{D-B&A&C}", 56,
				"X1*X2{z-y&x},X1*X3{D-B&A&C},X1*X3{B&A-C}", 57,
				"X1*X2{z-y&x},X1*X3{D-B&A&C},X1*X3{B-A}", 58,
				"X1*X2{z-y&x},X2{y-x}*X3{B&A-C}", 59, "X1*X2{z-y&x},X2{y-x}*X3{B-A}",
				60, "X1*X2{z-y&x},X2{y-x}*X3{D-B&A&C}", 61,
				"X1*X2{z-y&x},X2{z-y&x}*X3{B&A-C}", 62,
				"X1*X2{z-y&x},X2{z-y&x}*X3{B-A}", 63,
				"X1*X2{z-y&x},X2{z-y&x}*X3{D-B&A&C}", 64, "X1*X3{B&A-C}", 65,
				"X1*X3{B&A-C},X1*X3{B-A}", 66, "X1*X3{B&A-C},X2{y-x}*X3{B&A-C}", 67,
				"X1*X3{B&A-C},X2{y-x}*X3{B-A}", 68,
				"X1*X3{B&A-C},X2{y-x}*X3{D-B&A&C}", 69,
				"X1*X3{B&A-C},X2{z-y&x}*X3{B&A-C}", 70,
				"X1*X3{B&A-C},X2{z-y&x}*X3{B-A}", 71,
				"X1*X3{B&A-C},X2{z-y&x}*X3{D-B&A&C}", 72, "X1*X3{B-A}", 73,
				"X1*X3{D-B&A&C}", 74, "X1*X3{D-B&A&C},X1*X3{B&A-C}", 75,
				"X1*X3{D-B&A&C},X1*X3{B-A}", 76, "X1,X1*X2{y-x}", 77,
				"X1,X1*X2{z-y&x}", 78, "X1,X1*X2{z-y&x},X1*X2{y-x}", 79,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{B&A-C}", 80,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{B&A-C},X1*X3{B-A}", 81,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{B&A-C},X2{y-x}*X3{B&A-C}", 82,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{B&A-C},X2{y-x}*X3{B-A}", 83,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{B&A-C},X2{y-x}*X3{D-B&A&C}", 84,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{B&A-C},X2{z-y&x}*X3{B&A-C}", 85,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{B&A-C},X2{z-y&x}*X3{B-A}", 86,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{B&A-C},X2{z-y&x}*X3{D-B&A&C}", 87,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{B-A}", 88,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{B-A},X2{y-x}*X3{B&A-C}", 89,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{B-A},X2{y-x}*X3{B-A}", 90,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{B-A},X2{y-x}*X3{D-B&A&C}", 91,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{B-A},X2{z-y&x}*X3{B&A-C}", 92,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{B-A},X2{z-y&x}*X3{B-A}", 93,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{B-A},X2{z-y&x}*X3{D-B&A&C}", 94,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C}", 95,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C}", 96,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X1*X3{B-A}",
				97,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X1*X3{B-A},X2{y-x}*X3{B&A-C}",
				98,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X1*X3{B-A},X2{y-x}*X3{B&A-C},X2{y-x}*X3{B-A}",
				99,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X1*X3{B-A},X2{y-x}*X3{B-A}",
				100,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X1*X3{B-A},X2{y-x}*X3{D-B&A&C}",
				101,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X1*X3{B-A},X2{y-x}*X3{D-B&A&C},X2{y-x}*X3{B&A-C}",
				102,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X1*X3{B-A},X2{y-x}*X3{D-B&A&C},X2{y-x}*X3{B-A}",
				103,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X1*X3{B-A},X2{z-y&x}*X3{B&A-C}",
				104,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X1*X3{B-A},X2{z-y&x}*X3{B&A-C},X2{y-x}*X3{B&A-C}",
				105,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X1*X3{B-A},X2{z-y&x}*X3{B&A-C},X2{y-x}*X3{B-A}",
				106,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X1*X3{B-A},X2{z-y&x}*X3{B&A-C},X2{y-x}*X3{D-B&A&C}",
				107,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X1*X3{B-A},X2{z-y&x}*X3{B&A-C},X2{z-y&x}*X3{B-A}",
				108,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X1*X3{B-A},X2{z-y&x}*X3{B-A}",
				109,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X1*X3{B-A},X2{z-y&x}*X3{B-A},X2{y-x}*X3{B&A-C}",
				110,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X1*X3{B-A},X2{z-y&x}*X3{B-A},X2{y-x}*X3{B-A}",
				111,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X1*X3{B-A},X2{z-y&x}*X3{B-A},X2{y-x}*X3{D-B&A&C}",
				112,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X1*X3{B-A},X2{z-y&x}*X3{D-B&A&C}",
				113,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X1*X3{B-A},X2{z-y&x}*X3{D-B&A&C},X2{y-x}*X3{B&A-C}",
				114,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X1*X3{B-A},X2{z-y&x}*X3{D-B&A&C},X2{y-x}*X3{B-A}",
				115,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X1*X3{B-A},X2{z-y&x}*X3{D-B&A&C},X2{y-x}*X3{D-B&A&C}",
				116,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X1*X3{B-A},X2{z-y&x}*X3{D-B&A&C},X2{z-y&x}*X3{B&A-C}",
				117,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X1*X3{B-A},X2{z-y&x}*X3{D-B&A&C},X2{z-y&x}*X3{B-A}",
				118,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X2{y-x}*X3{B&A-C}",
				119,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X2{y-x}*X3{B&A-C},X2{y-x}*X3{B-A}",
				120,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X2{y-x}*X3{B-A}",
				121,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X2{y-x}*X3{D-B&A&C}",
				122,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X2{y-x}*X3{D-B&A&C},X2{y-x}*X3{B&A-C}",
				123,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X2{y-x}*X3{D-B&A&C},X2{y-x}*X3{B-A}",
				124,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X2{z-y&x}*X3{B&A-C}",
				125,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X2{z-y&x}*X3{B&A-C},X2{y-x}*X3{B&A-C}",
				126,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X2{z-y&x}*X3{B&A-C},X2{y-x}*X3{D-B&A&C}",
				127,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X2{z-y&x}*X3{B-A}",
				128,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X2{z-y&x}*X3{B-A},X2{y-x}*X3{B&A-C}",
				129,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X2{z-y&x}*X3{B-A},X2{y-x}*X3{D-B&A&C}",
				130,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X2{z-y&x}*X3{D-B&A&C}",
				131,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X2{z-y&x}*X3{D-B&A&C},X2{y-x}*X3{B&A-C}",
				132,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X2{z-y&x}*X3{D-B&A&C},X2{y-x}*X3{B-A}",
				133,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X2{z-y&x}*X3{D-B&A&C},X2{y-x}*X3{D-B&A&C}",
				134,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X2{z-y&x}*X3{D-B&A&C},X2{z-y&x}*X3{B&A-C}",
				135,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B&A-C},X2{z-y&x}*X3{D-B&A&C},X2{z-y&x}*X3{B-A}",
				136, "X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B-A}", 137,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B-A},X2{y-x}*X3{B&A-C}",
				138,
				"X1,X1*X2{z-y&x},X1*X2{y-x},X1*X3{D-B&A&C},X1*X3{B-A},X2{y-x}*X3{B-A}",
				139,
				"X1,X1*X2{z-y&x},X1*X2{y…


//Finally, the raster plot!

Graph Builder(
	Size( 936, 645 ),
	Show Control Panel( 0 ),
	Variables(
		X( :Terms ),
		Y( :Model ID, Order By( :RSquare, Descending, Order Statistic( "Mean" ) ) ),
		Color( :RSquare )
	),
	Elements( Heatmap( X, Y, Legend( 10 ) ) ),
	Local Data Filter(
		Close Outline( 1 ),
		Add Filter( columns( :Presence ), Where( :Presence == 1 ) )
	),
	Column Switcher(
		:RSquare,
		{:RSquare, :RMSE, :AICc, :BIC},
		Title( "Evaluation metric" )
	),
	SendToReport(
		Dispatch(
			{},
			"400",
			ScaleBox,
			{Legend Model(
				10,
				Properties(
					0,
					{gradient(
						{Color Theme( "Stoplight Bad to Good"(1) ), Width( 12 )}
					)},
					Item ID( "RSquare", 1 )
				)
			)}
		),
		Dispatch(
			{},
			"graph title",
			TextEditBox,
			{Set Text( "Raster plot: Model comparison and terms selection" )}
		)
	)
);

And the datatable "Combined Data Table" contains the "Visualization datatable" on which the raster plot is created (also saved as a script if you want to have a look and change the evaluation metric).

In order to reduce and optimize the computation of several models (which can be computationally intensive in presence of high number of factors, and possible terms in the models), some safeguards and model creation definitions could be implemented, in the same fashion as the design explorer for DoE, where several designs can be created in parallel. Some options to define could be the highest order of the terms to include in the models, how many different models are created, how much are displayed, ... 

 

Why is this idea important? "All models are wrong, but some are useful" can be a great quote to illustrate the importance of this type of visualization : through the visual comparison of several models ranked by their relevance (R², information criterion, RMSE, ...to be chosen) and their included terms, any user can define which terms to include in the model with more certainty/confidence, or even choose to combine several equally good models. Multiplicity of models is often seen as a concern due to the combinatorial explosion, but this way to summarize and compare visually a lot of models could help see the models' multiplicity as an opportunity for better modeling and decision-making.

 

@Mark_Bailey and @jacob_rhyne, following our discussion in Discovery Summit on DoE experts expo stand

1 Comment
mia_stephens
Staff
Status changed to: Acknowledged