# R Code for Cox & Stuart Test for Trend Analysis

R Code for Cox & Stuart Test for Trend Analysis

Below is an R code for Cox & Stuart Test for Trend Analysis. Simply, copy and paste the code into R workspace and use it. Unlike cox.stuart.test in R package named “randtests”, this version of the test does not return a p-value greater than one. This phenomenon occurs when the test statistic, T is half of the number of untied pairs, N. Here is a simple example that reveals the situtaion:

> x [1] 1 4 6 7 9 7 1 6

> cox.stuart.test(x)

Cox Stuart test

data: x statistic = 2, n = 4, p-value = 1.375 alternative hypothesis: non randomness

> o.Cox.Stuart.test(x)

Cox & Stuart Test for Trend Analysis

data: x Test Statistic = 2, Number of Untied Pairs = 4, p-value = 1 alternative hypothesis: any type of trend, either decreasing or increasing

R Code for Cox & Stuart Test:

o.Cox.Stuart.test <- function(x, alternative=c(“two.sided” ,”left.sided”, “right.sided”)){

dname <- deparse(substitute(x))

alternative <- match.arg(alternative)

stopifnot(is.numeric(x))

n0 <- length(x)

if (n0 < 2){ stop(“sample size must be greater than 1”) }

n0 <- round(length(x)) %% 2

if (n0 == 1) { remove <- (length(x)+1)/2 x <- x[ -remove ] }

half <- length(x)/2 x1 <- x[1:half] x2 <- x[(half+1):(length(x))] n <- sum((x2-x1)!=0) t <- sum(x1<x2)

if (alternative == “left.sided”) { p.value <- pbinom(t, n, 0.5) alternative <- “decreasing trend” }

if (alternative == “right.sided”){ p.value <- 1-pbinom(t-1, n, 0.5) alternative <- “increasing trend” }

if (alternative == “two.sided”){ alternative <- “any type of trend, either decreasing or increasing” if (1-pbinom(t-1, n, 0.5) == pbinom(t, n, 0.5)) { pdist <- dbinom(0:n, n, 0.5) p.value <- sum(pdist[pdist <= t+1]) } else { p.value <- 2*min( 1-pbinom(t-1, n, 0.5), pbinom(t, n, 0.5)) } }

rval <- list(statistic=c(“Test Statistic”=t), alternative=alternative, p.value=p.value, method=”Cox & Stuart Test for Trend Analysis”, parameter=c(“Number of Untied Pairs”=n), data.name=dname)

class(rval) <- “htest” return(rval) }

Link: R Code for Cox & Stuart Test for Trend Analysis