Description Details Generation Methods Structure Note Author(s) References See Also Examples

Class of objects returned by fitting double generalized linear models.

Write *m_i = E(y_i)* for the expectation of the
*i*th response.
Then *Var(y_i) = s_iV(m_i)* where *V*
is the variance function and *s_i* is the dispersion of the
*i*th response
(often denoted as the Greek character ‘phi’).
We assume the link linear models
*g(m_i) = x_i^T b* and
*h(s_i) = z_i^T a*,
where *x_i* and *z_i* are vectors of covariates,
and *b* and *a* are vectors of regression
cofficients affecting the mean and dispersion respectively.
The argument `dlink`

specifies *h*.
See `family`

for how to specify *g*.
The optional arguments `mustart`

, `betastart`

and `phistart`

specify starting values for *m_i*, *b*
and *s_i* respectively.

The parameters *b* are estimated as for an ordinary glm.
The parameters *a* are estimated by way of a dual glm
in which the deviance components of the ordinary glm appear as responses.
The estimation procedure alternates between one iteration for the mean submodel
and one iteration for the dispersion submodel until overall convergence.

The output from `dglm`

, `out`

say, consists of two `glm`

objects
(that for the dispersion submodel is `out$dispersion.fit`

) with a few more
components for the outer iteration and overall likelihood.
The `summary`

and `anova`

functions have special methods for `dglm`

objects.
Any generic function which has methods for `glm`

s or `lm`

s will work on
`out`

, giving information about the mean submodel.
Information about the dispersion submodel can be obtained by using
`out$dispersion.fit`

as argument rather than out itself.
In particular `drop1(out,scale=1)`

gives correct score statistics for
removing terms from the mean submodel,
while `drop1(out$dispersion.fit,scale=2)`

gives correct score
statistics for removing terms from the dispersion submodel.

The dispersion submodel is treated as a gamma family unless the original
reponses are gamma, in which case the dispersion submodel is digamma.
(Note that the digamma and trigamma functions are required to fit a digamma
family.) This is exact if the original glm family is `gaussian`

,
`Gamma`

or `inverse.gaussian`

. In other cases it can be
justified by the saddle-point approximation to the density of the responses.
The results will therefore be close to exact ML or REML when the dispersions
are small compared to the means. In all cases the dispersion submodel as prior
weights 1, and has its own dispersion parameter which is 2.

This class of objects is returned by the `dglm`

function
to represent a fitted double generalized linear model.
Class `"dglm"`

inherits from class `"glm"`

,
since it consists of two coupled generalized linear models,
one for the mean and one for the dispersion.
Like `glm`

,
it also inherits from `lm`

.
The object returned has all the components of a `glm`

object.
The returned component `object$dispersion.fit`

is also a
`glm`

object in its own right,
representing the result of modelling the dispersion.

Objects of this class have methods for the functions
`print`

, `plot`

, `summary`

, `anova`

, `predict`

,
`fitted`

, `drop1`

, `add1`

, and `step`

, amongst others.
Specific methods (not shared with `glm`

) exist for
`summary`

and `anova`

.

A `dglm`

object consists of a `glm`

object with the following
additional components:

dispersion.fitthe dispersion submodel: a

`glm`

object representing the fitted model for the dispersions. The responses for this model are the deviance components from the original generalized linear model. The prior weights are 1 and the dispersion or scale of this model is 2.iterthis component now represents the number of outer iterations used to fit the coupled mean-dispersion models. At each outer iteration, one IRLS is done for each of the mean and dispersion submodels.

methodfitting method used:

`"ml"`

if maximum likelihood was used or`"reml"`

if adjusted profile likelihood was used.m2loglikminus twice the log-likelihood or adjusted profile likelihood of the fitted model.

The anova method is questionable when applied to an `dglm`

object with
`method="reml"`

(stick to `method="ml"`

).

Gordon Smyth,
ported to **R**\ by Peter Dunn ([email protected])

Smyth, G. K. (1989). Generalized linear models with varying dispersion.
*J. R. Statist. Soc. B*, **51**, 47–60.

Smyth, G. K., and Verbyla, A. P. (1999).
Adjusted likelihood methods for modelling dispersion in generalized linear models.
*Environmetrics*, **10**, 696-709.

Verbyla, A. P., and Smyth, G. K. (1998). Double generalized linear models: approximate residual maximum likelihood and diagnostics. Research Report, Department of Statistics, University of Adelaide.

`dglm.object`

, `Digamma family`

, `Polygamma`

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 | ```
# Continuing the example from glm, but this time try
# fitting a Gamma double generalized linear model also.
clotting <- data.frame(
u = c(5,10,15,20,30,40,60,80,100),
lot1 = c(118,58,42,35,27,25,21,19,18),
lot2 = c(69,35,26,21,18,16,13,12,12))
# The same example as in glm: the dispersion is modelled as constant
out <- dglm(lot1 ~ log(u), ~1, data=clotting, family=Gamma)
summary(out)
# Try a double glm
out2 <- dglm(lot1 ~ log(u), ~u, data=clotting, family=Gamma)
summary(out2)
anova(out2)
# Summarize the mean model as for a glm
summary.glm(out2)
# Summarize the dispersion model as for a glm
summary(out2$dispersion.fit)
# Examine goodness of fit of dispersion model by plotting residuals
plot(fitted(out2$dispersion.fit),residuals(out2$dispersion.fit))
``` |

```
Loading required package: statmod
Call: dglm(formula = lot1 ~ log(u), dformula = ~1, family = Gamma,
data = clotting)
Mean Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.01655438 0.0009275491 -17.84744 4.279230e-07
log(u) 0.01534311 0.0004149596 36.97496 2.751191e-09
(Dispersion Parameters for Gamma family estimated as below )
Scaled Null Deviance: 1890.363 on 8 degrees of freedom
Scaled Residual Deviance: 9.002787 on 7 degrees of freedom
Dispersion Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -6.288103 0.4712586 -13.34321 1.297468e-40
(Dispersion parameter for Digamma family taken to be 2 )
Scaled Null Deviance: 8.90448 on 8 degrees of freedom
Scaled Residual Deviance: 8.90448 on 8 degrees of freedom
Minus Twice the Log-Likelihood: 31.98992
Number of Alternating Iterations: 4
Call: dglm(formula = lot1 ~ log(u), dformula = ~u, family = Gamma,
data = clotting)
Mean Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.01784797 0.0010062108 -17.73780 4.464149e-07
log(u) 0.01596262 0.0002301215 69.36604 3.402379e-11
(Dispersion Parameters for Gamma family estimated as below )
Scaled Null Deviance: 2313.573 on 8 degrees of freedom
Scaled Residual Deviance: 9.003391 on 7 degrees of freedom
Dispersion Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -4.59256962 0.76357166 -6.014589 1.803438e-09
u -0.06966577 0.01502817 -4.635680 3.557663e-06
(Dispersion parameter for Digamma family taken to be 2 )
Scaled Null Deviance: 16.75853 on 8 degrees of freedom
Scaled Residual Deviance: 4.414477 on 7 degrees of freedom
Minus Twice the Log-Likelihood: 22.17126
Number of Alternating Iterations: 5
Analysis of Deviance Table
Gamma double generalized linear model
Response: lot1
DF Seq.Chisq Seq.P Adj.Chisq Adj.P
Mean model 1 48.686 0.0000000 47.403 0.0000000
Dispersion model 1 9.819 0.0017275 9.819 0.0017275
Call:
dglm(formula = lot1 ~ log(u), dformula = ~u, family = Gamma,
data = clotting)
Deviance Residuals:
Min 1Q Median 3Q Max
-0.076478 -0.010122 0.001926 0.048233 0.093677
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.0178480 0.0010062 -17.74 4.46e-07 ***
log(u) 0.0159626 0.0002301 69.37 3.40e-11 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for Gamma family taken to be 1.307633)
Null deviance: 2313.5733 on 8 degrees of freedom
Residual deviance: 9.0034 on 7 degrees of freedom
AIC: NA
Number of Fisher Scoring iterations: 5
Call:
dglm(formula = ~u, family = Digamma(link = "log"), data = clotting)
Deviance Residuals:
Min 1Q Median 3Q Max
-2.18708 -0.81757 -0.07655 0.16104 1.16959
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -4.59257 0.53790 -8.538 6e-05 ***
u -0.06967 0.01059 -6.581 0.00031 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for Digamma family taken to be 0.9925192)
Null deviance: 16.7585 on 7 degrees of freedom
Residual deviance: 4.4145 on 7 degrees of freedom
AIC: NA
Number of Fisher Scoring iterations: 5
```

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.