Subscribe Bookmark RSS Feed

Can I apply a formula in formula editor by a variable in another column,

tpinck27

Community Trekker

Joined:

Jan 13, 2016

In my data table I have data over time for several different items (indicated by color names for this question). There are 125 time points and data for each color at each time point. I want to create a formula in a new column that will give me the slope of the data for each color listed under the name column. I can easily put a formula for slope in a new column but do not know how to apply that formula by the name.

I added the fit Y by X of the data below. Basically I just need a way to save the slopes of all those lines into a data table.

10987_pastedImage_1.png10988_pastedImage_2.png

3 REPLIES
KarenC

Super User

Joined:

Feb 10, 2013

In Y by X if you used the "Group By" and then fit your lines you have a number of summary tables in your output.  Right click on the Parameter estimate table and select "Make Combined Data Table".  This will give you a table the parameter estimate output that includes each group.

Alternatively, if you use Fit Model with a By variable then you could broadcast (command key on a mac) the Save Columns>Prediction Formula and obtain a column in your original table with a formula for each group (color) item (it will be a big if then type formula).

ron_horne

Super User

Joined:

Jun 23, 2011

karen@boulderstats​ is right, I would like to offer another option:

using the fit model platform, if color is used as a dummy variable and an interaction with the slope you practically get a separate prediction for each category. at this stage, you can save the prediction formula as follows:

dt = Open( "$SAMPLE_DATA/Drug.jmp" );

obj = Fit Model(

    Y( :y ),

    Effects( :Drug, :x, :Drug * :x ),

    Personality( Standard Least Squares ),

    Emphasis( Minimal Report ),

    Run

);

obj << Prediction Formula;

10994_pred formula y.png

txnelson

Super User

Joined:

Jun 22, 2012

Here is my script that will pull off the slopes for each of the groupings and place it into an output table

Names Default To Here( 1 ); 

dt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );

 

// Find the number of groupings, to allow for the stripping

// off of each slope from the Fit Y by X

Summarize( dt, ByGroup = By( :Site ) );

 

// Run the Fit Y by X(Bivariate)

Biv = Bivariate( Y( :NPN1 ), X( :PNP1 ), Group By( :Site ), fit line );

 

// Create a list to store the slopes in

SlopeList = {};

 

// Pass through the bivariate ouput scraping off the slopes

For( i = 2, i <= N Items( ByGroup ) * 4 - 2, i = i + 4,

       Insert Into(

              SlopeList, 

              Num(

                     Word( 4, Report( Biv )[Outline Box( i )][Text Box( 1 )] << get text, " *" ) ||

                     Word( 5, Report( Biv )[Outline Box( i )][Text Box( 1 )] << get text, " *" )

              ) 

       );

);

// Create a new table with the slopes

dt2=New Table("Slopes",New Column("Group",character,values(ByGroup)),

       New Column("Slope",values(SlopeList))

);

10998_pastedImage_1.png

10997_pastedImage_0.png

Jim