turn on suggestions

Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Showing results for

- JMP User Community
- :
- Discussions
- :
- Discussions
- :
- How to fit a polynomial degree 2 models with by-gr...

Topic Options

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

Jun 15, 2017 2:51 AM
(1909 views)

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.

Solved! Go to Solution.

1 ACCEPTED SOLUTION

Accepted Solutions

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

Jun 15, 2017 7:00 AM
(1918 views)

Solution

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
)
```

7 REPLIES

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

Jun 15, 2017 5:03 AM
(1901 views)

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

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

Jun 15, 2017 6:46 AM
(1892 views)

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.

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

Jun 15, 2017 11:01 AM
(1875 views)

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

Jun 15, 2017 10:58 AM
(1877 views)

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

Jun 15, 2017 7:00 AM
(1919 views)

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
)
```

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

Jun 15, 2017 6:58 PM
(1862 views)

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

Jun 15, 2017 6:53 PM
(1863 views)