R: Zipf Distribution Family Function

zipf {VGAM} | R Documentation

## Zipf Distribution Family Function

### Description

Estimates the parameter of the Zipf distribution.

### Usage

    zipf(N = NULL, lshape = "loglink", ishape = NULL)

### Arguments

`N` | Number of elements, an integer satisfying `1 < N < Inf`. The default is to use the maximum value of the response. If given, `N` must be no less that the largest response value. If `N = Inf` and s>1 then this is the zeta distribution (use `zetaff` instead).
`lshape` | Parameter link function applied to the (positive) shape parameter s. See `Links` for more choices.
`ishape` | Optional initial value for the parameter s. The default is to choose an initial value internally. If converge failure occurs use this argument to input a value.

### Details

The probability function for a response Y is

P(Y=y) = (y^(-s)) / sum((1:N)^(-s)), s>0, y=1,2,...,N,

where s is the exponent characterizing the distribution. The mean of Y, which are returned as the fitted values, is H(N,s-1) / H(N,s) where H(n,m)=sum((1:n)^(-m)) is the nth generalized harmonic number.

Zipf's law is an experimental law which is often applied to the study of the frequency of words in a corpus of natural language utterances. It states that the frequency of any word is inversely proportional to its rank in the frequency table. For example, `"the"` and `"of"` are first two most common words, and Zipf's law states that `"the"` is twice as common as `"of"`. Many other natural phenomena conform to Zipf's law.

### Value

An object of class `"vglmff"` (see `vglmff-class`). The object is used by modelling functions such as `vglm` and `vgam`.

### Note

Upon convergence, the `N` is stored as `@misc$N`.

### Author(s)

T. W. Yee

### References

pp.526– of Chapter 11 of Johnson N. L., Kemp, A. W. and Kotz S. (2005). Univariate Discrete Distributions, 3rd edition, Hoboken, New Jersey, USA: Wiley.

### See Also

`dzipf`, `zetaff`, `simulate.vlm`.

### Examples

    zdata <- data.frame(y = 1:5, ofreq = c(63, 14, 5, 1, 2))
    zfit <- vglm(y ~ 1, zipf, data = zdata, trace = TRUE, weight = ofreq)
    zfit <- vglm(y ~ 1, zipf(lshape = "identitylink", ishape = 3.4), data = zdata,
                trace = TRUE, weight = ofreq, crit = "coef")
    zfit@misc$N
    (shape.hat <- Coef(zfit))
    with(zdata, weighted.mean(y, ofreq))
    fitted(zfit, matrix = FALSE)

[Package VGAM version 1.1-3 Index]