R: GAM Tweedie families

Tweedie {mgcv} | R Documentation

## GAM Tweedie families

### Description

Tweedie families, designed for use with `gam` from the `mgcv` library. Restricted to variance function powers between 1 and 2. A useful alternative to `quasi` when a full likelihood is desirable. `Tweedie` is for use with fixed `p`. `tw` is for use when `p` is to be estimated during fitting. For fixed `p` between 1 and 2 the Tweedie is an exponential family distribution with variance given by the mean to the power `p`.

`tw` is only useable with `gam`, not `bam` or `gamm`. `Tweedie` works with all three.

### Usage

    Tweedie(p=1, link = power(0))
    tw(theta = NULL, link = "log",a=1.01,b=1.99)

### Arguments

`p` | the variance of an observation is proportional to its mean to the power `p`. `p` must be greater than 1 and less than or equal to 2. 1 would be Poisson, 2 is gamma.
`link` | The link function: one of `"log"`, `"identity"`, `"inverse"`, `"sqrt"`, or a `power` link (`Tweedie` only).
`theta` | Related to the Tweedie power parameter by p=exp(a+b*exp(theta))/(1+exp(theta)). If this is supplied as a positive value then it is taken as the fixed value for `p`. If it is a negative values then its absolute value is taken as the initial value for `p`.
`a` | lower limit on `p` for optimization.
`b` | upper limit on `p` for optimization.

### Details

A Tweedie random variable with 1<p<2 is a sum of `N` gamma random variables where `N` has a Poisson distribution. The p=1 case is a generalization of a Poisson distribution and is a discrete distribution supported on integer multiples of the scale parameter. For 1<p<2 the distribution is supported on the positive reals with a point mass at zero. p=2 is a gamma distribution. As p gets very close to 1 the continuous distribution begins to converge on the discretely supported limit at p=1, and is therefore highly multimodal. See `ldTweedie` for more on this behaviour.

`Tweedie` is based partly on the `poisson` family, and partly on `tweedie` from the `statmod` package. It includes extra components to work with all `mgcv` GAM fitting methods as well as an `aic` function.

The Tweedie density involves a normalizing constant with no closed form, so this is evaluated using the series evaluation method of Dunn and Smyth (2005), with extensions to also compute the derivatives w.r.t. `p` and the scale parameter. Without restricting `p` to (1,2) the calculation of Tweedie densities is more difficult, and there does not currently seem to be an implementation which offers any benefit over `quasi`. If you need this case then the `tweedie` package is the place to start.

### Value

For `Tweedie`, an object inheriting from class `family`, with additional elements

`dvar` | the function giving the first derivative of the variance function w.r.t. `mu`.
`d2var` | the function giving the second derivative of the variance function w.r.t. `mu`.
`ls` | A function returning a 3 element array: the saturated log likelihood followed by its first 2 derivatives w.r.t. the scale parameter.

For `tw`, an object of class `extended.family`.

### Author(s)

Simon N. Wood simon.wood@r-project.org.

### References

Dunn, P.K. and G.K. Smyth (2005) Series evaluation of Tweedie exponential dispersion model densities. Statistics and Computing 15:267-280

Tweedie, M. C. K. (1984). An index which distinguishes between some important exponential families. Statistics: Applications and New Directions. Proceedings of the Indian Statistical Institute Golden Jubilee International Conference (Eds. J. K. Ghosh and J. Roy), pp. 579-604. Calcutta: Indian Statistical Institute.

### See Also

`ldTweedie`, `rTweedie`

### Examples

    library(mgcv)
    set.seed(3)
    n<-400
    ## Simulate data...
    dat <- gamSim(1,n=n,dist="poisson",scale=.2)
    dat$y <- rTweedie(exp(dat$f),p=1.3,phi=.5) ## Tweedie response

    ## Fit a fixed p Tweedie, with wrong link ...
    b <- gam(y~s(x0)+s(x1)+s(x2)+s(x3),family=Tweedie(1.25,power(.1)),
             data=dat)
    plot(b,pages=1)
    print(b)

    ## Same by approximate REML...
    b1 <- gam(y~s(x0)+s(x1)+s(x2)+s(x3),family=Tweedie(1.25,power(.1)),
              data=dat,method="REML")
    plot(b1,pages=1)
    print(b1)

    ## estimate p as part of fitting

    b2 <- gam(y~s(x0)+s(x1)+s(x2)+s(x3),family=tw(),
              data=dat,method="REML")
    plot(b2,pages=1)
    print(b2)

    rm(dat)

[Package mgcv version 1.8-3 Index]