I have been working on a script to evaluate some possible transformations for fit for both first order and second order polynomials. The script seems to work well. However, I can only select one column at a time. Is there a way to change this script to allow for more than one column to be evaluated at a time?
Clear Log();
dt = Current Data Table(); // Use Current Data Table;
xvar = .;
yvar = .;
win = New Window( "Transformation Variable Selection",
<<Modal,
<<On Validate(
// require the user to select two variables before clicking OK
Show( xvar, yvar );
If( Is Missing( xvar ) | Is Missing( yvar ),
// if xvar or yvar are missing do nothing when OK is clicked
0
,
1
);
),
Text Box( " Select Numeric Columns. " ),
H List Box(
Text Box( " X, Factor " ),
x = Col List Box(
dt, // data table reference
all, // display all columns from the data table
xvar = (x << Get Selected)[1];
// get the name of the selected column before the window closes
Show( xvar );
),
Text Box( "Y, Response" ),
y = Col List Box(
dt,
all,
yvar = (y << Get Selected)[1];
Show( yvar );
)
)
);
If( win["Button"] == 1, // if the user clicks OK...
xcol = Column( dt, xvar ); // get the columns
ycol = Column( dt, yvar );
);
d = 1;
m = Matrix( 72, 5 );
l = List( 72 );
l1 = List( 72 );
l2 = List( 72 );
For( c = 1, c < 3, c++,
For( b = 1, b < 7, b++,
transb = Match( b, 1, "Log", 2, "Sqrt", 3, "Square", 4, "Reciprocal", 5, "Exp", 6, "None", );
For( a = 1, a < 7, a++,
transa = Match( a,
1, "Log",
2, "Sqrt",
3, "Square",
4, "Reciprocal",
5, "Exp",
6, "None",
);
biv = Bivariate(
Y( "ycol" ),
X( "xcol" ),
Fit Special(
xTran( transb ),
yTran( transa ),
Degree( c ),
Centered Polynomial( 0 ),
{Line Color( {213, 72, 87} )}
),
//SendToReport(
// Dispatch(
// {"Transformed Fit Log to Log"},
// "Summary of Fit",
// OutlineBox,
// {Set Title( "Summary of Fit" )}
// )
//)
);
rbiv = Report( biv );
bivmatrix = Try( rbiv[Outline Box( 3 )][1][2] << Get As Matrix );
If( Is Missing( bivmatrix = Try( rbiv[Outline Box( 3 )][1][2] << Get As Matrix ) ),
0
);
//bivmatrix2 = rbiv[Number Col Box( 7 )] << Get As Matrix;
//bivMatrix3 = rbiv[Number Col Box( 8 )] << Get As Matrix;
bivR2 = bivmatrix[1];
bivRMSE = bivmatrix[3];
//bivIntercept = bivMatrix2[1];
//bivX = bivMatrix2[2];
//bivForm = rbiv[Text Edit Box( 4 )];
//l[d] = transb || "(" || xvar || ") vs " || transa || "(" || yvar || ")";
l[d]=xvar;
l1[d] = transb;
l2[d] = transa;
m[d, 1] = c;
m[d, 2] = bivR2;
m[d, 3] = bivRMSE;
Close All( Reports, No Save );
//m[d, 3] = bivIntercept;
//m[d, 4] = bivx;
d++;
);
)
);
ds = New Table( "Tranformation Evalutation" || " " || xvar || " vs " || yvar );
ds << New Column("Independent Variable", Character, Text, Width(5), Values(l));
ds << New Column( "X Transformation", Character, Text, Width( 5 ), Values( l1 ) );
ds << New Column( "Y Transformation", Character, Text, Width( 5 ), Values( l2 ) );
ds << New Column( "Polynomial Degree", Numeric, Continuous, Width( 5 ), Values( m[0, 1] ) );
ds << New Column( "R2", Numeric, Continuous, Width( 5 ), Values( m[0, 2] ) );
ds << New Column( "RMSE", Numeric, Continuous, Width( 5 ), Values( m[0, 3] ) );