numPerms.Rd
numPerms
calculates the maximum number of permutations possible
under the current permutation scheme.
numPerms(object, control = how())
Function numPerms
returns the number of permutations for the
passed object
and the selected permutation
scheme. object
can be one of a data frame, matrix, an object
for which a scores method exists, or a numeric or integer vector. In
the case of a numeric or integer vector, a vector of length 1 can be
used and it will be expanded to a vector of length object
(i.e., 1:object
) before computing the number of
permutations. As such, object
can be the number of observations
not just the object containing the observations.
The (numeric) number of possible permutations of observations in
object
.
In general, mirroring "series"
or "grid"
designs doubles
or quadruples, respectively, the number of permutations without
mirroring (within levels of strata if present). This is not
true in two special cases:
In "grid"
designs where the number of columns is equal
to 2, and
In "series"
designs where the number of observations in
a series is equal to 2.
For example, with 2 observations there are 2 permutations for
"series"
designs:
1-2, and
2-1.
If these two permutations were mirrored, we would have:
2-1, and
1-2.
It is immediately clear that this is the same set of permutations
without mirroring (if one reorders the rows). A similar situation
arises in "grid"
designs where the number of columns
per grid is equal to 2. Note that the number of rows per
grid is not an issue here.
shuffle
and
how
. Additional nobs
methods are
provide, see nobs-methods
.
## permutation design --- see ?how
ctrl <- how() ## defaults to freely exchangeable
## vector input
v <- 1:10
(obs <- nobs(v))
#> [1] 10
numPerms(v, control = ctrl)
#> [1] 3628800
## integer input
len <- length(v)
(obs <- nobs(len))
#> [1] 1
numPerms(len, control = ctrl)
#> [1] 3628800
## new design, objects are a time series
ctrl <- how(within = Within(type = "series"))
numPerms(v, control = ctrl)
#> [1] 10
## number of permutations possible drastically reduced...
## ...turn on mirroring
ctrl <- how(within = Within(type = "series", mirror = TRUE))
numPerms(v, control = ctrl)
#> [1] 20
## Try blocking --- 2 groups of 5
bl <- numPerms(v, control = how(blocks = gl(2,5)))
bl
#> [1] 14400
## should be same as
pl <- numPerms(v, control = how(plots = Plots(strata = gl(2,5))))
pl
#> [1] 14400
stopifnot(all.equal(bl, pl))