
Last chance! 50% off unlimited learning
Sale ends in
alldiffs.object
according to the predicted values
associated with a factor.Sorts the rows of the components in an alldiffs.object
(see as.alldiffs
) that are data.frames
and the rows and columns
of those that are matrices
according to the predicted values in the
predictions
component. These predicted values are generally obtained using
predict.asreml
by specifying a classify
term comprised of one or
more variables. Generally, the values associated with one variable are sorted in
parallel within each combination of values of the other variables. When there is more
than one variable in the classify
term, the sorting is controlled using
one or more of sortFactor
, sortParallelToCombo
and sortOrder
.
If there is only one variable in the classify
then all components are sorted
according to the order of the complete set of predictions.
Note that renewClassify.alldiffs
is called after sorting to ensure that
the order of the rows and columns of the components is in standard order for the new
variable order.
# S3 method for alldiffs
sort(x, decreasing = FALSE, classify = NULL, sortFactor = NULL,
sortParallelToCombo = NULL, sortNestingFactor = NULL,
sortOrder = NULL, ...)
The alldiffs.object
supplied with the following components,
if present, sorted: predictions
, vcov
, backtransforms
, differences
,
p.differences
and sed
. Also, the sortFactor
and sortOrder
attributes are set.
An alldiffs.object
.
A logical
passed to order
that detemines whether
the order is for increasing or decreasing magnitude of the predicted
values.
A character
string giving the variables that
define the margins of the multiway table that was predicted.
Multiway tables are specified by forming an interaction type
term from the classifying variables, that is, separating the
variable names with the :
operator. If NULL
,
it will be obtained from the classify
attribute of the
as.alldiffs
object supplied through x
.
A character
containing the name of the
factor
that indexes the set of predicted values that determines
the sorting of the components. If there is only one variable in the
classify
term then sortFactor
can be NULL
and
the order is defined by the complete set of predicted values.
If there is more than one variable in the classify
term
then sortFactor
must be set. In this case the sortFactor
is sorted in the same order within each combination of the values of
the sortParallelToCombo
variables: the classify
variables, excluding the
sortFactor
. There should be only one predicted value for
each unique value of sortFactor
within each set defined by a
combination of the values of the classify
variables, excluding the
sortFactor
factor
.
The order to use is determined by either sortParallelToCombo
or
sortOrder
.
A list
that specifies a combination of the values
of the factor
s and numeric
s, excluding sortFactor
, that
are in classify
. Each of the components of the supplied list
is named for a classify
variable and specifies a single value for it. The
combination of this set of values will be used to define a subset of the predicted
values whose order will define the order of sortFactor
. Each of the other
combinations of the values of the factor
s and numeric
s will be sorted
in parallel. If sortParallelToCombo
is NULL
then the first value of
each classify
variable, except for the sortFactor
factor
,
in the predictions
component is used to define sortParallelToCombo
.
If there is only one variable in the classify
then
sortParallelToCombo
is ignored.
A character
containing the name of the
factor
that defines groups of the sortFactor
within which the predicted
values are to be ordered.
If there is only one variable in the classify
then
sortNestingFactor
is ignored.
A character
vector whose length is the same as the number
of levels for sortFactor
in the predictions
component of the
alldiffs.object
. It specifies the desired order of the
levels in the reordered components of the alldiffs.object
.
The argument sortParallelToCombo
is ignored.
The following creates a sortOrder
vector levs
for factor
f
based on the values in x
:
levs <- levels(f)[order(x)]
.
further arguments passed to or from other methods. Not used at present.
Chris Brien
The basic technique is to change the order of the levels of the sortFactor
within the predictions
and, if present, backtransforms
components so
that they are ordered for a subset of predicted values, one for each levels of the
sortFactor
. When the classify
term consists of more than one
variable then a subset of one combination of the values of variables other than
the sortFactor
, the sortParallelToCombo
combination, must be chosen for determining the
order of the sortFactor
levels. Then the sorting of the rows (and columns)
will be in parallel within each combination of the values of sortParallelToCombo
variables:
the classify
term, excluding the sortFactor
.
as.alldiffs
, allDifferences.data.frame
,
print.alldiffs
,
sort.predictions.frame
, renewClassify.alldiffs
,
redoErrorIntervals.alldiffs
,
recalcLSD.alldiffs
,
predictPlus.asreml
, predictPresent.asreml
##Halve WaterRunoff data to reduce time to execute
data(WaterRunoff.dat)
tmp <- subset(WaterRunoff.dat, Date == "05-18")
##Use asreml to get predictions and associated statistics
if (FALSE) {
#Analyse pH
m1.asr <- asreml(fixed = pH ~ Benches + (Sources * (Type + Species)),
random = ~ Benches:MainPlots,
keep.order=TRUE, data= tmp)
current.asrt <- as.asrtests(m1.asr, NULL, NULL)
current.asrt <- as.asrtests(m1.asr)
current.asrt <- rmboundary(current.asrt)
m1.asr <- current.asrt$asreml.obj
#Get predictions and associated statistics
TS.diffs <- predictPlus.asreml(classify = "Sources:Type",
asreml.obj = m1.asr, tables = "none",
wald.tab = current.asrt$wald.tab,
present = c("Type","Species","Sources"))
#Use sort.alldiffs and save order for use with other response variables
TS.diffs.sort <- sort(TS.diffs, sortFactor = "Sources",
sortParallelToCombo = list(Type = "Control"))
sort.order <- attr(TS.diffs.sort, which = "sortOrder")
#Analyse Turbidity
m2.asr <- asreml(fixed = Turbidity ~ Benches + (Sources * (Type + Species)),
random = ~ Benches:MainPlots,
keep.order=TRUE, data= tmp)
current.asrt <- as.asrtests(m2.asr)
#Use pH sort.order to sort Turbidity alldiffs object
diffs2.sort <- predictPlus(m2.asr, classify = "Sources:Type",
pairwise = FALSE, error.intervals = "Stand",
tables = "none", present = c("Type","Species","Sources"),
sortFactor = "Sources",
sortOrder = sort.order)
}
## Use lmeTest and emmmeans to get predictions and associated statistics
if (requireNamespace("lmerTest", quietly = TRUE) &
requireNamespace("emmeans", quietly = TRUE))
{
#Analyse pH
m1.lmer <- lmerTest::lmer(pH ~ Benches + (Sources * (Type + Species)) +
(1|Benches:MainPlots),
data=na.omit(tmp))
TS.emm <- emmeans::emmeans(m1.lmer, specs = ~ Sources:Type)
TS.preds <- summary(TS.emm)
den.df <- min(TS.preds$df, na.rm = TRUE)
## Modify TS.preds to be compatible with a predictions.frame
TS.preds <- as.predictions.frame(TS.preds, predictions = "emmean",
se = "SE", interval.type = "CI",
interval.names = c("lower.CL", "upper.CL"))
## Form an all.diffs object and check its validity
TS.vcov <- vcov(TS.emm)
TS.diffs <- allDifferences(predictions = TS.preds,
classify = "Sources:Type",
vcov = TS.vcov, tdf = den.df)
validAlldiffs(TS.diffs)
#Use sort.alldiffs and save order for use with other response variables
TS.diffs.sort <- sort(TS.diffs, sortFactor = "Sources",
sortParallelToCombo = list(Type = "Control"))
sort.order <- attr(TS.diffs.sort, which = "sortOrder")
#Analyse Turbidity
m2.lmer <- lmerTest::lmer(Turbidity ~ Benches + (Sources * (Type + Species)) +
(1|Benches:MainPlots),
data=na.omit(tmp))
TS.emm <- emmeans::emmeans(m2.lmer, specs = ~ Sources:Type)
TS.preds <- summary(TS.emm)
den.df <- min(TS.preds$df, na.rm = TRUE)
## Modify TS.preds to be compatible with a predictions.frame
TS.preds <- as.predictions.frame(TS.preds, predictions = "emmean",
se = "SE", interval.type = "CI",
interval.names = c("lower.CL", "upper.CL"))
## Form an all.diffs object, sorting it using the pH sort.order and check its validity
TS.vcov <- vcov(TS.emm)
TS.diffs2.sort <- allDifferences(predictions = TS.preds,
classify = "Sources:Type",
vcov = TS.vcov, tdf = den.df,
sortFactor = "Sources",
sortOrder = sort.order)
validAlldiffs(TS.diffs2.sort)
}
Run the code above in your browser using DataLab