Message-ID: <740876354.4627804.1428003842321.JavaMail.yahoo@mail.yahoo.com>
Date: 2015-04-02T19:44:02Z
From: Desta Yoseph
Subject: Calculating Kendall's tau
In-Reply-To: <80A5132A-D606-4C81-8112-E12673012539@comcast.net>
Thank you for ?the explanation and comments. I managed to solve and your comments are helpfully!?thanks once again,Desta
On Thursday, April 2, 2015 7:19 PM, David Winsemius <dwinsemius at comcast.net> wrote:
On Apr 2, 2015, at 7:06 AM, S Ellison wrote:
>> I am analyzing trend? using Mann-kendall? test for 31 independent sample, each
>> sample? have 34 years dataset.? I supposed to find Kendall ?tau? for each
>> sample. The data is arranged in column wise (I attached? the data).To find
>> Kendall tau, I wrote R script as:
>> ...
>> Anyone can tell me how can I get orderly displayed? ?tau? value?
>
> Usually, in R, a hypothesis test returns an object, and you can extract an individual element of that object.
>
> MannKendall seems to be no exception. Looking at the help page, a MannKendall test returns...
> " A list with class Kendall.
> tau ??? Kendall?s tau statistic
> sl ??? two-sided p-value
> S??? Kendall Score
> D??? denominator, tau=S/D
> varS??? variance of S"
>
> To get just tau, say something like MannKendalltau[i]<-MannKendall(y[,i])$tau
>
> But your code is a bit of a mess....
> MannKendalltau<- numeric(nc) simply makes MannKendalltau a single integer equal to nc; that doesn't look sensible when the next thing you do is treat MannKendalltau as a vector. R's been kind to you and extended MannKendalltau when you tried to add things to later, non-existent, elements, but it clearly wasn't the right thing to do. Look up ?numeric, and then look up ?vector for next time you want to set up an empty vector.
>
> Second, since MannKendall(y[,i]) ) returns a list object of class Kendall, MannKendalltau[i]<-MannKendall(y[,i]) assigns a whole? object containing 5 values to each new element of your MannKendalltau. So your result is a list of lists.
>
> Finally, you don?t need a loop at all. On a data frame, sapply would work nicely, so (although I've not tested it) something like
>
> sapply(desta[,2:nc], 2, function(x) ManKendall(x)$tau)
That looks more line an apply call. The second argument to sapply needs to be a function or function name.
--
David.
>
> ought to do the whole thing in one shot and package it nicely into a named vector while it's about it.
>
> S Ellison
>
>
> *******************************************************************
> This email and any attachments are confidential. Any u...{{dropped:12}}