MarginalModelFit {cmm} | R Documentation |
MarginalModelFit
Description
Fits marginal models, by default using maximum likelihood.
Usage
MarginalModelFit(dat, model, ShowSummary = TRUE, MaxSteps = 1000, MaxStepSize = 1,
MaxError = 1e-20, StartingPoint = "Automatic", MaxInnerSteps = 2,
ShowProgress = TRUE, CoefficientDimensions="Automatic", Labels="Automatic",
ShowCoefficients = TRUE, ShowParameters = FALSE, ParameterCoding = "Effect",
ShowCorrelations = FALSE, Method = "ML", Title = "Summary of model fit")
Arguments
dat |
vector of frequencies or data frame |
model |
list specified eg as |
ShowSummary |
Whether or not to execute |
MaxSteps |
integer: maximum number of steps of the algorithm |
MaxStepSize |
number greater than 0 and at most 1: step size |
MaxError |
numeric: maximum error term |
StartingPoint |
vector of starting frequencies corresponding to all cells in the manifest table |
MaxInnerSteps |
nonnegative integer: only used for latent variable models, indicates number of steps in M step of EM algorithms |
ShowProgress |
boolean or integer: FALSE for no progress information, TRUE or 1 for information at every step, an integer k for information at every k-th step |
CoefficientDimensions |
numeric vector of dimensions of the table in which the coefficient vector is to be arranged |
Labels |
list of characters or numbers indicating labels for dimensions of table in which the coefficient vector is to be arranged |
ShowCoefficients |
boolean, indicating whether or not the coefficients are to be displayed |
ShowParameters |
boolean, indicating whether or not the parameters (computed from the coefficients) are to be displayed |
ParameterCoding |
Coding to be used for parameters, choice of |
ShowCorrelations |
boolean, indicating whether or not to show the correlation matrix for the estimated coefficients |
Method |
character, choice of "ML" for maximum likelihood or "GSK" for the GSK method |
Title |
title of computation to appear at top of screen output |
Details
The data can be a data frame or vector of frequencies. MarginalModelFit
converts a data frame dat
to a vector of
frequencies using c(t(ftable(dat)))
.
The model specification is fairly flexible. We first describe the most typical way to specify the model.
The model itself should typically first be written in the form of a constraint vector as
B'\theta(A'\pi) = 0
where B' is a contrast matrix, A' is matrix, normally of zeroes and ones, such that A'pi gives a vector of marginal probabilities, and the function theta yields
a list of (marginal) coefficients. The model is then specified as model=list(bt,coeff,at)
where bt
is the matrix B', at
is the matrix A', and coeff
represents the vector of coefficients using the generalized exp-log notation. For most of the models in the book, bt
can be obtained directly using ConstraintMatrix
,
coeff
can be obtained directly using SpecifyCoefficient
, and at
can be obtained directly using MarginalMatrix
.
Note that CMM does not permit the C and X matrix in the model
C'\theta(A'\pi) = X\beta
to be specified for use in the programme. The model has to be rewritten in terms of constraints as above, which is normally straightforward to do with the use of ConstraintMatrix
.
For many purposes, estimates and standard errors for a beta vector as in the equation above can still be obtained using the optional argument ShowParameters=TRUE
.
There are two ways to specify coeff
. The first is using the generalized exp-log notation, in which case coeff[[1]]
should be a list of matrices, and
coeff[[2]]
should be a list of predefined functions of the same length. The second is to set coeff
equal to a predefined function; for example, marginal loglinear models
are obtained by setting coeff="log"
.
The model can be specified in various other ways: as model=list(coeff,at)
, model=list(bt,coeff)
, model=at
, or even just model=coeff
.
Furthermore, the model
B'\theta(A'\pi) = d
with d a nonzero vector is specified in the form model=list(bt,coeff,at,d)
.
To specify the simultaneous model
B'\theta(A'\pi) = 0\\ \log\pi=X\beta
the extended model specification model=list(margmodel,x)
should be used, where margmodel
has one of the above forms, and x
is a design matrix,
which can be obtained using DesignMatrix
. Fitting is often more efficient by specifying a loglinear model for the joint distribution in this way rather than
using constraints.
The default on-screen output when running fit=MarginalModelFit(...)
is given by summary(fit)
. Important here is the distinction between coefficients and parameters, briefly
described above. Standard output gives the coefficients. These are that part of model
without the bt
matrix, eg if the model is list(bt,coeff,at)
then the coefficients are list(coeff,at)
. If other coefficients are needed, ModelStatistics
can be used.
Latent variable models can be specified: if the size of the table for which model
is specified is a multiple of the the size of the
observed frequencies specified in dat
, it is assumed this is due to the presence of latent variables. With respect to vectorization,
the latent variables are assumed to change their value fastest.
Convergence may not always be achieved with MaxStepSize=1
and a lower value may need to be used, but not too low or convergence is slow. If the step size is too large,
a typical error message is "system is computationally singular: reciprocal condition number = 1.35775e-19"
Value
Most of the following are included in any output. Use summary()
to get a summary of output.
FittedFrequencies |
Vector of fitted frequencies for the full table (including any latent variables). |
Method |
Fitting method used (currently maximum likelihood, GSK or minimum discrimination information) |
LoglikelihoodRatio |
|
ChiSquare |
|
DiscriminationInformation |
|
WaldStatistic |
|
DegreesOfFreedom |
|
PValue |
p-value based on asymptotic chi-square approximation for likelihood ratio test statistic |
SampleSize |
|
BIC |
|
Eigenvalues |
|
ManifestFittedFrequencies |
For the “coefficients” in the equation bt.coeff(at.pi)=d, the following statistics are available:
ObservedCoefficients |
|
FittedCoefficients |
|
CoefficientStandardErrors |
|
CoefficientZScores |
|
CoefficientAdjustedResiduals |
|
CoefficientCovarianceMatrix |
|
CoefficientCorrelationMatrix |
|
CoefficientAdjustedResidualCovarianceMatrix |
|
CoefficientDimensions |
|
CoefficientTableVariableLabels |
|
CoefficientTableCategoryLabels |
The “parameters” are certain linear combinations of the coefficients. For example, if the coefficients are log probabilities, then the parameters are the usual loglinear parameters.
Parameters |
For the i-th subset of variables, the parameters are obtained by
Parameters[[i]]$ |
The following statistics for the parameters belonging to each subset of variable are available.
Parameters[[i]]$ObservedCoefficients |
|
Parameters[[i]]$FittedCoefficients |
|
Parameters[[i]]$CoefficientStandardErrors |
|
Parameters[[i]]$CoefficientZScores |
|
Parameters[[i]]$CoefficientAdjustedResiduals |
|
Parameters[[i]]$CoefficientCovarianceMatrix |
|
Parameters[[i]]$CoefficientCorrelationMatrix |
|
Parameters[[i]]$CoefficientAdjustedResidualCovarianceMatrix |
|
Parameters[[i]]$CoefficientDimensions |
|
Parameters[[i]]$CoefficientTableVariableLabels |
|
Parameters[[i]]$CoefficientTableCategoryLabels |
Author(s)
W. P. Bergsma w.p.bergsma@lse.ac.uk
References
Bergsma, W. P. (1997). Marginal models for categorical data. Tilburg, The Netherlands: Tilburg University Press. http://stats.lse.ac.uk/bergsma/pdf/bergsma_phdthesis.pdf
See Also
SampleStatistics
, ModelStatistics
Examples
# see also the built-in data sets
data(NKPS)
# Fit the model asserting Goodman and Kruskal's gamma is zero for
# Child's attitude toward sex role's (NKPS[,3], three categories) and
# parent's attitude toward sex role's (NKPS[,4], three categories).
coeff = SpecifyCoefficient("GoodmanKruskalGamma",c(3,3))
fit = MarginalModelFit(NKPS[,c(3,4)], coeff )
# Marginal homogeneity (MH) in a 3x3 table AB
# Note that MH is equivalent to independence in the 2x3 table of marginals IR, in which
# the row with I=1 gives the A marginal, and the row with I=2 gives the B marginal
n <- c(1,2,3,4,5,6,7,8,9)
at <- MarginalMatrix(c("A","B"),list(c("A"),c("B")),c(3,3))
bt <- ConstraintMatrix(c("I","R"),list(c("I"),c("R")),c(2,3))
model <- list( bt, "log", at)
fit <- MarginalModelFit(n,model)
#Output can be tidied up:
fit <- MarginalModelFit(n,model,CoefficientDimensions=c(2,3))