Title: | K-Sample Rank Tests and their Combinations |
---|---|
Description: | Compares k samples using the Anderson-Darling test, Kruskal-Wallis type tests with different rank score criteria, Steel's multiple comparison test, and the Jonckheere-Terpstra (JT) test. It computes asymptotic, simulated or (limited) exact P-values, all valid under randomization, with or without ties, or conditionally under random sampling from populations, given the observed tie pattern. Except for Steel's test and the JT test it also combines these tests across several blocks of samples. Also analyzed are 2 x t contingency tables and their blocked combinations using the Kruskal-Wallis criterion. Steel's test is inverted to provide simultaneous confidence bounds for shift parameters. A plotting function compares tail probabilities obtained under asymptotic approximation with those obtained via simulation or exact calculations. |
Authors: | Fritz Scholz [aut, cre], Angie Zhu [aut] |
Maintainer: | Fritz Scholz <[email protected]> |
License: | GPL (>= 2) |
Version: | 1.2-10 |
Built: | 2024-11-02 06:15:44 UTC |
Source: | CRAN |
The k-sample Anderson-Darling, Kruskal-Wallis, normal score and van der Waerden score tests
are used to test the hypothesis that k samples of
sizes
come from a common continuous distribution
that is otherwise unspecified. They are rank tests.
Average rank scores are used in case of ties.
While
ad.test
is consistent against all alternatives, qn.test
tends to be sensitive mainly to shifts between samples.
The combined versions of these tests,
ad.test.combined
and
qn.test.combined
, are
used to simultaneously test such hypotheses across several blocks of samples.
The hypothesized common distributions and the number k of samples for each block of samples
may vary from block to block.
The Jonckheere-Terpstra test addresses the same hypothesis as above but is sensitive to increasing alternatives (stochastic ordering).
Also treated is the analysis of 2 x t contingency tables using the Kruskal-Wallis criterion and its extension to blocks.
Steel's simultaneous comparison test of a common control sample with treatment samples
using pairwise Wilcoxon tests for each control/treatment pair is provided, and also
the simultaneous confidence bounds of treatment shift effects resulting from the inversion of these tests
when sampling from continuous populations.
Distributional aspects are handled asymptotically in all cases, and by choice also
via simulation or exact enumeration.
While simulation is always an option, exact calculations
are only possible for small sample sizes and only when few samples are involved. These exact
calculations can be done with or without ties in the pooled samples, based on a recursively extended
version of Algorithm C (Chase's sequence) in Knuth (2011), which allows the
enumeration of all possible splits of the pooled data into samples of
sizes of , as appropriate under treatment randomization
or random sampling, when viewing tests conditionally given the observed tie pattern.
Fritz Scholz and Angie Zhu
Maintainer: Fritz Scholz <[email protected]>
Hajek, J., Sidak, Z., and Sen, P.K. (1999), Theory of Rank Tests (Second Edition), Academic Press.
Knuth, D.E. (2011), The Art of Computer Programming, Volume 4A Combinatorial Algorithms Part 1, Addison-Wesley
Kruskal, W.H. (1952), A Nonparametric Test for the Several Sample Problem, The Annals of Mathematical Statistics, Vol 23, No. 4, 525-540
Kruskal, W.H. and Wallis, W.A. (1952), Use of Ranks in One-Criterion Variance Analysis, Journal of the American Statistical Association, Vol 47, No. 260, 583–621.
Lehmann, E.L. (2006), Nonparametrics, Statistical Methods Based on Ranks, Revised First Edition, Springer, New York.
Scholz, F.W. (2023), "On Steel's Test with Ties", https://arxiv.org/abs/2308.05873
Scholz, F. W. and Stephens, M. A. (1987), K-sample Anderson-Darling Tests, Journal of the American Statistical Association, Vol 82, No. 399, 918–924.
-Value for the Asymptotic Anderson-Darling Test Distribution
This function computes upper tail probabilities for the limiting distribution of the standardized Anderson-Darling test statistic.
ad.pval(tx,m,version=1)
ad.pval(tx,m,version=1)
tx |
a vector of desired thresholds |
m |
The degrees of freedom for the asymptotic standardized Anderson-Darling test statistic |
version |
|
Extensive simulations (sampling from a common continuous distribution)
were used to extend the range of the asymptotic
-value calculation from the original
in Table 1 of the reference paper
to 36 quantiles corresponding to
= .00001, .00005, .0001, .0005, .001, .005, .01, .025,
.05, .075, .1, .2, .3, .4, .5, .6, .7, .8, .9, .925, .95, .975, .99, .9925, .995, .9975, .999,
.99925, .9995, .99975, .9999, .999925, .99995, .999975, .99999. Note that the entries of the original Table 1
were obtained by using the first 4 moments of the asymptotic distribution and a
Pearson curve approximation.
Using ad.test
,
1 million replications of the standardized statistics with sample sizes
,
were run for
(
was done twice).
These values of
correspond to degrees of freedom
in the asymptotic distribution. The random variable described by this
distribution is denoted by
.
The actual variances (for
) agreed fairly well with the asymptotic variances.
Using the convolution nature of the asymptotic distribution, the performed simulations
were exploited to result in an effective simulation of 2 million cases, except for
, i.e.,
, for which the asymptotic distribution of
was approximated by the sum of the
statistics for
and
,
for just the 1 million cases run for each
.
The interpolation of tail
probabilities
for any desired
is done in two stages. First, a spline in
is
fitted to each of the 36 quantiles obtained for
to obtain
the corresponding interpolated quantiles for the
in question.
Then a spline is fitted
to the as a function of these 36 interpolated quantiles. This latter
spline is used to determine the tail probabilities
for the
specified threshold
tx
, corresponding to either
statistic version. The above procedure is based on simulations for either version
of the test statistic,
appealing to the same limiting distribution.
a vector of upper tail probabilities corresponding to tx
Scholz, F. W. and Stephens, M. A. (1987), K-sample Anderson-Darling Tests, Journal of the American Statistical Association, Vol 82, No. 399, 918–924.
ad.pval(tx=c(3.124,5.65),m=2,version=1) ad.pval(tx=c(3.124,5.65),m=2,version=2)
ad.pval(tx=c(3.124,5.65),m=2,version=1) ad.pval(tx=c(3.124,5.65),m=2,version=2)
This function uses the Anderson-Darling criterion to test
the hypothesis that independent samples with sample sizes
arose
from a common unspecified distribution function
and testing is
done conditionally given the observed tie pattern. Thus this is a permutation test.
Both versions of the
statistic are computed.
ad.test(..., data = NULL, method = c("asymptotic", "simulated", "exact"), dist = FALSE, Nsim = 10000)
ad.test(..., data = NULL, method = c("asymptotic", "simulated", "exact"), dist = FALSE, Nsim = 10000)
... |
Either several sample vectors, say
or a list of such sample vectors, or a formula y ~ g, where y contains the pooled sample values and g is a factor (of same length as y) with levels identifying the samples to which the elements of y belong. |
data |
= an optional data frame providing the variables in formula y ~ g. |
method |
=
of full enumerations. Otherwise, |
dist |
|
Nsim |
|
If is the Anderson-Darling criterion for the
samples,
its standardized test statistic is
, with
and
representing mean and standard deviation of
. This statistic
is used to test the hypothesis that the samples all come
from the same but unspecified continuous distribution function
.
According to the reference article, two versions
of the test statistic are provided.
The above mean and standard deviation are strictly
valid only for version 1 in the
continuous distribution case.
NA values are removed and the user is alerted with the total NA count. It is up to the user to judge whether the removal of NA's is appropriate.
The continuity assumption can be dispensed with, if we deal with
independent random samples, or if randomization was used in allocating
subjects to samples or treatments, and if we view
the simulated or exact -values conditionally, given the tie pattern
in the pooled samples. Of course, under such randomization any conclusions
are valid only with respect to the group of subjects that were randomly allocated
to their respective samples.
The asymptotic
-value calculation assumes distribution continuity. No adjustment
for lack thereof is known at this point. For details on the asymptotic
-value calculation see
ad.pval
.
A list of class kSamples
with components
test.name |
|
k |
number of samples being compared |
ns |
vector of the |
N |
size of the pooled sample |
n.ties |
number of ties in the pooled samples |
sig |
standard deviations |
ad |
2 x 3 (2 x 4) matrix containing |
warning |
logical indicator, warning = TRUE when at least one
|
null.dist1 |
simulated or enumerated null distribution of version 1
of the test statistic, given as vector of all generated |
null.dist2 |
simulated or enumerated null distribution of version 2
of the test statistic, given as vector of all generated |
method |
The |
Nsim |
The number of simulations. |
method = "exact"
should only be used with caution.
Computation time is proportional to the number of enumerations. In most cases
dist = TRUE
should not be used, i.e.,
when the returned distribution vectors null.dist1
and null.dist2
become too large for the R work space. These vectors are limited in length by 1e8.
For small sample sizes and small exact null distribution
calculations are possible (with or without ties), based on a recursively extended
version of Algorithm C (Chase's sequence) in Knuth (2011), Ch. 7.2.1.3, which allows the
enumeration of all possible splits of the pooled data into samples of
sizes of
, as appropriate under treatment randomization. The
enumeration and simulation are both done in C.
It has recently come to our attention that the Anderson-Darling test, originally proposed by Pettitt (1976) in the 2-sample case and generalized to k samples by Scholz and Stephens, has a close relative created by Baumgartner et al (1998) in the 2 sample case and populatized by Neuhaeuser (2012) with at least 6 papers among his cited references and generalized by Murakami (2006) to k samples.
Baumgartner, W., Weiss, P. and Schindler, H. (1998), A nonparametric test for the general two-sample problem, Bionetrics, 54, 1129-1135.
Knuth, D.E. (2011), The Art of Computer Programming, Volume 4A Combinatorial Algorithms Part 1, Addison-Wesley
Neuhaeuser, M. (2012), Nonparametric Statistical Tests, A Computational Approach, CRC Press.
Murakami, H. (2006), A k-sample rank test based on modified Baumgartner statistic and it power comparison, Jpn. Soc. Comp. Statist., 19, 1-13.
Murakami, H. (2012), Modified Baumgartner statistic for the two-sample and multisample problems: a numerical comparison. J. of Statistical Comput. and Simul., 82:5, 711-728.
Pettitt, A.N. (1976), A two-sample Anderson_Darling rank statistic, Biometrika, 63, 161-168.
Scholz, F. W. and Stephens, M. A. (1987), K-sample Anderson-Darling Tests, Journal of the American Statistical Association, Vol 82, No. 399, 918–924.
u1 <- c(1.0066, -0.9587, 0.3462, -0.2653, -1.3872) u2 <- c(0.1005, 0.2252, 0.4810, 0.6992, 1.9289) u3 <- c(-0.7019, -0.4083, -0.9936, -0.5439, -0.3921) y <- c(u1, u2, u3) g <- as.factor(c(rep(1, 5), rep(2, 5), rep(3, 5))) set.seed(2627) ad.test(u1, u2, u3, method = "exact", dist = FALSE, Nsim = 1000) # or with same seed # ad.test(list(u1, u2, u3), method = "exact", dist = FALSE, Nsim = 1000) # or with same seed # ad.test(y ~ g, method = "exact", dist = FALSE, Nsim = 1000)
u1 <- c(1.0066, -0.9587, 0.3462, -0.2653, -1.3872) u2 <- c(0.1005, 0.2252, 0.4810, 0.6992, 1.9289) u3 <- c(-0.7019, -0.4083, -0.9936, -0.5439, -0.3921) y <- c(u1, u2, u3) g <- as.factor(c(rep(1, 5), rep(2, 5), rep(3, 5))) set.seed(2627) ad.test(u1, u2, u3, method = "exact", dist = FALSE, Nsim = 1000) # or with same seed # ad.test(list(u1, u2, u3), method = "exact", dist = FALSE, Nsim = 1000) # or with same seed # ad.test(y ~ g, method = "exact", dist = FALSE, Nsim = 1000)
This function combines several independent Anderson-Darling -sample tests
into one overall test of the hypothesis that the independent samples within
each block come from a common unspecified distribution, while the common
distributions may vary from block to block. Both versions of the
Anderson-Darling test statistic are provided.
ad.test.combined(..., data = NULL, method = c("asymptotic", "simulated", "exact"), dist = FALSE, Nsim = 10000)
ad.test.combined(..., data = NULL, method = c("asymptotic", "simulated", "exact"), dist = FALSE, Nsim = 10000)
... |
Either a sequence of several lists, say or a list of such lists, or a formula, like y ~ g | b, where y is a numeric response vector, g is a factor with levels indicating different treatments and b is a factor indicating different blocks; y, g, b are or equal length. y is split separately for each block level into separate samples according to the g levels. The same g level may occur in different blocks. The variable names may correspond to variables in an optionally supplied data frame via the data = argument, |
data |
= an optional data frame providing the variables in formula input |
method |
=
of the final distribution vector. Otherwise, it reverts to the
simulation method using the provided |
dist |
|
Nsim |
|
If is the Anderson-Darling criterion for the i-th block of
samples,
its standardized test statistic is
, with
and
representing mean and standard deviation of
. This statistic
is used to test the hypothesis that the samples in the i-th block all come
from the same but unspecified continuous distribution function
.
The combined Anderson-Darling criterion is
and
is the standardized form,
where
and
represent the mean and standard deviation of
.
The statistic
is used to simultaneously
test whether the samples
in each block come from the same continuous distribution function
.
The unspecified common distribution function
may change
from block to block. According to the reference article, two versions
of the test statistic and its corresponding combinations are provided.
The for each block of
independent samples may change from block to block.
NA values are removed and the user is alerted with the total NA count. It is up to the user to judge whether the removal of NA's is appropriate.
The continuity assumption can be dispensed with if we deal with
independent random samples, or if randomization was used in allocating
subjects to samples or treatments, independently from block to block, and if we view
the simulated or exact -values conditionally, given the tie patterns
within each block. Of course, under such randomization any conclusions
are valid only with respect to the blocks of subjects that were randomly allocated.
The asymptotic
-value calculation assumes distribution continuity. No adjustment
for lack thereof is known at this point. The same comment holds for the means
and standard deviations of respective statistics.
A list of class kSamples
with components
test.name |
|
M |
number of blocks of samples being compared |
n.samples |
list of |
nt |
|
n.ties |
vector giving the number of ties in each the |
ad.list |
list of |
mu |
vector of means of the |
sig |
vector of standard deviations of the |
ad.c |
2 x 3 (2 x 4) matrix containing
|
mu.c |
mean of |
sig.c |
standard deviation of |
warning |
logical indicator, |
null.dist1 |
simulated or enumerated null distribution of version 1
of |
null.dist2 |
simulated or enumerated null distribution of version 2
of |
method |
the |
Nsim |
the number of simulations used for each block of samples. |
This test is useful in analyzing treatment effects in randomized (incomplete) block experiments and in examining performance equivalence of several laboratories when presented with different test materials for comparison.
Scholz, F. W. and Stephens, M. A. (1987), K-sample Anderson-Darling Tests, Journal of the American Statistical Association, Vol 82, No. 399, 918–924.
## Create two lists of sample vectors. x1 <- list( c(1, 3, 2, 5, 7), c(2, 8, 1, 6, 9, 4), c(12, 5, 7, 9, 11) ) x2 <- list( c(51, 43, 31, 53, 21, 75), c(23, 45, 61, 17, 60) ) # and a corresponding data frame datx1x2 x1x2 <- c(unlist(x1),unlist(x2)) gx1x2 <- as.factor(c(rep(1,5),rep(2,6),rep(3,5),rep(1,6),rep(2,5))) bx1x2 <- as.factor(c(rep(1,16),rep(2,11))) datx1x2 <- data.frame(A = x1x2, G = gx1x2, B = bx1x2) ## Run ad.test.combined. set.seed(2627) ad.test.combined(x1, x2, method = "simulated", Nsim = 1000) # or with same seed # ad.test.combined(list(x1, x2), method = "simulated", Nsim = 1000) # ad.test.combined(A~G|B,data=datx1x2,method="simulated",Nsim=1000)
## Create two lists of sample vectors. x1 <- list( c(1, 3, 2, 5, 7), c(2, 8, 1, 6, 9, 4), c(12, 5, 7, 9, 11) ) x2 <- list( c(51, 43, 31, 53, 21, 75), c(23, 45, 61, 17, 60) ) # and a corresponding data frame datx1x2 x1x2 <- c(unlist(x1),unlist(x2)) gx1x2 <- as.factor(c(rep(1,5),rep(2,6),rep(3,5),rep(1,6),rep(2,5))) bx1x2 <- as.factor(c(rep(1,16),rep(2,11))) datx1x2 <- data.frame(A = x1x2, G = gx1x2, B = bx1x2) ## Run ad.test.combined. set.seed(2627) ad.test.combined(x1, x2, method = "simulated", Nsim = 1000) # or with same seed # ad.test.combined(list(x1, x2), method = "simulated", Nsim = 1000) # ad.test.combined(A~G|B,data=datx1x2,method="simulated",Nsim=1000)
This function uses the Kruskal-Wallis criterion to test the hypothesis of no association between the counts for two responses "A" and "B" across t categories.
contingency2xt(Avec, Bvec, method = c("asymptotic", "simulated", "exact"), dist = FALSE, tab0 = TRUE, Nsim = 1e+06)
contingency2xt(Avec, Bvec, method = c("asymptotic", "simulated", "exact"), dist = FALSE, tab0 = TRUE, Nsim = 1e+06)
Avec |
vector of length |
Bvec |
vector of length |
method |
=
|
dist |
|
tab0 |
|
Nsim |
|
For this data scenario the Kruskal-Wallis criterion is
with , treating "A" responses
as 1 and "B" responses as 2, and using midranks as explained in Lehmann (2006), Chapter 5.3.
For small sample sizes exact null distribution
calculations are possible, based on Algorithm C (Chase's sequence) in Knuth (2011),
which allows the enumeration of all possible splits of into counts
such that
,
followed by the calculation of the statistic
for each such split.
Simulation of
uses the probability model (5.35) in Lehmann (2006)
to successively generate hypergeometric counts
.
Both these processes, enumeration and simulation, are done in C.
A list of class kSamples
with components
test.name |
|
t |
number of classification categories |
KW.cont |
2 (3) vector giving the observed KW statistic, its asymptotic
|
null.dist |
simulated or enumerated null distribution
of the test statistic. It is given as an This format of For
|
method |
the |
Nsim |
the number of simulations. |
method = "exact"
should only be used with caution.
Computation time is proportional to the number of enumerations. In most cases
dist = TRUE
should not be used, i.e.,
when the returned distribution objects
become too large for R's work space.
Knuth, D.E. (2011), The Art of Computer Programming, Volume 4A Combinatorial Algorithms Part 1, Addison-Wesley
Kruskal, W.H. (1952), A Nonparametric Test for the Several Sample Problem, The Annals of Mathematical Statistics, Vol 23, No. 4, 525-540
Kruskal, W.H. and Wallis, W.A. (1952), Use of Ranks in One-Criterion Variance Analysis, Journal of the American Statistical Association, Vol 47, No. 260, 583–621.
Lehmann, E.L. (2006), Nonparametrics, Statistical Methods Based on Ranks, Revised First Edition, Springer, New York.
contingency2xt(c(25,15,20),c(16,6,18),method="exact",dist=FALSE, tab0=TRUE,Nsim=1e3)
contingency2xt(c(25,15,20),c(16,6,18),method="exact",dist=FALSE, tab0=TRUE,Nsim=1e3)
This function uses the Kruskal-Wallis criterion to test
the hypothesis of no association between the counts
for two responses
"A" and "B" across t categories and across blocks.
contingency2xt.comb(..., method = c("asymptotic", "simulated", "exact"), dist = FALSE, Nsim = 10000)
contingency2xt.comb(..., method = c("asymptotic", "simulated", "exact"), dist = FALSE, Nsim = 10000)
... |
Either several lists or a list of |
method |
=
|
dist |
|
Nsim |
|
For details on the calculation of the Kruskal-Wallis criterion and its exact or simulated
distribution for each block see contingency2xt
.
A list of class kSamples
with components
test.name |
|
t |
vector giving the number of classification categories per block |
M |
number of blocked tables |
kw.list |
a list of the |
null.dist |
simulated or enumerated null distribution
of the combined test statistic. It is given as an
|
method |
the |
Nsim |
the number of simulations. |
method = "exact"
should only be used with caution.
Computation time is proportional to the number of enumerations. In most cases
dist = TRUE
should not be used, i.e.,
when the returned distribution objects
become too large for R's work space.
The required level for Nsim
in order for method = "exact"
to be carried out, is conservative, but there is no transparent way to get a
better estimate. The actual dimension L
of the realized null.dist
will typically be much smaller, since the distribution is compacted to
its unique support values.
out <- contingency2xt.comb(list(c(25,15,20),c(16,6,18)), list(c(12,4,5),c(13,8,9)),method = "simulated", dist=FALSE, Nsim=1e3)
out <- contingency2xt.comb(list(c(25,15,20),c(16,6,18)), list(c(12,4,5),c(13,8,9)),method = "simulated", dist=FALSE, Nsim=1e3)
This function convolutes two discrete distribution, each given by strictly increasing support vectors and corresponding probability vectors.
conv(x1,p1,x2,p2)
conv(x1,p1,x2,p2)
x1 |
support vector of the first distribution, with strictly increasing elements. |
p1 |
vector of probabilities corresponding to |
x2 |
support vector of the second distribution, with strictly increasing elements. |
p2 |
vector of probabilities corresponding to |
The convolution is performed in C, looping through all paired sums, augmenting existing values or inserting them with an update of the corresponding probabilities.
A matrix with first column the new support vector and the second column the corresponding probability vector.
x1 <- c(1,2,3.5) p1 <- c(.2,.3,.5) x2 <- c(0,2.3,3,4) p2 <- c(.1,.3,.3,.3) conv(x1,p1,x2,p2)
x1 <- c(1,2,3.5) p1 <- c(.2,.3,.5) x2 <- c(0,2.3,3,4) p2 <- c(.1,.3,.3,.3) conv(x1,p1,x2,p2)
The
Jonckheere-Terpstra k-sample test statistic JT is defined
as where
is the Mann-Whitney statistic comparing
samples
and
, indexed in the order
of the stipulated increasing alternative.
It is assumed that there are no ties
in the pooled samples.
This function uses Harding's algorithm as far as computations are possible without becoming unstable.
djt(x, nn) pjt(x, nn) qjt(p, nn)
djt(x, nn) pjt(x, nn) qjt(p, nn)
x |
a numeric vector, typically integers |
nn |
a vector of integers, representing the sample sizes in the order stipulated by the alternative |
p |
a vector of probabilities |
While Harding's algorithm is mathematically correct, it is problematic in its computing implementation. The counts become very large and normalizing them by combinatorials leads to significance loss. When that happens the functions return an error message: can't compute due to numerical instability. This tends to happen when the total number of sample values becomes too large. That depends also on the way the sample sizes are allocated.
For djt
it is a vector
giving the values of
, where
n
is the length
of the input x
.
For pjt
it is a vector
giving the values of
.
For qjt
is a vecto r ,where
is the smallest
such that
.
Harding, E.F. (1984), An Efficient, Minimal-storage Procedure for Calculating the Mann-Whitney U, Generalized U and Similar Distributions, Appl. Statist. 33 No. 1, 1-6.
Jonckheere, A.R. (1954), A Distribution Free k-sample Test against Ordered Alternatives, Biometrika, 41, 133-145.
Lehmann, E.L. (2006), Nonparametrics, Statistical Methods Based on Ranks, Revised First Edition, Springer Verlag.
Terpstra, T.J. (1952), The Asymptotic Normality and Consistency of Kendall's Test against Trend, when Ties are Present in One Ranking, Indagationes Math. 14, 327-333.
djt(c(-1.5,1.2,3), 2:4) pjt(c(2,3.4,7), 3:5) qjt(c(0,.2,.5), 2:4)
djt(c(-1.5,1.2,3), 2:4) pjt(c(2,3.4,7), 3:5) qjt(c(0,.2,.5), 2:4)
The
Jonckheere-Terpstra k-sample test statistic JT is defined
as where
is the Mann-Whitney statistic comparing
samples
and
, indexed in the order
of the stipulated increasing alternative.
There may be ties in the pooled samples.
jt.test(..., data = NULL, method=c("asymptotic","simulated","exact"), dist = FALSE, Nsim = 10000)
jt.test(..., data = NULL, method=c("asymptotic","simulated","exact"), dist = FALSE, Nsim = 10000)
... |
Either several sample vectors, say
or a list of such sample vectors, or a formula y ~ g, where y contains the pooled sample values and g (same length as y) is a factor with levels identifying the samples to which the elements of y belong, the factor levels reflecting the order under the stipulated alternative, |
data |
= an optional data frame providing the variables in formula y ~ g. |
method |
=
of full enumerations. Otherwise, |
dist |
|
Nsim |
|
The JT statistic
is used to test the hypothesis that the samples all come
from the same but unspecified continuous distribution function .
It is specifically aimed at alternatives where the sampled distributions
are stochastically increasing.
NA values are removed and the user is alerted with the total NA count. It is up to the user to judge whether the removal of NA's is appropriate.
The continuity assumption can be dispensed with, if we deal with
independent random samples, or if randomization was used in allocating
subjects to samples or treatments, and if we view
the simulated or exact -values conditionally, given the tie pattern
in the pooled samples. Of course, under such randomization any conclusions
are valid only with respect to the group of subjects that were randomly allocated
to their respective samples.
The asymptotic
-value calculation is valid provided all sample sizes become large.
A list of class kSamples
with components
test.name |
|
k |
number of samples being compared |
ns |
vector |
N |
size of the pooled sample |
n.ties |
number of ties in the pooled sample |
qn |
4 (or 5) vector containing the observed |
warning |
logical indicator, |
null.dist |
simulated or enumerated null distribution
of the test statistic. It is |
method |
the |
Nsim |
the number of simulations used. |
Harding, E.F. (1984), An Efficient, Minimal-storage Procedure for Calculating the Mann-Whitney U, Generalized U and Similar Distributions, Appl. Statist. 33 No. 1, 1-6.
Jonckheere, A.R. (1954), A Distribution Free k-sample Test against Ordered Alternatives, Biometrika, 41, 133-145.
Lehmann, E.L. (2006), Nonparametrics, Statistical Methods Based on Ranks, Revised First Edition, Springer Verlag.
Terpstra, T.J. (1952), The Asymptotic Normality and Consistency of Kendall's Test against Trend, when Ties are Present in One Ranking, Indagationes Math. 14, 327-333.
x1 <- c(1,2) x2 <- c(1.5,2.1) x3 <- c(1.9,3.1) yy <- c(x1,x2,x3) gg <- as.factor(c(1,1,2,2,3,3)) jt.test(x1, x2, x3,method="exact",Nsim=90) # or # jt.test(list(x1, x2, x3), method = "exact", Nsim = 90) # or # jt.test(yy ~ gg, method = "exact", Nsim = 90)
x1 <- c(1,2) x2 <- c(1.5,2.1) x3 <- c(1.9,3.1) yy <- c(x1,x2,x3) gg <- as.factor(c(1,1,2,2,3,3)) jt.test(x1, x2, x3,method="exact",Nsim=90) # or # jt.test(list(x1, x2, x3), method = "exact", Nsim = 90) # or # jt.test(yy ~ gg, method = "exact", Nsim = 90)
This function plots upper tail probabilities of the limiting distribution against the corresponding exact or simulated probabilities, both on a log-scale.
pp.kSamples(x)
pp.kSamples(x)
x |
an object of class |
Objects of class kSamples
are produced by any of the following functions
ad.test
Anderson-Darling k-sample test.
ad.test.combined
Combined Anderson-Darling k-sample tests.
qn.test
rank scores test.
qn.test.combined
Combined rank scores tests.
contingency2xt
test for contingency table.
contingency2xt.comb
test for the combination of contingency tables.
jt.test
Jonckheere-Terpstra test.
Steel.test
Steel test. This will work only for alternative = "greater" or "two-sided".
The approximation quality for "less" is the same as for "greater".
The command pp.kSamples(x)
for an object of class kSamples
will only produce a plot when the object x
contains
non-NULL entries for the null distribution. The purpose of this function is to give the user
a sense of the asymptotic distribution accuracy.
ad.test
,
ad.test.combined
,
qn.test
,
qn.test.combined
,
contingency2xt
,
contingency2xt.comb
jt.test
Steel.test
qn.out <- qn.test(c(1,3,7,2,9),c(1,4,6,11,2),test="KW", method="simulated",dist=TRUE,Nsim=1000) pp.kSamples(qn.out)
qn.out <- qn.test(c(1,3,7,2,9),c(1,4,6,11,2),test="KW", method="simulated",dist=TRUE,Nsim=1000) pp.kSamples(qn.out)
This function uses the criterion (Kruskal-Wallis, van der Waerden scores, normal scores) to test
the hypothesis that
independent samples arise
from a common unspecified distribution.
qn.test(..., data = NULL, test = c("KW", "vdW", "NS"), method = c("asymptotic", "simulated", "exact"), dist = FALSE, Nsim = 10000)
qn.test(..., data = NULL, test = c("KW", "vdW", "NS"), method = c("asymptotic", "simulated", "exact"), dist = FALSE, Nsim = 10000)
... |
Either several sample vectors, say
or a list of such sample vectors, or a formula y ~ g, where y contains the pooled sample values and g (same length as y) is a factor with levels identifying the samples to which the elements of y belong. |
data |
= an optional data frame providing the variables in formula y ~ g. |
test |
=
|
method |
=
of
full enumerations. Otherwise, |
dist |
|
Nsim |
|
The criterion based on rank scores
is
where is the sum of rank scores for the
-th sample and
and
are sample mean and sample variance (denominator
)
of all scores.
The statistic is used to test the hypothesis that the samples all come
from the same but unspecified continuous distribution function
.
is always adjusted for ties by averaging the scores of tied observations.
Conditions for the asymptotic approximation (chi-square with degrees of freedom)
can be found in Lehmann, E.L. (2006), Appendix Corollary 10, or in
Hajek, Sidak, and Sen (1999), Ch. 6, problems 13 and 14.
For small sample sizes exact null distribution
calculations are possible (with or without ties), based on a recursively extended
version of Algorithm C (Chase's sequence) in Knuth (2011), which allows the
enumeration of all possible splits of the pooled data into samples of
sizes of , as appropriate under treatment randomization. This
is done in C, as is the simulation.
NA values are removed and the user is alerted with the total NA count. It is up to the user to judge whether the removal of NA's is appropriate.
The continuity assumption can be dispensed with, if we deal with
independent random samples from any common distribution,
or if randomization was used in allocating
subjects to samples or treatments, and if
the asymptotic, simulated or exact -values are viewed conditionally, given the tie pattern
in the pooled sample. Under such randomization any conclusions
are valid only with respect to the subjects that were randomly allocated
to their respective treatment samples.
A list of class kSamples
with components
test.name |
|
k |
number of samples being compared |
ns |
vector |
N |
size of the pooled samples |
n.ties |
number of ties in the pooled sample |
qn |
2 (or 3) vector containing the observed |
warning |
logical indicator, |
null.dist |
simulated or enumerated null distribution
of the test statistic. It is |
method |
the |
Nsim |
the number of simulations used. |
method = "exact"
should only be used with caution.
Computation time is proportional to the number of enumerations.
Experiment with system.time
and trial values for
Nsim
to get a sense of the required computing time.
In most cases
dist = TRUE
should not be used, i.e.,
when the returned distribution objects
become too large for R's work space.
Hajek, J., Sidak, Z., and Sen, P.K. (1999), Theory of Rank Tests (Second Edition), Academic Press.
Knuth, D.E. (2011), The Art of Computer Programming, Volume 4A Combinatorial Algorithms Part 1, Addison-Wesley
Kruskal, W.H. (1952), A Nonparametric Test for the Several Sample Problem, The Annals of Mathematical Statistics, Vol 23, No. 4, 525-540
Kruskal, W.H. and Wallis, W.A. (1952), Use of Ranks in One-Criterion Variance Analysis, Journal of the American Statistical Association, Vol 47, No. 260, 583–621.
Lehmann, E.L. (2006), Nonparametrics, Statistical Methods Based on Ranks, Revised First Edition, Springer Verlag.
u1 <- c(1.0066, -0.9587, 0.3462, -0.2653, -1.3872) u2 <- c(0.1005, 0.2252, 0.4810, 0.6992, 1.9289) u3 <- c(-0.7019, -0.4083, -0.9936, -0.5439, -0.3921) yy <- c(u1, u2, u3) gy <- as.factor(c(rep(1,5), rep(2,5), rep(3,5))) set.seed(2627) qn.test(u1, u2, u3, test="KW", method = "simulated", dist = FALSE, Nsim = 1000) # or with same seed # qn.test(list(u1, u2, u3),test = "KW", method = "simulated", # dist = FALSE, Nsim = 1000) # or with same seed # qn.test(yy ~ gy, test = "KW", method = "simulated", # dist = FALSE, Nsim = 1000)
u1 <- c(1.0066, -0.9587, 0.3462, -0.2653, -1.3872) u2 <- c(0.1005, 0.2252, 0.4810, 0.6992, 1.9289) u3 <- c(-0.7019, -0.4083, -0.9936, -0.5439, -0.3921) yy <- c(u1, u2, u3) gy <- as.factor(c(rep(1,5), rep(2,5), rep(3,5))) set.seed(2627) qn.test(u1, u2, u3, test="KW", method = "simulated", dist = FALSE, Nsim = 1000) # or with same seed # qn.test(list(u1, u2, u3),test = "KW", method = "simulated", # dist = FALSE, Nsim = 1000) # or with same seed # qn.test(yy ~ gy, test = "KW", method = "simulated", # dist = FALSE, Nsim = 1000)
This function combines several independent rank score -sample tests
into one overall test of the hypothesis that the independent samples within
each block come from a common unspecified distribution, while the common
distributions may vary from block to block.
qn.test.combined(..., data = NULL, test = c("KW", "vdW", "NS"), method = c("asymptotic", "simulated", "exact"), dist = FALSE, Nsim = 10000)
qn.test.combined(..., data = NULL, test = c("KW", "vdW", "NS"), method = c("asymptotic", "simulated", "exact"), dist = FALSE, Nsim = 10000)
... |
Either a sequence of several lists, say or a list of such lists, or a formula, like y ~ g | b, where y is a numeric response vector, g is a factor with levels indicating different treatments and b is a factor indicating different blocks; y, g, b have same length. y is split separately for each block level into separate samples according to the g levels. The same g level may occur in different blocks. The variable names may correspond to variables in an optionally supplied data frame via the data = argument. |
data |
= an optional data frame providing the variables in formula input |
test |
= where
For the above scores |
method |
=
of the final distribution vector, were |
dist |
Otherwise, |
Nsim |
|
The rank score criterion
for the
-th block of
samples,
is used to test the hypothesis that the samples in the
-th block all come
from the same but unspecified continuous distribution function
.
See
qn.test
for the definition of the criterion
and the exact calculation of its null distribution.
The combined criterion
is used to simultaneously test whether the samples
in block i come from the same continuous distribution function
.
However, the unspecified common distribution function
may change
from block to block.
The for each block of
independent samples may change from block to block.
The asymptotic approximating chi-square distribution has
degrees of freedom.
NA values are removed and the user is alerted with the total NA count. It is up to the user to judge whether the removal of NA's is appropriate.
The continuity assumption can be dispensed with if we deal with
independent random samples, or if randomization was used in allocating
subjects to samples or treatments, independently from block to block, and if
the asymptotic, simulated or exact -values are viewed conditionally, given the tie patterns
within each block. Under such randomization any conclusions
are valid only with respect to the blocks of subjects that were randomly allocated.
In case of ties the average rank scores are used across tied observations within each block.
A list of class kSamples
with components
test.name |
|
M |
number of blocks of samples being compared |
n.samples |
list of |
nt |
vector of length |
n.ties |
vector giving the number of ties in each the |
qn.list |
list of |
qn.c |
2 (or 3) vector containing the observed
|
warning |
logical indicator, |
null.dist |
simulated or enumerated null distribution of the
|
method |
The |
Nsim |
The number of simulations used for each block of samples. |
These tests are useful in analyzing treatment effects of shift nature in randomized (incomplete) block experiments.
Lehmann, E.L. (2006), Nonparametric, Statistical Methods Based on Ranks, Springer Verlag, New York. Ch. 6, Sec. 5D.
## Create two lists of sample vectors. x1 <- list( c(1, 3, 2, 5, 7), c(2, 8, 1, 6, 9, 4), c(12, 5, 7, 9, 11) ) x2 <- list( c(51, 43, 31, 53, 21, 75), c(23, 45, 61, 17, 60) ) # and a corresponding data frame datx1x2 x1x2 <- c(unlist(x1),unlist(x2)) gx1x2 <- as.factor(c(rep(1,5),rep(2,6),rep(3,5),rep(1,6),rep(2,5))) bx1x2 <- as.factor(c(rep(1,16),rep(2,11))) datx1x2 <- data.frame(A = x1x2, G = gx1x2, B = bx1x2) ## Run qn.test.combined. set.seed(2627) qn.test.combined(x1, x2, method = "simulated", Nsim = 1000) # or with same seed # qn.test.combined(list(x1, x2), method = "simulated", Nsim = 1000) # or qn.test.combined(A~G|B,data=datx1x2,method="simulated",Nsim=1000)
## Create two lists of sample vectors. x1 <- list( c(1, 3, 2, 5, 7), c(2, 8, 1, 6, 9, 4), c(12, 5, 7, 9, 11) ) x2 <- list( c(51, 43, 31, 53, 21, 75), c(23, 45, 61, 17, 60) ) # and a corresponding data frame datx1x2 x1x2 <- c(unlist(x1),unlist(x2)) gx1x2 <- as.factor(c(rep(1,5),rep(2,6),rep(3,5),rep(1,6),rep(2,5))) bx1x2 <- as.factor(c(rep(1,16),rep(2,11))) datx1x2 <- data.frame(A = x1x2, G = gx1x2, B = bx1x2) ## Run qn.test.combined. set.seed(2627) qn.test.combined(x1, x2, method = "simulated", Nsim = 1000) # or with same seed # qn.test.combined(list(x1, x2), method = "simulated", Nsim = 1000) # or qn.test.combined(A~G|B,data=datx1x2,method="simulated",Nsim=1000)
This data set gives turnout response times for Fire and EMS (Emergency Medical Services) dispatch calls to the Shoreline, WA, Fire Department in 2006. The turnout time refers to time elapsed between the emergency call dispatch and the crew leaving the fire station, or signaling that they are on their way while being on route already. The latter scenario may explain the bimodal distribution character.
data(ShorelineFireEMS)
data(ShorelineFireEMS)
A list of two sublists $EMSTOT
and $FireTOT
,
each with 4 vector components $ST57
, $ST63
, $ST64
, and
$ST65
respectively, giving the turnout times (in seconds) (for EMS and Fire)
at fire stations ST57, ST63, ST64, and ST65.
These data sets are provided to illustrate usage of ad.test
and qn.test
and their combined versions in testing for performance equivalence across fire stations.
Thanks to Michael Henderson and the Fire Fighters and Paramedics of the Shoreline Fire Department in Washington State.
data(ShorelineFireEMS) boxplot(ShorelineFireEMS$EMSTOT,xlab="Station", ylab="seconds", main="EMS Turnout Time") boxplot(ShorelineFireEMS$FireTOT,xlab="Station", ylab="seconds", main="Fire Turnout Time")
data(ShorelineFireEMS) boxplot(ShorelineFireEMS$EMSTOT,xlab="Station", ylab="seconds", main="EMS Turnout Time") boxplot(ShorelineFireEMS$FireTOT,xlab="Station", ylab="seconds", main="Fire Turnout Time")
This function uses pairwise Wilcoxon tests, comparing a common control sample with each of several treatment samples, in a multiple comparison fashion. The experiment wise significance probabity is calculated, estimated, or approximated, when testing the hypothesis that all independent samples arise from a common unspecified distribution, or that treatments have no effect when assigned randomly to the given subjects.
Steel.test(..., data = NULL, method = c("asymptotic", "simulated", "exact"), alternative = c("greater","less","two-sided"), dist = FALSE, Nsim = 10000)
Steel.test(..., data = NULL, method = c("asymptotic", "simulated", "exact"), alternative = c("greater","less","two-sided"), dist = FALSE, Nsim = 10000)
... |
Either several sample vectors, say
or a list of such sample vectors. or a formula y ~ g, where y contains the pooled sample values and g (same length as y) is a factor with levels identifying the samples to which the elements of y belong. The lowest factor level corresponds to the control sample, the other levels to treatment samples. |
data |
= an optional data frame providing the variables in formula y ~ g or y, g input |
method |
=
of full enumerations. Otherwise, |
alternative |
= |
dist |
|
Nsim |
|
The Steel criterion uses the Wilcoxon test statistic in the pairwise comparisons of the
common control sample with each of the treatment samples. These statistics are used in
standardized form, using the means and standard deviations as they apply conditionally
given the tie pattern in the pooled data, see Scholz (2016). This conditional treatment allows for
correct usage in the presence of ties and is appropriate either when the samples are independent
and come from the same distribution (continuous or not) or when treatments are assigned
randomly among the total of N
subjects. However, in the case of ties the significance probability
has to be viewed conditionally given the tie pattern.
The Steel statistic is used to test the hypothesis that the samples all come
from the same but unspecified distribution function , or, under random treatment
assigment, that the treatments have no effect. The significance probability is the probability
of obtaining test results as extreme or more extreme than the observed test statistic,
when testing for the possibility of a treatment effect under any of the treatments.
For small sample sizes exact (conditional) null distribution
calculations are possible (with or without ties), based on a recursively extended
version of Algorithm C (Chase's sequence) in Knuth (2011), which allows the
enumeration of all possible splits of the pooled data into samples of
sizes of , as appropriate under treatment randomization. This
is done in C, as is the simulation of such splits.
NA values are removed and the user is alerted with the total NA count. It is up to the user to judge whether the removal of NA's is appropriate.
A list of class kSamples
with components
test.name |
|
alternative |
"greater", "less", or "two-sided" |
k |
number of samples being compared, including the control sample as the first one |
ns |
vector |
N |
size of the pooled sample |
n.ties |
number of ties in the pooled sample |
st |
2 (or 3) vector containing the observed standardized Steel statistic,
its asymptotic |
warning |
logical indicator, |
null.dist |
simulated or enumerated null distribution vector
of the test statistic. It is |
method |
the |
Nsim |
the number of simulations used. |
W |
vector
|
mu |
mean vector |
tau |
vector of standard deviations of |
sig0 |
standard deviation used in calculating the significance probability of the maximum (minimum) of (absolute) standardized Mann-Whitney statistics, see Scholz (2016). |
sig |
vector
|
method = "exact"
should only be used with caution.
Computation time is proportional to the number of enumerations.
Experiment with system.time
and trial values for
Nsim
to get a sense of the required computing time.
In most cases
dist = TRUE
should not be used, i.e.,
when the returned distribution objects
become too large for R's work space.
Knuth, D.E. (2011), The Art of Computer Programming, Volume 4A Combinatorial Algorithms Part 1, Addison-Wesley
Lehmann, E.L. (2006), Nonparametrics, Statistical Methods Based on Ranks, Revised First Edition, Springer Verlag.
Scholz, F.W. (2023), "On Steel's Test with Ties", https://arxiv.org/abs/2308.05873
z1 <- c(103, 111, 136, 106, 122, 114) z2 <- c(119, 100, 97, 89, 112, 86) z3 <- c( 89, 132, 86, 114, 114, 125) z4 <- c( 92, 114, 86, 119, 131, 94) y <- c(z1, z2, z3, z4) g <- as.factor(c(rep(1, 6), rep(2, 6), rep(3, 6), rep(4, 6))) set.seed(2627) Steel.test(list(z1, z2, z3, z4), method = "simulated", alternative = "less", Nsim = 1000) # or with same seed # Steel.test(z1, z2, z3, z4,method = "simulated", # alternative = "less", Nsim = 1000) # or with same seed # Steel.test(y ~ g, method = "simulated", # alternative = "less", Nsim=1000)
z1 <- c(103, 111, 136, 106, 122, 114) z2 <- c(119, 100, 97, 89, 112, 86) z3 <- c( 89, 132, 86, 114, 114, 125) z4 <- c( 92, 114, 86, 119, 131, 94) y <- c(z1, z2, z3, z4) g <- as.factor(c(rep(1, 6), rep(2, 6), rep(3, 6), rep(4, 6))) set.seed(2627) Steel.test(list(z1, z2, z3, z4), method = "simulated", alternative = "less", Nsim = 1000) # or with same seed # Steel.test(z1, z2, z3, z4,method = "simulated", # alternative = "less", Nsim = 1000) # or with same seed # Steel.test(y ~ g, method = "simulated", # alternative = "less", Nsim=1000)
This function inverts pairwise Wilcoxon tests, comparing a common control sample with each of several treatment samples to provide simultaneous confidence bounds for the respective shift parameters by which the sampled treatment populations may differ from the control population. It is assumed that all samples are independent and that the sampled distributions are continuous to avoid ties. The joint coverage probability for all bounds/intervals is calculated, estimated, or approximated, see Details. For treatment of ties also see Details.
SteelConfInt(..., data = NULL, conf.level = 0.95, alternative = c("less", "greater", "two.sided"), method = c("asymptotic", "exact", "simulated"), Nsim = 10000)
SteelConfInt(..., data = NULL, conf.level = 0.95, alternative = c("less", "greater", "two.sided"), method = c("asymptotic", "exact", "simulated"), Nsim = 10000)
... |
Either several sample vectors, say
or a list of such sample vectors. or a formula y ~ g, where y contains the pooled sample values and g (same length as y) is a factor with levels identifying the samples to which the elements of y belong. The lowest factor level corresponds to the control sample, the other levels to treatment samples. |
data |
= an optional data frame providing the variables in formula y ~ g. |
conf.level |
|
alternative |
=
|
method |
=
|
Nsim |
|
The first sample is treated as control sample with sample size . The remaining
samples are treatment samples.
Let
denote the respective Wilcoxon statistics comparing the common control sample (index 1)
with each of the
treatment samples (indexed by
).
For each comparison of control and treatment
sample
only the observations of the two samples involved are ranked.
By
we denote
the corresponding Mann-Whitney test statistic.
Furthermore, let
denote the
-th ordered value (ascending order) of the
paired differences between the observations in treatment sample
and those of the control
sample. By simple extension of results in Lehmann (2006), pages 87 and 92, the following equations hold,
relating the null distribution of the
Mann-Whitney statistics and the joint coverage probabilities of the
for any set of
with
.
and
where refers to the distribution under
and
refers to the joint null distribution of the
when all sampled
distributions are the same and continuous. There are
indices
that can be manipulated
to affect the achieved confidence level. To limit the computational complexity
standardized versions of the
, i.e.,
with
and
representing mean and standard deviation of
,
are used to choose a common value for
(satisfying the
level) from the multivariate normal approximation
for the
(see Miller (1981) and Scholz (2016)), and reduce that
to integer values for
, rounding up, rounding down, and rounding to the nearest integer. These
integers
are then used in approximating the actual joint probabilities
, and from these three coverage probabilities
the one that is closest to the nominal confidence level
and
and also also the one that is closest without the restriction
are chosen.
When method = "exact"
or = "simulated"
is specified, the same process
is used, using either the fully enumerated exact distribution of (based on a recursive
version of Chase's sequence as presented in Knuth (2011)) for all sample splits,
or the simulated distribution of
. However, since these distributions are discrete
the starting point before rounding up is the smallest quantile such that the proportion of distribution values less
or equal to it is at least
. The starting point before rounding down is the highest quantile such that
the proportion of distribution values less
or equal to it is at most
. The third option of rounding to the closest integer is performed using
the average of the first two.
Confidence intervals are constructed by using upper and lower confidence bounds, each with
same confidence level of .
When the original sample data appear to be rounded, and especially when there are ties,
one should widen the computed intervals or bounds by the rounding , as illustrated
in Lehmann (2006), pages 85 and 94. For example, when all sample values appear to end in one of
,
the rounding
would be
. Ultimately, this is a judgment call for the user. Such widening
of intervals will make the actually achieved confidence level
the stated achieved level.
A list of class kSamples
with components
test.name |
|
n1 |
the control sample size |
ns |
vector |
N |
size of the pooled sample |
n.ties |
number of ties in the pooled sample |
bounds |
a list of data frames. When In case of In the case of When
In either case the structure and meaning
of these data frames parallels that of the |
method |
the |
Nsim |
the number of simulations used. |
j.LU |
an |
method = "exact"
should only be used with caution.
Computation time is proportional to the number of enumerations.
Experiment with system.time
and trial values for
Nsim
to get a sense of the required computing time.
Knuth, D.E. (2011), The Art of Computer Programming, Volume 4A Combinatorial Algorithms Part 1, Addison-Wesley
Lehmann, E.L. (2006), Nonparametrics, Statistical Methods Based on Ranks, Revised First Edition, Springer Verlag.
Miller, Rupert G., Jr. (1981), Simultaneous Statistical Inference, Second Edition, Springer Verlag, New York.
Scholz, F.W. (2023), "On Steel's Test with Ties", https://arxiv.org/abs/2308.05873
z1 <- c(103, 111, 136, 106, 122, 114) z2 <- c(119, 100, 97, 89, 112, 86) z3 <- c( 89, 132, 86, 114, 114, 125) z4 <- c( 92, 114, 86, 119, 131, 94) set.seed(2627) SteelConfInt(list(z1,z2,z3,z4),conf.level=0.95,alternative="two.sided", method="simulated",Nsim=10000) # or with same seed # SteelConfInt(z1,z2,z3,z4,conf.level=0.95,alternative="two.sided", # method="simulated",Nsim=10000)
z1 <- c(103, 111, 136, 106, 122, 114) z2 <- c(119, 100, 97, 89, 112, 86) z3 <- c( 89, 132, 86, 114, 114, 125) z4 <- c( 92, 114, 86, 119, 131, 94) set.seed(2627) SteelConfInt(list(z1,z2,z3,z4),conf.level=0.95,alternative="two.sided", method="simulated",Nsim=10000) # or with same seed # SteelConfInt(z1,z2,z3,z4,conf.level=0.95,alternative="two.sided", # method="simulated",Nsim=10000)