loglinb2 {VGAM} | R Documentation |
Fits a loglinear model to two binary responses.
loglinb2(exchangeable = FALSE, zero = NULL)
exchangeable |
Logical.
If TRUE , the two marginal probabilities are constrained to
be equal. Should be set TRUE for ears, eyes, etc. data. |
zero |
Which linear/additive predictor is modelled as an
intercept only? A NULL means none of them. |
The model is
P(Y1=y1,Y2=y2) = exp(u0 + u1*y1 + u2*y2 + u12*y1*y2)
where y1 and y2 are 0 or 1, and the parameters are u1, u2, u12. The normalizing parameter u0 can be expressed as a function of the other parameters, viz.,
u0 = -log[1 + exp(u1) + exp(u2) + exp(u1 + u2 + u12)].
The linear/additive predictors are (eta1,eta2,eta3) = (u1,u2,u12).
An object of class "vglmff"
(see vglmff-class
).
The object is used by modelling functions such as vglm
,
rrvglm
and vgam
.
When fitted, the fitted.values
slot of the object contains the
four joint probabilities, labelled as
(Y1,Y2) = (0,0), (0,1), (1,0), (1,1), respectively.
The response must be a two-column matrix of ones and zeros only.
This is more restrictive than binom2.or
, which can handle
more types of input formats.
Note that each of the 4 combinations of the multivariate response
need to appear in the data set.
Thomas W. Yee
Yee, T. W. and Wild, C. J. (2001) Discussion to: ``Smoothing spline ANOVA for multivariate Bernoulli observations, with application to ophthalmology data (with discussion)'' by Gao, F., Wahba, G., Klein, R., Klein, B. Journal of the American Statistical Association, 96, 127–160.
McCullagh, P. and Nelder, J. A. (1989) Generalized Linear Models, 2nd ed. London: Chapman & Hall.
Documentation accompanying the VGAM package at http://www.stat.auckland.ac.nz/~yee contains further information and examples.
binom2.or
,
binom2.rho
,
loglinb3
.
data(coalminers) coalminers = transform(coalminers, age=(age-42)/5) # Get the n x 4 matrix of counts temp = vglm(cbind(nBnW,nBW,BnW,BW) ~ age, binom2.or, coalminers) counts = round(c(weights(temp, type="prior")) * temp@y) # Create a n x 2 matrix response for loglinb2() fred = matrix(c(0,0, 0,1, 1,0, 1,1), 4, 2, byrow=TRUE) yy = kronecker(matrix(1, nrow(counts), 1), fred) wt = c(t(counts)) age = rep(coalminers$age, rep(4, length(coalminers$age))) yy = yy[wt>0,] age = age[wt>0] wt = wt[wt>0] fit = vglm(yy ~ age, loglinb2, trace=TRUE, wei=wt) coef(fit, mat=TRUE) # Same! (at least for the log odds-ratio) summary(fit) # Try reconcile this with McCullagh and Nelder (1989), p.234 (0.166-0.131) / 0.027458 # 1.275 is approximately 1.25