coxStuartTrendsTest¶
Performs the Cox and Stuart sign test for trends in location and dispersion.
Synopsis¶
coxStuartTrendsTest (x)
Required Arguments¶
- float
x[]
(Input) - Array of length
nObservations
containing the data in chronological order.
Return Value¶
Array, pstat
, of length 8 containing the probabilities. The first four
elements of pstat are computed from two groups of observations.
I | pstat[I] |
---|---|
0 | Probability of nstat[0] + nstat[2] or more negative signs
(ties are considered negative). |
1 | Probability of obtaining nstat[1] or more positive signs
(ties are considered negative). |
2 | Probability of nstat[0] + nstat[2] or more negative signs
(ties are considered positive). |
3 | Probability of obtaining nstat[1] or more positive signs
(ties are considered positive). |
The last four elements of pstat are computed from three groups of observations.
4 | Probability of nstat[1] + nstat[2] or more negative
signs (ties are considered negative). |
5 | Probability of obtaining nstat[1] or more positive signs
(ties are considered negative). |
6 | Probability of nstat[0] + nstat[2] or more negative signs
(ties are considered positive). |
7 | Probability of obtaining nstat[1] or more positive signs
(ties are considered positive). |
Optional Arguments¶
dispersion
, intk
, intids
, (Input)- If
dispersion
is supplied, the Cox and Stuart tests for trends in dispersion are computed. Otherwise, as default, the Cox and Stuart tests for trends in location are computed. k is the number of consecutivex
elements to be used to measure dispersion. Ifids
is zero, the range is used as a measure of dispersion. Otherwise, the centered sum of squares is used. fuzz
, float (Input)- Value used to determine when elements in
x
are tied. If|x[i] – x[j]|
is less than or equal tofuzz
,x[i]
andx[j]
are said to be tied.fuzz
must be nonnegative. Default value forfuzz
is 0.0. stat
(Output)- An array of length 8 containing the following statistics:
i |
nstat[i] |
---|---|
0 | Number of negative differences (two groups). |
1 | Number of positive differences (two groups). |
2 | Number of zero differences (two groups). |
3 | Number of differences used to calculate pstat[0] through
pstat[3 ] (two groups). |
4 | Number of negative differences (three groups). |
5 | Number of positive differences (three groups) |
6 | Number of zero differences (three groups). |
7 | Number of differences used to calculate pstat[4] through
pstat[7] (three groups). |
nMissing
(Output)- Number of missing values in
x
.
Description¶
Function coxStuartTrendsTest
tests for trends in dispersion or location
in a sequence of random variables depending upon the value of
dispersion
. A derivative of the sign test is used (see Cox and Stuart
1955).
Location Test¶
For the location test (Default
) with two groups, the observations are
first divided into two groups with the middle observation thrown out if
there are an odd number of observations. Each observation in group one is
then compared with the observation in group two that has the same
lexicographical order. A count is made of the number of times a group-one
observation is less than (nstat[0]
), greater than (nstat[1]
), or
equal to (nstat[2]
), its counterpart in group two. Two observations are
counted as equal if they are within fuzz
of one another.
In the three-group test, the observations are divided into three groups,
with the center group losing observations if the division is not exact. The
first and third groups are then compared as in the two-group case, and the
counts are stored in nstat[4]
through nstat[6]
.
Probabilities in pstat
are computed using the binomial distribution with
sample size equal to the number of observations in the first group
(nstat[3]
or nstat[7]
), and binomial probability \(p=0.5\).
Dispersion Test¶
The dispersion tests (when optional argument dispersion
is supplied)
proceed exactly as with the tests for location, but using one of two derived
dispersion measures. The input value k
is used to define
nObservations
/k
groups of consecutive observations starting with
observation 1. The first k
observations define the first group, the next
k
observations define the second group, etc., with the last observations
omitted if nObservations
is not evenly divisible by k
. A dispersion
score is then computed for each group as either the range (ids
= 0), or
a multiple of the variance (ids
≠ 0) of the observations in the group.
The dispersion scores form a derived sample. The tests proceed on the
derived sample as above.
Ties¶
Ties are defined as occurring when a group one observation is within fuzz
of its last group counterpart. Ties imply that the probability distribution
of x
is not strictly continuous, which means that
\(Pr(\text{x}_1>\text{x}_2)\neq 0.5\) under the null hypothesis of no
trend (and the assumption of independent identically distributed
observations). When ties are present, the computed binomial probabilities are
not exact, and the hypothesis tests will be conservative.
Hypothesis Tests¶
In the following, i indexes an observation from group 1, while j indexes the corresponding observation in group 2 (two groups) or group 3 (three groups).
\(H_0 : Pr(X_i>X_j)=Pr(X_i<X_j)=0.5\)
\(H_1 : Pr(X_i>X_j)<Pr(X_i<X_j)\)
Hypothesis of upward trend. Reject if
pstat[2]
(orpstat[6])
is less than the significance level.\(H_0 : Pr(X_i>X_j)=Pr(X_i<X_j)=0.5\)
\(H_1 : Pr(X_i>X_j)>Pr(X_i<X_j)\)
Hypothesis of downward trend. Reject if
pstat[1]
(orpstat[5]
) is less than the significance level.\(H_0 : Pr(X_i>X_j)=Pr(X_i<X_j)=0.5\)
\(H_1 : Pr(X_i>X_j)\neq Pr(X_i<X_j)\)
Two tailed test. Reject if 2 max(
pstat[1]
,pstat[2]
) (or 2 max(pstat[5]
,pstat[6]
) is less than the significance level.
Assumptions¶
- The observations are a random sample; i.e., the observations are independently and identically distributed.
- The distribution is continuous.
Example¶
This example illustrates both the location and dispersion tests. The data,
which are taken from Bradley (1968), page 176, give the closing price of
AT&T on the New York stock exchange for 36 days in 1965. Tests for trends in
location (Default
), and for trends in dispersion (dispersion
) are
performed. Trends in location are found.
from __future__ import print_function
from numpy import *
from pyimsl.stat.coxStuartTrendsTest import coxStuartTrendsTest
from pyimsl.stat.writeMatrix import writeMatrix
ids = 0
k = 2
nmiss = []
stat = []
fuzz = 0.001
x = array([9.5, 9.875, 9.25, 9.5, 9.375, 9.0, 8.75,
8.625, 8.0, 8.25, 8.25, 8.375, 8.125, 7.875, 7.5, 7.875, 7.875,
7.75, 7.75, 7.75, 8.0, 7.5, 7.5, 7.125, 7.25, 7.25, 7.125, 6.75,
6.5, 7.0, 7.0, 6.75, 6.625, 6.625, 7.125, 7.75])
pstat1 = coxStuartTrendsTest(x,
fuzz=fuzz,
stat=stat,
nMissing=nmiss)
writeMatrix("nstat", stat, writeFormat="%4i")
writeMatrix("pstat", pstat1, writeFormat="%7.5f")
print("n missing = %d\n" % nmiss[0])
dispersion = {"k": k, "ids": ids}
pstat2 = coxStuartTrendsTest(x,
dispersion=dispersion,
fuzz=fuzz,
stat=stat,
nMissing=nmiss)
writeMatrix("nstat", stat, writeFormat="%4i")
writeMatrix("pstat", pstat2, writeFormat="%7.5f")
print("n missing = %d" % nmiss[0])
Output¶
***
*** Warning error issued from IMSL function coxStuartTrendsTest:
*** At least one tie is detected between the samples.
***
n missing = 0
***
*** Warning error issued from IMSL function coxStuartTrendsTest:
*** At least one tie is detected between the samples.
***
n missing = 0
nstat
1 2 3 4 5 6 7 8
0 17 1 18 0 12 0 12
pstat
1 2 3 4 5 6 7 8
1.00000 0.00007 1.00000 0.00000 1.00000 0.00024 1.00000 0.00024
nstat
1 2 3 4 5 6 7 8
4 3 2 9 4 2 0 6
pstat
1 2 3 4 5 6 7 8
0.25391 0.91016 0.74609 0.50000 0.34375 0.89062 0.34375 0.89062