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
- :
- Mann Kendall

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
- Get Direct Link
- Email to a Friend
- Report Inappropriate Content

Sep 8, 2011 7:48 AM
(2570 views)

Hi all. I'm trying to run a Mann-Kendall to test if a temporal trend is significant. Can't find it in the JMP manual or anything online. Anyone have any ideas?

Thanks!

1 ACCEPTED SOLUTION

Accepted Solutions

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Get Direct Link
- Email to a Friend
- Report Inappropriate Content

Sep 16, 2011 2:32 AM
(2503 views)

Solution

Even if the definitions Mann-Kendall test statistic and the Kendall Tau b often is described in different terms (from time series and correlation perspectives, respectively), they are essentially the same as far as I can tell.

Below is a script I wrote quite long ago. It calculates and shows the Theil's slope and performs the Mann-Kendall test. A parametric linear regression line is shown in the plot just for comparision. I planned to generalize the script by include a "By" function as well as the posibilty to account for seasonal patterns. But I have not had the time to realize those plans yet. I hope this will give you some ideas.

dt = Current Data Table**()**;

dlg = Column Dialog**(**

"Estimate Theil slope and Kendall Tau from Data Table " ||

Char**(** dt << get name **)**,

Ys = ColList**(** "Select Y",

maxcol**(** **1** **)**,

mincol**(** **1** **)**,

Datatype**(** numeric **)**

**)**,

Xs = ColList**(** "Select X",

maxcol**(** **1** **)**,

mincol**(** **1** **)**,

Datatype**(** numeric **)**

**)**,

Group = ColList**(** "By (not working)", maxcol**(** **1** **)** **)**

**)**;

colY = Column**(** dt, dlg**[**"Ys"**]** **)**;

colX = Column**(** dt, dlg**[**"Xs"**]** **)**;

colGroup = Column**(** dt, dlg**[**"Group"**]** **)**;

//Calculation of Theil slope

n = N Rows**(** dt **)**;

slopes = J**(** n, n, **.** **)**;

For**(** i = **1**, i < n, i++,

For**(** j = i + **1**, j <= n, j++,

slopes**[**i, j**]** = **(**colY**[**j**]** - colY**[**i**])** / **(**colX**[**j**]** - colX**[**i**])**

**)**

**)**;

theil = Quantile**(** **0.5**, slopes **)**;

//Kendall's Tau b to test if slope differs from zero

mv = Multivariate**(**

Y**(** colY, colX **)**,

Scatterplot Matrix**(****0****)**,

Correlations multivariate**(****0****)**,

Kendall's Tau**(** **1** **)**

**)**;

//Plot data and add linear regression and Theil's slope

biv = Bivariate**(**

Y**(** colY **)**,

X**(** colX **)**,

Fit Line**(** **{**Line Color**(** "Red" **)}** **)**,

Fit Special**(** Slope**(** theil **)**, **{**Line Color**(** "Green" **)}** **)**,

invisible

**)**;

rbiv = biv << report;

rbiv**[**"Linear Fit"**]** << close all like this;

rbiv**[**Outline Box**(** **7** **)]** << set title**(** "Theil's Slope" **)**;

db = Report**(** mv **)[**"Multivariate"**]** << parent;

db << prepend**(** rbiv **)**;

db**[**Text Box**(** **4** **)]** << set text**(** "Theil's Slope" **)**;

rbiv << close window;

3 REPLIES

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Get Direct Link
- Email to a Friend
- Report Inappropriate Content

Sep 15, 2011 4:22 PM
(1718 views)

I'm not sure to what degree (if at all) the Mann-Kendall test is related to the Kendall Tau statistic for non-parametric correlation. The later can be accessed under the multivariate platform: Analyze>Multivariate Methods then from the multivariate report select Nonparametric Correlations from the hotspot.

If the tests are completely different I'd be interested in any references that you have for this method. I'm considering building an add-in that implements a number of methods (e.g. Hurst Index) that have been developed for the field of hydrology

Regards

Dave

-Dave

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Get Direct Link
- Email to a Friend
- Report Inappropriate Content

Sep 16, 2011 2:32 AM
(2504 views)

Even if the definitions Mann-Kendall test statistic and the Kendall Tau b often is described in different terms (from time series and correlation perspectives, respectively), they are essentially the same as far as I can tell.

Below is a script I wrote quite long ago. It calculates and shows the Theil's slope and performs the Mann-Kendall test. A parametric linear regression line is shown in the plot just for comparision. I planned to generalize the script by include a "By" function as well as the posibilty to account for seasonal patterns. But I have not had the time to realize those plans yet. I hope this will give you some ideas.

dt = Current Data Table**()**;

dlg = Column Dialog**(**

"Estimate Theil slope and Kendall Tau from Data Table " ||

Char**(** dt << get name **)**,

Ys = ColList**(** "Select Y",

maxcol**(** **1** **)**,

mincol**(** **1** **)**,

Datatype**(** numeric **)**

**)**,

Xs = ColList**(** "Select X",

maxcol**(** **1** **)**,

mincol**(** **1** **)**,

Datatype**(** numeric **)**

**)**,

Group = ColList**(** "By (not working)", maxcol**(** **1** **)** **)**

**)**;

colY = Column**(** dt, dlg**[**"Ys"**]** **)**;

colX = Column**(** dt, dlg**[**"Xs"**]** **)**;

colGroup = Column**(** dt, dlg**[**"Group"**]** **)**;

//Calculation of Theil slope

n = N Rows**(** dt **)**;

slopes = J**(** n, n, **.** **)**;

For**(** i = **1**, i < n, i++,

For**(** j = i + **1**, j <= n, j++,

slopes**[**i, j**]** = **(**colY**[**j**]** - colY**[**i**])** / **(**colX**[**j**]** - colX**[**i**])**

**)**

**)**;

theil = Quantile**(** **0.5**, slopes **)**;

//Kendall's Tau b to test if slope differs from zero

mv = Multivariate**(**

Y**(** colY, colX **)**,

Scatterplot Matrix**(****0****)**,

Correlations multivariate**(****0****)**,

Kendall's Tau**(** **1** **)**

**)**;

//Plot data and add linear regression and Theil's slope

biv = Bivariate**(**

Y**(** colY **)**,

X**(** colX **)**,

Fit Line**(** **{**Line Color**(** "Red" **)}** **)**,

Fit Special**(** Slope**(** theil **)**, **{**Line Color**(** "Green" **)}** **)**,

invisible

**)**;

rbiv = biv << report;

rbiv**[**"Linear Fit"**]** << close all like this;

rbiv**[**Outline Box**(** **7** **)]** << set title**(** "Theil's Slope" **)**;

db = Report**(** mv **)[**"Multivariate"**]** << parent;

db << prepend**(** rbiv **)**;

db**[**Text Box**(** **4** **)]** << set text**(** "Theil's Slope" **)**;

rbiv << close window;

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Get Direct Link
- Email to a Friend
- Report Inappropriate Content

Sep 18, 2011 5:00 PM
(1718 views)