cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Have your say in shaping JMP's future by participating in the new JMP Wish List Prioritization Survey
Choose Language Hide Translation Bar
lisamaley
Level III

Dunnett's for Multiple Ys

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
Staff

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?