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.
Choose Language Hide Translation Bar
View Original Published Thread

Dunnett's for Multiple Ys

lisamaley
Level III

I am trying to get a script that will run Dunnett's on multiple Ys automatically in fit model, my issues:

 

If I change the multiple comparisons part where the factor and level is not a variable it works but only for the first Y, it will not repeat the Dunnett's part for the remaining Ys.   So my questions:

 

1.  Why doesn't this work like the fit model with a variable being used for the factor and control level for Dunnett's?

2.  Can we get Dunnett's for multiple Ys automatically?

 

Lisa

 

This is what I have so far:

Names Default To Here( 1 );

Clear Log();
lbwidth = 130;
Tolerance = .01;

If( Not( Is Scriptable( dt ) ), 

// Check that there is a data set open;
	//ca=Caption("Please Open Design Data Set", Back Color(yellow));
	//Stop();

	dtsel = Pick File( "Open File", {"JMP|jmp", "All files|*"} );
	If( dtsel == "",
		Stop(),
		Try( dt = Open( dtsel ), Stop() )
	);
);

Dia_Window = Expr(

// Window to get list of factors and response;
	Factorws = New Window( "Fit Model With Dunnetts",
		show toolbars( 0 ),
		Show Menu( 0 ),
		Border Box( Left( 3 ), top( 2 ),
			V List Box(
				H List Box(
					Panel Box( "Select Column to be used as the Factor and the Response(s)",
						colListData = Col List Box(
							All,
							width( lbWidth ),
							nLines( Min( nc, 10 ) )
						)

					), 

					Panel Box( "The Factor",
						Lineup Box( N Col( 2 ), Spacing( 3 ),
							Button Box( "Factor",
								colListW << Append( colListData << GetSelected )
							),
							colListW = Col List Box(
								width( lbWidth ),
								nLines( 1 ),
								MinItems( 1 )
							),

						)
					), 

					Panel Box( "The Response(s)",
						Lineup Box( N Col( 2 ), Spacing( 3 ),
							Button Box( "Response(s)",
								colListY << Append( colListData << GetSelected )
							),
							colListY = Col List Box(
								width( lbWidth ),
								nLines( 8 ),
								MinItems( 1 )
							),

						)
					), 

					Panel Box( "Action",
						Lineup Box( N Col( 1 ),
							Button Box( "OK",
								nm = colListW << GetItems;
								nY = colListY << GetItems;
								If( N Items( nm ) > 0,
									dm = dt << Get As Matrix( nm );
									Factorws << Close Window;
									Eval( next );
								);
							),
							Button Box( "Cancel",
								Factorws << Close Window;
								Stop();
							),
							Text Box( " " ),
							Button Box( "Remove",
								colListW << RemoveSelected;
								colListY << RemoveSelected;
							)
						)
					)
				),
				Text Box( "Written by Lisa Winland lisawinland@icloud.com" )
			)
		)
	)
);
next = Expr(
	Show( nm );
	colvalues = Associative Array( Column( nm ) ) << Get Keys;
	Show( colvalues );
	listvalues = {};
	Show( nY );
	nw = New Window( "User Input for Dunnett's",
		Outline Box( "Level Selection for Dunnett's",
			values = {};
			i = 1;
			For( i = 1, i <= N Items( colvalues ), i += 1,
				Values[i] = Char( colvalues[i] )
			);
			Show( Values );
			H List Box(
				Text Box( "Select Value for Control" ),
				listvalues = List Box( Values )
			);,
			Button Box( "OK",
				level = (listvalues << Get selected);
				nw << Close Window;
				Eval( fiteval );
				Show( level );
			)
		)
	);
);
Fiteval = Expr(
	Show( nm );
	Show( nY );
	Show( level );
	controllevel = (Char( nm ) || ":" || Char( level ));
	Show( controllevel );
	Fit Model(
		Y( Eval( nY ) ),
		Effects( Eval( nm ) ),
		Personality( "Standard Least Squares" ),
		Emphasis( "Minimal Report" ),
		Run(
			:Y << {Summary of Fit( 1 ), Analysis of Variance( 1 ), Parameter Estimates( 1 ),
			Lack of Fit( 0 ), Expanded  Estimates( 1 ), Show Prediction Expression( 1 ),
			Sorted Estimates( 1 ), Scaled Estimates( 0 ), Plot Actual by Predicted( 0 ),
			Plot Regression( 0 ), Plot Residual by Predicted( 0 ),
			Plot Studentized Residuals( 0 ), Plot Effect Leverage( 0 ),
			Plot Residual by Normal Quantiles( 0 ), Box Cox Y Transformation( 0 ), Show VIF( 1 ),
			Multiple Comparisons(
				Effect( Eval( nm ) ),
				Comparisons with Control(
					1,
					Control Level( Eval( Parse( controllevel ) ) ),
					Comparisons with Control Decision Chart(
						Control Differences Chart( 1, Point Options( "Show Needles" ) )
					)
				)
			)},
		)
	);
);

dt = Current Data Table();
nc = N Col( dt );
nr = N Row( dt );
Eval( Dia_Window );
12 REPLIES 12
ian_jmp
Level X

Re: Dunnett's for Multiple Ys

It looks like your dialog is returning things like:

level = {"12"}

a list, with a single item. Try adding:

level = level[1]

Re: Dunnett's for Multiple Ys

My example code does not use a list for x or level. So it would not work in a case where they are initialized with a list.

lisamaley
Level III

Re: Dunnett's for Multiple Ys

So is there a way to get this to work?  Or is there not a work around?