Calculating Kendall's tau
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.
No, numeric(nc) makes a "numeric" (double precision) vector of length nc filled with zeros. Perhaps you were thinking of as.numeric(nc), which makes a numeric vector of length one containing the value nc. Bill Dunlap TIBCO Software wdunlap tibco.com
On Thu, Apr 2, 2015 at 7:06 AM, S Ellison <S.Ellison at lgcgroup.com> 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)
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:17}}