binom2.orUC: Bivariate Odds Ratio Model

Description Usage Arguments Details Value Author(s) See Also Examples

Description

Density and random generation for a bivariate binary regression model using an odds ratio as the measure of dependency.

Usage

1
2
3
4
5
6
7
8
rbinom2.or(n, mu1,
           mu2 = if (exchangeable) mu1 else stop("argument 'mu2' not specified"),
           oratio = 1, exchangeable = FALSE, tol = 0.001, twoCols = TRUE,
           colnames = if (twoCols) c("y1","y2") else c("00", "01", "10", "11"),
           ErrorCheck = TRUE)
dbinom2.or(mu1, mu2 = if (exchangeable) mu1 else stop("'mu2' not specified"),
           oratio = 1, exchangeable = FALSE, tol = 0.001,
           colnames = c("00", "01", "10", "11"), ErrorCheck = TRUE)

Arguments

n

number of observations. Same as in runif. The arguments mu1, mu2, oratio are recycled to this value.

mu1, mu2

The marginal probabilities. Only mu1 is needed if exchangeable = TRUE. Values should be between 0 and 1.

oratio

Odds ratio. Must be numeric and positive. The default value of unity means the responses are statistically independent.

exchangeable

Logical. If TRUE, the two marginal probabilities are constrained to be equal.

twoCols

Logical. If TRUE, then a n * 2 matrix of 1s and 0s is returned. If FALSE, then a n * 4 matrix of 1s and 0s is returned.

colnames

The dimnames argument of matrix is assigned list(NULL, colnames).

tol

Tolerance for testing independence. Should be some small positive numerical value.

ErrorCheck

Logical. Do some error checking of the input parameters?

Details

The function rbinom2.or generates data coming from a bivariate binary response model. The data might be fitted with the VGAM family function binom2.or.

The function dbinom2.or does not really compute the density (because that does not make sense here) but rather returns the four joint probabilities.

Value

The function rbinom2.or returns either a 2 or 4 column matrix of 1s and 0s, depending on the argument twoCols.

The function dbinom2.or returns a 4 column matrix of joint probabilities; each row adds up to unity.

Author(s)

T. W. Yee

See Also

binom2.or.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
nn <- 1000  # Example 1
ymat <- rbinom2.or(nn, mu1 = logitlink(1, inv = TRUE), oratio = exp(2), exch = TRUE)
(mytab <- table(ymat[, 1], ymat[, 2], dnn = c("Y1", "Y2")))
(myor <- mytab["0","0"] * mytab["1","1"] / (mytab["1","0"] * mytab["0","1"]))
fit <- vglm(ymat ~ 1, binom2.or(exch = TRUE))
coef(fit, matrix = TRUE)

bdata <- data.frame(x2 = sort(runif(nn)))  # Example 2
bdata <- transform(bdata, mu1 = logitlink(-2 + 4 * x2, inverse = TRUE),
                          mu2 = logitlink(-1 + 3 * x2, inverse = TRUE))
dmat <- with(bdata, dbinom2.or(mu1 = mu1, mu2 = mu2, oratio = exp(2)))
ymat <- with(bdata, rbinom2.or(n = nn, mu1 = mu1, mu2 = mu2, oratio = exp(2)))
fit2 <- vglm(ymat ~ x2, binom2.or, data = bdata)
coef(fit2, matrix = TRUE)
## Not run: 
matplot(with(bdata, x2), dmat, lty = 1:4, col = 1:4, type = "l",
        main = "Joint probabilities", ylim = 0:1,
        ylab = "Probabilities", xlab = "x2", las = 1)
legend("top", lty = 1:4, col = 1:4,
       legend = c("1 = (y1=0, y2=0)", "2 = (y1=0, y2=1)",
                  "3 = (y1=1, y2=0)", "4 = (y1=1, y2=1)"))

## End(Not run)

Example output

Loading required package: stats4
Loading required package: splines
   Y2
Y1    0   1
  0 155 115
  1 120 610
[1] 6.851449
            logitlink(mu1) logitlink(mu2) loglink(oratio)
(Intercept)      0.9819754      0.9819754        1.924007
            logitlink(mu1) logitlink(mu2) loglink(oratio)
(Intercept)      -1.954835     -0.9211852        1.986282
x2                3.974116      2.8843153        0.000000

VGAM documentation built on Jan. 16, 2021, 5:21 p.m.