cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
JMP is taking Discovery online, April 16 and 18. Register today and join us for interactive sessions featuring popular presentation topics, networking, and discussions with the experts.
Choose Language Hide Translation Bar
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
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
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'.

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.

Sibtid
Level II

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

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

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

Thanks ian_jmp, let me try.
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
)
Sibtid
Level II

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

Hi MathStatChem,

Your solution it work.

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.