# hypersecant: Hyperbolic Secant Regression Family Function In VGAM: Vector Generalized Linear and Additive Models

## Description

Estimation of the parameter of the hyperbolic secant distribution.

## Usage

 ```1 2``` ``` hypersecant(link.theta = extlogitlink(min = -pi/2, max = pi/2), init.theta = NULL) hypersecant01(link.theta = extlogitlink(min = -pi/2, max = pi/2), init.theta = NULL) ```

## Arguments

 `link.theta` Parameter link function applied to the parameter theta. See `Links` for more choices. `init.theta` Optional initial value for theta. If failure to converge occurs, try some other value. The default means an initial value is determined internally.

## Details

The probability density function of the hyperbolic secant distribution is given by

f(y; theta) = exp(theta*y + log(cos(theta))) / (2*cosh(pi*y/2)),

for parameter -pi/2 < theta < pi/2 and all real y. The mean of Y is tan(theta) (returned as the fitted values). Morris (1982) calls this model NEF-HS (Natural Exponential Family-Hyperbolic Secant). It is used to generate NEFs, giving rise to the class of NEF-GHS (G for Generalized).

Another parameterization is used for `hypersecant01()`: let Y = (logit U) / pi. Then this uses

f(u;theta) = (cos(theta)/pi) * u^(-0.5+theta/pi) * (1-u)^(-0.5-theta/pi),

for parameter -pi/2 < theta < pi/2 and 0 < u < 1. Then the mean of U is 0.5 + theta/pi (returned as the fitted values) and the variance is (pi^2 - 4*theta^2) / (8*pi^2).

For both parameterizations Newton-Raphson is same as Fisher scoring.

## Value

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

T. W. Yee

## References

Jorgensen, B. (1997). The Theory of Dispersion Models. London: Chapman & Hall.

Morris, C. N. (1982). Natural exponential families with quadratic variance functions. The Annals of Statistics, 10(1), 65–80.

`extlogitlink`.

## Examples

 ``` 1 2 3 4 5 6 7 8 9 10``` ```hdata <- data.frame(x2 = rnorm(nn <- 200)) hdata <- transform(hdata, y = rnorm(nn)) # Not very good data! fit1 <- vglm(y ~ x2, hypersecant, data = hdata, trace = TRUE, crit = "coef") coef(fit1, matrix = TRUE) fit1@misc\$earg # Not recommended: fit2 <- vglm(y ~ x2, hypersecant(link = "identitylink"), data = hdata, trace = TRUE) coef(fit2, matrix = TRUE) fit2@misc\$earg ```

### Example output

```Loading required package: stats4
VGLM    linear loop  1 :  coefficients = -0.010199661, -0.031471788
VGLM    linear loop  2 :  coefficients = -0.010185930, -0.031465241
VGLM    linear loop  3 :  coefficients = -0.010185939, -0.031465258
VGLM    linear loop  4 :  coefficients = -0.010185939, -0.031465258
extlogitlink(theta, min = -1.5707963267949, max = 1.5707963267949)
(Intercept)                                                        -0.01018594
x2                                                                 -0.03146526
\$theta
\$theta\$theta

\$theta\$min
-pi/2

\$theta\$max
pi/2

\$theta\$bminvalue
NULL

\$theta\$bmaxvalue
NULL

\$theta\$inverse
 FALSE

\$theta\$deriv
 0

\$theta\$short
 TRUE

\$theta\$tag
 FALSE

attr(,"function.name")

VGLM    linear loop  1 :  loglikelihood = -146.25901
VGLM    linear loop  2 :  loglikelihood = -146.25901
theta
(Intercept) -0.008013784
x2          -0.024711166
\$theta
\$theta\$theta

\$theta\$inverse
 FALSE

\$theta\$deriv
 0

\$theta\$short
 TRUE

\$theta\$tag
 FALSE

attr(,"function.name")