Loglinear Model Utilities
They allow for a more conceptual way to specify such models by a function for their type, as opposed to just an uninterpreted list of model terms and also allow easy specification of marginal models for a given contingency table.
They are intended to be used as tools in higher-level modeling and graphics functions, but can also be used directly.
conditional(nf, table = NULL, factors = 1:nf, with = nf) joint(nf, table = NULL, factors = 1:nf, with = nf) markov(nf, factors = 1:nf, order = 1) mutual(nf, table = NULL, factors = 1:nf) saturated(nf, table = NULL, factors = 1:nf) loglin2formula(x, env = parent.frame()) loglin2string(x, brackets = c("[", "]"), sep = ",", collapse = " ", abbrev)
nf |
number of factors for which to generate the model |
table |
a contingency table used only for factor names in the model, typically the output from |
factors |
names of factors used in the model formula when |
with |
For |
order |
For |
x |
For the |
env |
For |
brackets |
For |
sep |
For |
collapse |
For |
abbrev |
For |
The main model specification functions, conditional
, joint
,
markov
, ..., saturated
,
return a list of vectors indicating the marginal totals to be fit,
via the margin
argument to loglin
.
Each element of this list corresponds to a high-order
term in a hierarchical loglinear model, where, e.g., a term
like c("A", "B")
is equivalent to the loglm
term "A:B"
and hence automatically includes all low-order terms.
Note that these can be used to supply the expected
argument for
the default mosaic
function, when the data is supplied
as a contingency table.
The table below shows some typical results in terms of the standard shorthand notation for loglinear models, with factors A, B, C, ..., where brackets are used to delimit the high-order terms in the loglinear model.
function | 3-way | 4-way | 5-way |
mutual |
[A] [B] [C] | [A] [B] [C] [D] | [A] [B] [C] [D] [E] |
joint |
[AB] [C] | [ABC] [D] | [ABCE] [E] |
joint (with=1) |
[A] [BC] | [A] [BCD] | [A] [BCDE] |
conditional |
[AC] [BC] | [AD] [BD] [CD] | [AE] [BE] [CE] [DE] |
condit (with=1) |
[AB] [AC] | [AB] [AC] [AD] | [AB] [AC] [AD] [AE] |
markov (order=1) |
[AB] [BC] | [AB] [BC] [CD] | [AB] [BC] [CD] [DE] |
markov (order=2) |
[A] [B] [C] | [ABC] [BCD] | [ABC] [BCD] [CDE] |
saturated |
[ABC] | [ABCD] | [ABCDE] |
loglin2formula
converts the output of one of these to a model formula
suitable as the formula
for of loglm
.
loglin2string
converts the output of one of these to a string
describing the loglinear model in the shorthand bracket notation,
e.g., "[A,B] [A,C]"
.
For the main model specification functions, conditional
, joint
,
markov
, ..., the result is
a list of vectors (terms), where the elements in each vector are the
names of the factors. The elements of the list are given names
term1, term2, ...
.
Michael Friendly
These functions were inspired by the original SAS implementation of mosaic displays, described in the User's Guide, http://www.datavis.ca/mosaics/mosaics.pdf
joint(3, table=HairEyeColor) # as a formula or string loglin2formula(joint(3, table=HairEyeColor)) loglin2string(joint(3, table=HairEyeColor)) joint(2, HairEyeColor) # marginal model for [Hair] [Eye] # other possibilities joint(4, factors=letters, with=1) joint(5, factors=LETTERS) joint(5, factors=LETTERS, with=4:5) conditional(4) conditional(4, with=3:4) # use in mosaic displays or other strucplots mosaic(HairEyeColor, expected=joint(3)) mosaic(HairEyeColor, expected=conditional(3)) # use with MASS::loglm cond3 <- loglin2formula(conditional(3, table=HairEyeColor)) cond3 <- loglin2formula(conditional(3)) # same, with factors 1,2,3 require(MASS) loglm(cond3, data=HairEyeColor) saturated(3, HairEyeColor) loglin2formula(saturated(3, HairEyeColor)) loglin2string(saturated(3, HairEyeColor)) loglin2string(saturated(3, HairEyeColor), brackets='{}', sep=', ')
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.