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

View source: R/family.glmgam.R

Family function for fitting generalized linear models to binomial responses

1 2 |

`link` |
Link function;
see |

`multiple.responses` |
Multivariate response? If If |

`parallel` |
A logical or formula. Used only if |

`zero` |
An integer-valued vector specifying which linear/additive predictors
are modelled as intercepts only. The values must be from the set
{1,2,..., |

`earg.link` |
Details at |

`bred` |
Details at |

This function is largely to
mimic `binomial`

,
however there are some differences.

When used with `cqo`

and `cao`

, it may be
preferable to use the `clogloglink`

link.

An object of class `"vglmff"`

(see `vglmff-class`

).
The object is used by modelling functions such as
`vglm`

,
`vgam`

,
`rrvglm`

,
`cqo`

,
and `cao`

.

See the above note regarding `bred`

.

The maximum likelihood estimate will not exist if the data is
*completely separable* or *quasi-completely separable*.
See Chapter 10 of Altman et al. (2004) for more details,
and safeBinaryRegression
and `hdeff.vglm`

.
Yet to do: add a `sepcheck = TRUE`

, say, argument to
further detect this problem and give an appropriate warning.

If `multiple.responses`

is `FALSE`

(default) then
the response can be of one
of two formats:
a factor (first level taken as failure),
or a 2-column matrix (first column = successes) of counts.
The argument `weights`

in the modelling function can
also be specified as any vector of positive values.
In general, 1 means success and 0 means failure
(to check, see the `y`

slot of the fitted object).
Note that a general vector of proportions of success is no
longer accepted.

The notation *M* is used to denote the number of linear/additive
predictors.

If `multiple.responses`

is `TRUE`

, then the matrix response
can only be of one format: a matrix of 1's and 0's (1 = success).

Fisher scoring is used. This can sometimes fail to converge by oscillating between successive iterations (Ridout, 1990). See the example below.

Thomas W. Yee

McCullagh, P. and Nelder, J. A. (1989).
*Generalized Linear Models*, 2nd ed. London: Chapman & Hall.

Altman, M. and Gill, J. and McDonald, M. P. (2004).
*Numerical Issues in Statistical Computing for the Social
Scientist*, Hoboken, NJ, USA: Wiley-Interscience.

Ridout, M. S. (1990).
Non-convergence of Fisher's method of scoringâ€”a simple example.
*GLIM Newsletter*, 20(6).

`hdeff.vglm`

,
`Links`

,
`rrvglm`

,
`cqo`

,
`cao`

,
`betabinomial`

,
`posbinomial`

,
`zibinomial`

,
`double.expbinomial`

,
`seq2binomial`

,
`amlbinomial`

,
`simplex`

,
`binomial`

,
`simulate.vlm`

,
safeBinaryRegression,
`residualsvglm`

.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | ```
shunua <- hunua[sort.list(with(hunua, altitude)), ] # Sort by altitude
fit <- vglm(agaaus ~ poly(altitude, 2), binomialff(link = clogloglink),
data = shunua)
## Not run:
plot(agaaus ~ jitter(altitude), shunua, ylab = "Pr(Agaaus = 1)",
main = "Presence/absence of Agathis australis", col = 4, las = 1)
with(shunua, lines(altitude, fitted(fit), col = "orange", lwd = 2))
## End(Not run)
# Fit two species simultaneously
fit2 <- vgam(cbind(agaaus, kniexc) ~ s(altitude),
binomialff(multiple.responses = TRUE), data = shunua)
## Not run:
with(shunua, matplot(altitude, fitted(fit2), type = "l",
main = "Two species response curves", las = 1))
## End(Not run)
# Shows that Fisher scoring can sometime fail. See Ridout (1990).
ridout <- data.frame(v = c(1000, 100, 10), r = c(4, 3, 3), n = rep(5, 3))
(ridout <- transform(ridout, logv = log(v)))
# The iterations oscillates between two local solutions:
glm.fail <- glm(r / n ~ offset(logv) + 1, weight = n,
binomial(link = 'cloglog'), ridout, trace = TRUE)
coef(glm.fail)
# vglm()'s half-stepping ensures the MLE of -5.4007 is obtained:
vglm.ok <- vglm(cbind(r, n-r) ~ offset(logv) + 1,
binomialff(link = clogloglink), ridout, trace = TRUE)
coef(vglm.ok)
# Separable data
set.seed(123)
threshold <- 0
bdata <- data.frame(x2 = sort(rnorm(nn <- 100)))
bdata <- transform(bdata, y1 = ifelse(x2 < threshold, 0, 1))
fit <- vglm(y1 ~ x2, binomialff(bred = TRUE),
data = bdata, criter = "coef", trace = TRUE)
coef(fit, matrix = TRUE) # Finite!!
summary(fit)
## Not run: plot(depvar(fit) ~ x2, data = bdata, col = "blue", las = 1)
lines(fitted(fit) ~ x2, data = bdata, col = "orange")
abline(v = threshold, col = "gray", lty = "dashed")
## End(Not run)
``` |

```
Loading required package: stats4
Loading required package: splines
v r n logv
1 1000 4 5 6.907755
2 100 3 5 4.605170
3 10 3 5 2.302585
Deviance = 22.72791 Iterations - 1
Deviance = 28.29819 Iterations - 2
Deviance = 19.01799 Iterations - 3
Deviance = 21.07849 Iterations - 4
Deviance = 17.97632 Iterations - 5
Deviance = 18.59905 Iterations - 6
Deviance = 17.90326 Iterations - 7
Deviance = 18.42591 Iterations - 8
Deviance = 17.88036 Iterations - 9
Deviance = 18.37207 Iterations - 10
Deviance = 17.87175 Iterations - 11
Deviance = 18.3519 Iterations - 12
Deviance = 17.86832 Iterations - 13
Deviance = 18.34386 Iterations - 14
Deviance = 17.86692 Iterations - 15
Deviance = 18.34059 Iterations - 16
Deviance = 17.86634 Iterations - 17
Deviance = 18.33924 Iterations - 18
Deviance = 17.8661 Iterations - 19
Deviance = 18.33868 Iterations - 20
Deviance = 17.866 Iterations - 21
Deviance = 18.33845 Iterations - 22
Deviance = 17.86596 Iterations - 23
Deviance = 18.33835 Iterations - 24
Deviance = 17.86595 Iterations - 25
Deviance = 22.72791 Iterations - 1
Deviance = 28.29819 Iterations - 2
Deviance = 19.01799 Iterations - 3
Deviance = 21.07849 Iterations - 4
Deviance = 17.97632 Iterations - 5
Deviance = 18.59905 Iterations - 6
Deviance = 17.90326 Iterations - 7
Deviance = 18.42591 Iterations - 8
Deviance = 17.88036 Iterations - 9
Deviance = 18.37207 Iterations - 10
Deviance = 17.87175 Iterations - 11
Deviance = 18.3519 Iterations - 12
Deviance = 17.86832 Iterations - 13
Deviance = 18.34386 Iterations - 14
Deviance = 17.86692 Iterations - 15
Deviance = 18.34059 Iterations - 16
Deviance = 17.86634 Iterations - 17
Deviance = 18.33924 Iterations - 18
Deviance = 17.8661 Iterations - 19
Deviance = 18.33868 Iterations - 20
Deviance = 17.866 Iterations - 21
Deviance = 18.33845 Iterations - 22
Deviance = 17.86596 Iterations - 23
Deviance = 18.33835 Iterations - 24
Deviance = 17.86595 Iterations - 25
Warning messages:
1: glm.fit: algorithm did not converge
2: glm.fit: algorithm did not converge
3: In glm(r/n ~ offset(logv) + 1, weight = n, binomial(link = "cloglog"), :
fitting to calculate the null deviance did not converge -- increase 'maxit'?
(Intercept)
-5.157362
VGLM linear loop 1 : deviance = 22.72791
VGLM linear loop 2 : deviance = 28.29819
Taking a modified step.
VGLM linear loop 2 : deviance = 18.08526
VGLM linear loop 3 : deviance = 17.80972
VGLM linear loop 4 : deviance = 18.20771
Taking a modified step.
VGLM linear loop 4 : deviance = 17.46081
VGLM linear loop 5 : deviance = 17.46624
Taking a modified step.
VGLM linear loop 5 : deviance = 17.43666
VGLM linear loop 6 : deviance = 17.43668
Taking a modified step.
VGLM linear loop 6 : deviance = 17.43661
VGLM linear loop 7 : deviance = 17.43661
Taking a modified step.
VGLM linear loop 7 : deviance = 17.43661
Warning message:
In vglm.fitter(x = x, y = y, w = w, offset = offset, Xm2 = Xm2, :
some quantities such as z, residuals, SEs may be inaccurate due to convergence at a half-step
(Intercept)
-5.400638
VGLM linear loop 1 : coefficients = -0.10015601, 2.10784287
VGLM linear loop 2 : coefficients = -0.11063311, 3.70413974
VGLM linear loop 3 : coefficients = -0.10881416, 5.58548660
VGLM linear loop 4 : coefficients = -0.11736263, 7.34812525
VGLM linear loop 5 : coefficients = -0.13796225, 8.32167765
VGLM linear loop 6 : coefficients = -0.14943194, 8.49745083
VGLM linear loop 7 : coefficients = -0.15084587, 8.49588971
VGLM linear loop 8 : coefficients = -0.15083084, 8.49572183
VGLM linear loop 9 : coefficients = -0.15082982, 8.49572911
VGLM linear loop 10 : coefficients = -0.15082987, 8.49572905
VGLM linear loop 11 : coefficients = -0.15082987, 8.49572904
logitlink(prob)
(Intercept) -0.1508299
x2 8.4957290
Call:
vglm(formula = y1 ~ x2, family = binomialff(bred = TRUE), data = bdata,
criter = "coef", trace = TRUE)
Pearson residuals:
Min 1Q Median 3Q Max
logitlink(prob) -642.8 -0.3786 -0.09315 -0.0004856 1.054
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.1508 0.4626 -0.326 0.744
x2 8.4957 2.0883 4.068 4.74e-05 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Name of linear predictor: logitlink(prob)
Residual deviance: 15.0176 on 98 degrees of freedom
Log-likelihood: -7.5088 on 98 degrees of freedom
Number of Fisher scoring iterations: 11
```

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.