Share your ideas for the JMP Scripting Unsession at Discovery Summit by September 17th. We hope to see you there!
Choose Language Hide Translation Bar
Highlighted
Sibtid
Level II

How to fit a polynomial degree 2 models with by-groups then capture the parameter estimates

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.

001516.png

1 ACCEPTED SOLUTION

Accepted Solutions
Highlighted
MathStatChem
Level VI

Re: How to create polynomial degree 2 and get the coefficient and constant?

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
)

View solution in original post

7 REPLIES 7
Highlighted
ian_jmp
Staff

Re: How to create polynomial degree 2 and get the coefficient and constant?

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'.

Highlighted
MathStatChem
Level VI

Re: How to create polynomial degree 2 and get the coefficient and constant?

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.

Highlighted
Sibtid
Level II

Re: How to create polynomial degree 2 and get the coefficient and constant?

Thanks MathStatChem, let me try for your suggestion.
Highlighted
Sibtid
Level II

Re: How to create polynomial degree 2 and get the coefficient and constant?

Thanks ian_jmp, let me try.
Highlighted
MathStatChem
Level VI

Re: How to create polynomial degree 2 and get the coefficient and constant?

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
)

View solution in original post

Highlighted
Sibtid
Level II

Re: How to create polynomial degree 2 and get the coefficient and constant?

Hi MathStatChem,

Your solution it work.

Highlighted
Sibtid
Level II

Re: How to create polynomial degree 2 and get the coefficient and constant?

Hi ian_jmp, My objective is get the coefficient and constant of "y = ax^2+bx+c" but in fit polynomial is "y = a(x-d)^2+bx+c". However I got the solution from user# MathStatChem by fit special.
Article Labels

    There are no labels assigned to this post.