Calculate Generalized Log Odds for Frequency Tables
Computes (log) odds and their asymptotic variance covariance matrix for R (by strata) tables. Odds are calculated for pairs of levels of one array dimension (typically a response or focal variable) separately for each level of all stratifying dimensions. See Friendly et al. (2011) for a sketch of a general theory.
lodds(x, ...) ## Default S3 method: lodds(x, response = NULL, strata = NULL, log = TRUE, ref = NULL, correct = any(x == 0), ...) ## S3 method for class 'formula' lodds(formula, data = NULL, ..., subset = NULL, na.action = NULL) odds(x, log = FALSE, ...) ## S3 method for class 'lodds' coef(object, log = object$log, ...) ## S3 method for class 'lodds' vcov(object, log = object$log, ...) ## S3 method for class 'lodds' print(x, log = x$log, ...) ## S3 method for class 'lodds' confint(object, parm, level = 0.95, log = object$log, ...) ## S3 method for class 'lodds' dim(x, ...) ## S3 method for class 'lodds' dimnames(x, ...) ## S3 method for class 'lodds' as.array(x, log=x$log, ...) ## S3 method for class 'lodds' t(x) ## S3 method for class 'lodds' aperm(a, perm, ...)
x |
an object. For the default method a k-way matrix/table/array of frequencies. The number of margins has to be at least 2. |
response |
Numeric or character indicating the margin of a
$k$-way table |
strata |
Numeric or character indicating the margins of a
$k$-way table |
ref |
numeric or character. Reference categories for the (non-stratum) row and column dimensions that should be employed for computing the odds. By default, odds for profile contrasts (or sequential contrasts, i.e., successive differences of adjacent categories) are used. See details below. |
formula |
a formula specifying the variables used to create a
contingency table from |
data |
either a data frame, or an object of class |
subset |
an optional vector specifying a subset of observations to be used. |
na.action |
a function which indicates what should happen when
the data contain |
log |
logical. Should the results be displayed on a log scale
or not? All internal computations are always on the log-scale but the
results are transformed by default if |
correct |
logical or numeric. Should a continuity correction
be applied before computing odds?
If |
a, object |
an object of class |
perm |
numeric or character vector specifying a permutation of strata. |
... |
arguments passed to methods. |
parm |
a specification of which parameters are to be given confidence intervals, either a vector of numbers or a vector of names. If missing, all parameters are considered. |
level |
the confidence level required for the |
For an n-way table with the response
variable containing R levels,
(log) odds are formed (by default) for the set of (R-1)
contrasts among the response levels.
The ref
argument allows these to be specified in a general
way.
ref = NULL
(default) corresponds to “profile contrasts”
(or sequential contrasts or successive differences) for ordered categories,
i.e., R1–R2, R2–R3, R3–R4, etc., and similarly for the column categories.
These are sometimes called “local odds” or “adjacent odds”.
ref = 1
gives contrasts with the first category; ref = dim(x)
gives contrasts with the last category.
Note that all such parameterizations are equivalent, in that one can derive all other possible odds from any non-redundant set, but the interpretation of these values depends on the parameterization.
See the help page of plot.loddsratio
for related visualization methods.
There is as yet no plot method for lodds
objects.
An object of class lodds
, with the following components:
coefficients |
A named vector, of length (R-1) x (C-1) x |
vcov |
Variance covariance matrix of the log odds. |
dimnames |
Dimension names for the log odds, considered as a table of
size (R-1, C-1, |
dim |
Corresponding dimension vector. |
contrasts |
A matrix C, such that |
log |
A logical, indicating the value of |
The method of calculation is an example of the use of the delta method described by Agresti (2013), Section 16.1.6, giving estimates of log odds ratios and their asymptotic covariance matrix.
The coef
method returns the coefficients
component as a vector
of length (R-1) x prod(dim(x)[strata])
.
The dim
and dimnames
methods provide the proper attributes for
treating the coefficients
vector as an (R-1) x strata array.
as.matrix
and as.array
methods are also provided for this purpose.
The confint
method computes confidence intervals for the log odds
(or for odds, with log = FALSE
).
The coeftest
method (summary
is an alias)
prints the asymptotic standard errors, z tests (standardized log odds), and the corresponding p values.
Structural zeros: In addition to the options for zero cells provided by correct
,
the function allows for structural zeros to be represented as NA
in the data argument.
NA
in the data yields NA
as the LOR
estimate, but does not affect other
cells.
odds
is just an alias to lodds
with the default log=FALSE
for
convenience.
Achim Zeileis, Michael Friendly and David Meyer.
A. Agresti (2013), Categorical Data Analysis, 3rd Ed. New York: Wiley.
Fleiss, J. L. (1981). Statistical Methods for Rates and Proportions. 2nd Edition. New York: Wiley.
M. Friendly (2000), Visualizing Categorical Data. SAS Institute, Cary, NC.
Friendly, M., Turner, H,, Firth, D., Zeileis, A. (2011). Advances in Visualizing Categorical Data Using the vcd, gnm and vcdExtra Packages in R. Correspondence Analysis and Related Methods (CARME 2011). http://www.datavis.ca/papers/adv-vcd-4up.pdf
loddsratio
for log odds ratios;
confint
for confidence intervals;
coeftest
for z-tests of significance
## artificial example set.seed(1) x <- matrix(rpois(5 * 3, 7), ncol = 5, nrow = 3) dimnames(x) <- list(Row = head(letters, 3), Col = tail(letters, 5)) x_lodds <- lodds(x) coef(x_lodds) x_lodds confint(x_lodds) summary(x_lodds) ### 2 x 2 x k cases ##data(CoalMiners, package = "vcd") #lor_CM <- loddsratio(CoalMiners) #lor_CM #coef(lor_CM) #confint(lor_CM) #confint(lor_CM, log = FALSE) # ### 2 x k x 2 #lor_Emp <-loddsratio(Employment) #lor_Emp #confint(lor_Emp) # ### 4 way tables #data(Punishment, package = "vcd") #lor_pun <- loddsratio(Freq ~ memory + attitude | age + education, data = Punishment) #lor_pun #confint(lor_pun) #summary(lor_pun) # ## fit linear model using WLS #lor_pun_df <- as.data.frame(lor_pun) #pun_mod1 <- lm(LOR ~ as.numeric(age) * as.numeric(education), # data = lor_pun_df, weights = 1 / ASE^2) #anova(pun_mod1) # ### illustrate ref levels #VA.fem <- xtabs(Freq ~ left + right, subset=gender=="female", data=VisualAcuity) #VA.fem #loddsratio(VA.fem) # profile contrasts #loddsratio(VA.fem, ref=1) # contrasts against level 1 #loddsratio(VA.fem, ref=dim(VA.fem)) # contrasts against level 4 #
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.