- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Kendall's Tau from Formula
Hello
I had some questions in a different thread regarding need to get linear fit slopes from a formula as opposed to a script.
This question is similar. Is there a way to extract Kendall's Tau for a given time series parameter using a formula (and not using the multi-variate analysis or a script) ?
My goal is to test the non-parametric trend for different time lengths that the data is produced from (i.e. would like to set rolling windows and then test Kendall's Tau) . thanks ....
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Kendall's Tau from Formula
Here is the calculation across all of the analysis columns in the data table, and placed into the rows of the calculated formula column. The data table is attached, the formula is below
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Kendall's Tau from Formula
When one uses JMP Platforms in a formula, just as when you use them interactively or in a script, the input to the Platform has to be columns from a data table. Therefore, you can not reference the input by creating an input matrix. So what I did to make your formula work, is to take advantage of being able to Exclude rows from the data table and when the platform is run, it will ignore those rows. Here is the formula, and the output it creates:
dt = Current Data Table();
If( Row() >= 10,
currentRow = Row();
dt << clear rowstates;
dt << select where( Row() <= currentRow - 10 | Row() > currentRow );
excludeRows = dt << get selected rows;
dt << hide and exclude;
mv = dt << Multivariate(
invisible,
Y( :TimeStep, :F ),
Estimation Method( "Row-wise" ),
Matrix Format( "Square" ),
Scatterplot Matrix( Density Ellipses( 0 ), Shaded Ellipses( 0 ) ),
Kendall's τ( 1 )
);
tau = (Report( mv )["Nonparametric: Kendall's τ"][Number Col Box( 1 )] << get)[1];
mv << close window;
If( Row() == N Rows( dt ),
dt << clear rowstates
);
tau;
);
The data table
I suggest that once you have created the column, and it has run the formula, that you go to the Col Info dialog, and remove the formula. It will leave the static values, but will not keep rerunning the formula over and over....it isn't the fastest
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Kendall's Tau from Formula
Here is the calculation across all of the analysis columns in the data table, and placed into the rows of the calculated formula column. The data table is attached, the formula is below
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Kendall's Tau from Formula
hello
Thanks for this great answer. This was actually a revelation for me because this showed that a formulae can contain script like structures, which was unknown to me .
I accepted your solution but do need your help one more time.
Uploading a sample data set.
My need of MK tau is on rows for a single column. That is actually correctly done (my adaptation from your prior help) in col Tau_WholeData.
What I am really trying to do is to get a trend of a single parameter in timesteps (temporal trend if you will).
So I am trying to set a moving (rolling) window of size 10, start the window at row 10, and then move it by one record (row) - each time calculating MK Tau of the prior 10 rows .
I did similar things w/ Index function (e.g. Index( Row() - 9, Row() )) for 10 rows and I tried 3-4 different options of placing this into the Tau_WholeData formula - so far no success.
I appreciate if you could let me know how I should change this.
thanks ...
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Kendall's Tau from Formula
Seeing your other answer on the linear slopes, I got another idea of where to put the index for MK but did not work either.
attached in my latest w/ that 5th attempt
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Kendall's Tau from Formula
When one uses JMP Platforms in a formula, just as when you use them interactively or in a script, the input to the Platform has to be columns from a data table. Therefore, you can not reference the input by creating an input matrix. So what I did to make your formula work, is to take advantage of being able to Exclude rows from the data table and when the platform is run, it will ignore those rows. Here is the formula, and the output it creates:
dt = Current Data Table();
If( Row() >= 10,
currentRow = Row();
dt << clear rowstates;
dt << select where( Row() <= currentRow - 10 | Row() > currentRow );
excludeRows = dt << get selected rows;
dt << hide and exclude;
mv = dt << Multivariate(
invisible,
Y( :TimeStep, :F ),
Estimation Method( "Row-wise" ),
Matrix Format( "Square" ),
Scatterplot Matrix( Density Ellipses( 0 ), Shaded Ellipses( 0 ) ),
Kendall's τ( 1 )
);
tau = (Report( mv )["Nonparametric: Kendall's τ"][Number Col Box( 1 )] << get)[1];
mv << close window;
If( Row() == N Rows( dt ),
dt << clear rowstates
);
tau;
);
The data table
I suggest that once you have created the column, and it has run the formula, that you go to the Col Info dialog, and remove the formula. It will leave the static values, but will not keep rerunning the formula over and over....it isn't the fastest
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Kendall's Tau from Formula
Jim
This worked great.
Only small issue is a warning w/ the use "Current Data Table" within a formulae.
JMP throws a warning stating to use an Eval or Expr Eval function instead.
I would likely activate and then deactivate this function after its done calculating.
This has been great help. Thanks so much.