I would like to create polynomial degree 2 by each (SERIAL, P1, P2, P3) and get the coefficient and constant then put in each column by using JSL.
The example data was attached in this post, but actually I will do with the data about 1 million rows.
Try this script:
_biv=Bivariate( Y( :y ), X( :x ), Fit Special( Degree( 2 ), Centered Polynomial( 0 ), {Line Color( {213, 72, 87} )} ), By( :SERIAL, :P1, :P2, :P3 ) ); _rbiv=Report(_biv[1]); _dtParameterEst = _rbiv[Table Box(3)]<< Make Combined Data Table; _dtParameterEst << Split( Split By( :Term ), Split( :Estimate ), Group( :P3, :P2, :P1, :SERIAL ), Remaining Columns( Drop All ), Sort by Column Property )
It would be possible to develop the script below to get what you need:
NamesDefaultToHere(1); ClearLog(); dt = DataTable("Example data.jmp"); col = Column(dt, "Predicted y By SERIAL By P1 By P2 By P3"); // Get the formula generated by the platform f = col << getFormula; // Start to parse this formula expression for(g = 1, g <= Narg(f) - 1, g = g + 2, f1 = Arg(f, g); f2 = Arg(f, g+1); Print(f1, f2, "\!n"); );
But I suspect it might be simpler to send the 'MakeCombinedDataTable' message to the appropriate table in the report window if that's possible. Look in 'Help > Scripting Guide'.
Also, if you are using the Fit Y by X platform / Bivariate platform to generate the polynomial fits, make sure to do a "Fit Special" and use uncentered polynomials. Otherwise the fitted quadratic will be of the form
f(x) = a + b*x + c*(x-xbar)
where xbar is the mean of the x values used in the regression.
Doing the fitting with a By variable and then right clicking the parameter estimates table to make a combined data table is a very efficient way to do this.
Hi MathStatChem,
Your solution it work.