An implementation of about 6 major classes of
statistical regression models. The central algorithm is
Fisher scoring and iterative reweighted least squares.
At the heart of this package are the vector generalized linear
and additive model (VGLM/VGAM) classes. VGLMs can be loosely
thought of as multivariate GLMs. VGAMs are data-driven
VGLMs that use smoothing. The book "Vector Generalized
Linear and Additive Models: With an Implementation in R"
(Yee, 2015)

```
CHANGES IN VGAM VERSION 1.1-0
```

NEW FEATURES

```
o New family functions: gentbinomial(dpr), gentpoisson(dpr),
genapoisson(dpr), genipoisson(dpr).
o New functions: [dpr]genabinom(), [dpr]genibinom(), care.exp2().
o Argument 'parallel' added to benini1(), gamma1(), maxwell(),
rayleigh() and topple().
o Argument 'parallel = TRUE' for exponential() does not apply to the
intercept now.
o New link function: loglogloglink().
o New variable: rainbow.sky.
o Some family functions now support 'type.fitted = "Qlinks"'
(quantile link functions in \pkg{VGAMextra}),
e.g., benini1(), gamma1(), exponential(), maxwell(), rayleigh(),
topple().
o Tested okay on R 3.5.2.
```

BUG FIXES and CHANGES

```
o All link function names now end in "link", e.g.,
loglink() replaces loge(), logitlink() replaces logit().
Backward compatability holds for older link function names,
probably for quite a while.
o gaussianff() reinstated but is effectively deprecated;
it calls uninormal() instead after a warning.
o Documentation for lerch.Rd improved, as well as zeta()
(thanks to Jerry Lewis).
o rrar.control(summary.HDEtest = FALSE) is now set.
o anova.vglm() gives an error message if it operates on a model
with just a single factor as explanatory, when type = 2 or 3.
o "summary.vglm" and "summary.vgam" prints out the names of
the linear/additive predictors by breaking the output into
lines that are not too long.
Number of "Fisher scoring" iterations printed.
o posbernoulli.tb(ridge.constant = 0.0001) now, it was
ridge.constant = 0.01 for a long time. The adjustment is now
multiplicative rather than additive.
CHANGES IN VGAM VERSION 1.0-6
```

NEW FEATURES

```
o New functions: [dr]bell(), bellff(), [dr]trinorm(), trinormal(),
o New functions: anova.vglm(), R2latvar(), ordsup().
And residualsvglm(..., type = "stdres") is implemented for
'VGAMcategorical' models and "poissonff" and "binomialff" models.
Thanks to Alan Agresti suggesting all these.
anova.vglm() works for 'type = "II"' (default) and "I" and "III".
o calibrate() has argument 'lr.confint' for likelihood ratio based
confidence intervals (for Rank == 1 "rrvglm" and "qrrvglm" objects
only). Wald vcov matrix returned in vcov list component for
poisson and binomial.
calibrate() has argument 'cf.confint' for characteristic function based
confidence intervals (for Rank == 1 "rrvglm" and "qrrvglm" objects
only).
o margeff() works for tobit() objects.
o A .control() function for a VGAM family function allows the 'HDEtest'
argument in summaryvglm() to be FALSE by default, e.g.,
zanegbinomial.control(summary.HDEtest = FALSE) means that
summary(zanegbinomialfit) does not conduct any HDE tests.
o vcov() for "qrrvglm" objects (but assumes C is given).
o New functions: attr.assign.x.vglm().
o New documentation: residualsvglm().
o Tested okay on R 3.5.1.
```

BUG FIXES and CHANGES

```
o By default, dbetabinom() now behaves like dbinom() wrt 'size' and
'prob', since rho = 0. This is done by 'limit.prob'.
Thanks to S. A. Mousavi for picking this up.
The functions [dr]betabinom() have also been modified accordingly to
behave like the binomial distribution, by default.
o pbetabinom.ab() did not handle negative values of 'q' correctly;
NAs now replaced by 0s.
o vglm()@predictors did not contain the offsets; now they do.
Hence predict() will be affected.
o pzeta() was incorrect if the first argument was greater than c.12.
Thanks to Mitchell Newberry at the University of Pennsylvania
for picking this up.
o profilevglm() did not call constraints() correctly.
o Deprecated: quasibinomialff(), quasipoisonff(), gaussianff().
The models fitted now have a log-likelihood that fully specifies
the model.
o nbcanlink() has a cosmetically improved label.
o lambertW() documentation improved; thanks to Jan Somorcik for this.
o dirmultinomial()@validparams had M unassigned [thanks to Feng Zeng].
o For model.matrix() for "qrrvglm" objects, model.matrix(type = "lm")
is new and returns what used to be model.matrix(type = "vlm").
And now model.matrix(type = "vlm") returns the big model matrix
of the CQO given the constrained coefficients C.
o For uninormal(), if var.arg = TRUE then zero = "var", i.e., then
"sd" remains intercept-only by default even if var.arg = TRUE.
CHANGES IN VGAM VERSION 1.0-5
```

NEW FEATURES

```
o extlogit() now handles 'deriv = 3'.
o Generic function hdeff() implements an analytic solution
for the following families: borel.tanner(), felix(), lindley().
For almost all other families, finite-difference approximations
to derivatives means that first and second derivatives can be
computed, even with models with 'xij' terms.
o Generic function wald.stat() implements Wald tests with SEs evaluated
at the null values, not at the original MLE, so do not suffer from the
Hauck-Donner effect.
o "vglm" objects have a new "charfun" slot, for the
characteristic function.
o "summary.vglm" and "summary.vlm" objects have new
"coef4lrt0", "coef4score0", "coef4wald0" slots, for
storing the 'Wald table' equivalent of LRTs, score tests and
modified Wald tests.
The latter has its SEs computed at the null values with the
other coefficients obtained by further IRLS iterations, etc.
Function summaryvglm() has arguments 'lrt0.arg', 'score0.arg',
'wald0.arg'.
o TIC() is new, for the Takeuchi's Information Criterion.
Thanks to Khedhaouiria Dikra for suggesting this.
o mills.ratio() and mills.ratio2() are exported.
o New functions: lrt.stat(), score.stat(), wald.stat(),
which.etas(), which.xij().
o cauchy1() and cauchy() handle multiple responses and have
been modernized a bit.
o Tested okay on R 3.4.3.
```

BUG FIXES and CHANGES

```
o Setting 'deriv.arg' a positive value in plotvgam() when there
are no s() terms results in a warning.
Thanks to Barry Goodwin for detecting this.
o cens.poisson() can better handle large lambda values, at least for
left and right censored data (but not for interval-censored data yet).
Thanks to Eugenie Hunsicker for picking up deficiencies in the code.
o In multinomial.Rd, it was stated that setting parallel = TRUE
did not make the intercepts the same. It does make them the same.
Thanks to Stuart Coles for picking this up.
o binomialff(multiple.responses = TRUE) returned an incorrect deviance.
o bilogistic() uses SFS rather than BFGS as its algorithm.
o Deprecated: lrp(), normal1() [use uninormal() instead].
CHANGES IN VGAM VERSION 1.0-4
```

NEW FEATURES

```
o This package is now Renjin compatible.
o gengamma.stacy() handles multiple responses, and some
of its arguments have had their default values changed.
o calibrate() has a methods function for "rrvglm" objects.
o "vglm" objects have a new "hadof" slot.
o "vglm" objects will soon have a new "charfun" slot.
o constraints(vglmfit, matrix = TRUE) is now embellished by
rownames, by default.
o New generic and methods function: hdeff(), lrp().
o Many link functions accommodate 'deriv = 3' and sometimes a bit
higher. More safety when 'deriv' is assigned out-of-range values.
o fitted() and predict() with lms.???() fits, such as lms.bcn(),
now handles inputting new 'percentiles' values. Thanks to
Sven Garbade for picking up this obvious deficiency.
o New function(s): d3theta.deta3().
o Tested okay on R 3.4.1. This package now requires R 3.4.0 or higher
(not R 3.1.0 as before).
```

BUG FIXES and CHANGES

```
o [dqpr]gengamma.stacy() have no default value for 'd' and 'k' args.
o negbinomial(lmu = "nbcanlink") now works properly;
thanks to Victor Miranda for much help and picking up 3 bugs.
o perspqrrvglm() called @linkinv() without passing in @extra.
o fisherz(theta, inverse = TRUE, deriv = 1) was out by a factor of 2.
o multilogit() did not handle 1-row arguments correctly when
'inverse = TRUE' and 'refLevel' was neither 1 or M+1.
o Several C and Fortran functions renamed, for R 3.4.0.
CHANGES IN VGAM VERSION 1.0-3
```

NEW FEATURES

```
o vgam() with sm.os() and sm.ps() terms allows G2-VGAMs to be fitted.
o plotvgam() has a "shade" argument.
o Almost all family functions have been "validparams"-enabled, for
greater reliability.
o confint() implements the profile likelihood method (in addition
to the Wald method).
o New family functions: diffzeta(dpqr),
oilog(dpqr), oiposbinomial(dpqr), oizeta(dpqr), oizipf(dpqr),
otlog(dpqr), otpospoisson(dpqr), otzeta(dpqr),
oalog(dpqr), oapospoisson(dpqr), oazeta(dpqr), topple(dpqr).
o New functions: [pqr]zeta(), [qr]zipf().
o Argument 'zero' now accepts "" or NA and interprets these as NULL,
i.e., no linear or additive predictors are intercept-only.
o Significance stars added to summary(rrvglm.object), for very crude
inference.
o zeta() can return the Hurwitz zeta function, via the 'shift' argument.
o show.summary.vglm() will only print out any dispersion parameter
that is not equal to 1.
o type.fitted = "quantiles" is available for
gevff(), negbinomial(), poissonff().
o Tested okay on R 3.3.2.
```

BUG FIXES and CHANGES

```
o mills.ratio1() in tobit() did not handle very negative 'x' values
correctly. Thanks to Christoph Nolte for detecting this.
o Renamed arguments: zetaff(d) use 'shape', not 'p'.
o betabinomialff()@infos was buggy wrt 'lshape1' and 'lshape2'.
Thanks to Xiaodong for detecting this.
o leipnik() uses logoff(offset = -1) as the default link for
lambda now, not "loge".
o logff(dpqr) uses 'shape' instead of 'c' as the parameter name.
o yules(dpqr) uses 'shape' instead of 'rho' as the parameter name.
o hzeta(dpqr) uses 'shape' instead of 'alpha' as the parameter name.
o felix(dpqr) uses 'rate' instead of 'a' as the parameter name.
o dbetabinom.ab() handles large values of shape1 and shape2 better, via
the dbinom() limit. Thanks to Micha Schneider for picking up the bug.
o [dpqr]posnegbin() have been improved a little.
o logLik(summation = TRUE): prior weights 'w' have been
converted to a vector when passed in; this is likely to make it less
likely to give an error.
o Labelling of the colnames of the fitted values have changed for many
family functions, including those for multiple responses,
e.g., gevff(). Also "mean" had a bug or two in gevff()@linkinv.
CHANGES IN VGAM VERSION 1.0-2
```

NEW FEATURES

```
o vglm.fit() has been simplified and handles half-stepping better.
o AR1() implements the EIM of Porat and Friedlander (1986); this is
the work of Victor Miranda. It is specified by type.EIM = "exact"
(the default).
o Function gevff() replaces egev(). It handles multiple responses
like any other ordinary VGAM family function.
o A rudimentrary plotvglm() plots the Pearson residuals, firstly
versus the predicted values, and secondly, against the hat values.
o The 'refLevel' argument of multinomial() accepts a character string,
e.g., multinomial(refLevel = "European") for xs.nz$ethnicity as a
response.
o New family function: oipospoisson(dpqr), zoabetaR().
o New functions: grid.search[23](), [dpqr]oiposbinom().
o is.buggy() is called by vgam() immediately after estimation;
it gives a warning if any constraint matrix corresponding
to an s() term is not orthogonal.
```

BUG FIXES and CHANGES

```
o vglm.fit() did not handle half-stepping very well.
o Some families for counts (i.e., [pos,z[ai]]negbinomial[ff]())
have been "validparams"-enabled in order to make estimation
near the boundary of the parameter space more stable,
especially when a Poisson approximation is suitable.
o Other families that have been "validparams"-enabled:
gev(), gpd().
o Actuarial or statistical size distributions families have
been modified with respect to initial values, e.g.,
sinmad, dagum, [inv.]lomax, [inv.]paralogistic, [gen]betaII().
o rep_len() replaces rep() where possible.
o Function gev() has been changed internally and
arguments such as 'gshape' have changed.
o Function rzipois() may not have handled 0-deflation properly
but it does so now.
o Function plotvgam() had a bug testing for variable names when
the xij facility was used.
o multinomial() and multilogit() use "(Last)" to signify
the last level of a factor; it used to be "last".
o qposbinom() returned 0 (incorrect), and not 1 (correct), for p = 0.
o zipoisson() and zipoissonff() no longer store fitted values such
as pstr0 in the misc slot. They can be obtained by, e.g.,
fitted(fit, type.fitted = "pstr0").
o Renamed functions:
egumbel() is now called gumbelff().
[dqpr]ozibeta() is now called [dqpr]zoabeta().
o Renamed parameter names: zetaff() uses 'shape', not 'p'.
o qzibinom() did not handle arguments lower.tail and log.p correctly.
o Tested okay on R 3.3.0. This package now requires R 3.1.0 or higher
(not R 3.0.0 as before).
CHANGES IN VGAM VERSION 1.0-1
```

NEW FEATURES

```
o Argument 'zero' has been programmed to handle (a more
intuitive) a character vector. Each value of this
vector is fed into grep() with fixed = TRUE. Many
VGAM family functions have an equivalent default
character value of 'zero'.
o New slots: "validparams" and "validfitted" for providing
more opportunities for half-stepping.
o The "infos" slot of most family functions have a
component called "parameters.names", and also
"Q1" and "M1".
o margeff() works for cratio(), sratio() and
acat() models, and is generic (with S4 dispatch).
For this, "vcategorical" replaced by "VGAMcategorical",
and "VGAMordinal" is also a virtual class.
And margeffS4VGAM() is generic.
o summaryvglm() calls the generic summaryvglmS4VGAM() in order
to compute useful quantities, and it is printed by
showsummaryvglmS4VGAM(). Specific examples include
the binom2.or() and cumulative() families.
o Similarly, show.vglm() calls the generic showvglmS4VGAM() in
order to print extra potentially useful output.
Ditto for , show.vgam() which calls showvgamS4VGAM().
o Similarly, predictvglm() calls the generic predictvglmS4VGAM()
in order to allow for family-function-specific prediction.
o logitoffsetlink() is new.
o [dpqr]ozibeta() and [dpr]ozibetabinom() and
[dpr]ozibetabinom.ab() are new;
by Xiangjie Xue and Thomas Yee.
o coef(..., type = c("linear", "nonlinear")) is available
for "vgam" objects.
o The following have new 'weights' slots (based on
negbinomial()@weight): posnegbinomial(), zanegbinomial[ff](),
zinegbinomial[ff](). It is based on the expectation of
a difference between 2 trigamma function evaluations being
computed using pnbinom(lower.tail = FALSE) and variants.
Both functions have some argument defaults tweaked.
o log1mexp() and log1pexp(), based on Martin Maechler's 2012 paper,
is 'new'.
o Many zero-altered and zero-inflated families have additional
'type.fitted' choices.
Initial values for such families hav been improved (via Init.mu()).
o expint(), expexpint(), expint.E1() allow the computation of the
first few derivatives.
o Tested okay on R 3.2.4.
```

BUG FIXES and CHANGES

```
o Order of arguments changed: binom2.rho(lmu, lrho),
negbinomial(), posnegbinomial(),
zanegbinomial(), zinegbinomial().
o pzanegbin() could return -.Machine$double.eps. Thanks to
Ryan Thompson for notifying me about this.
o pbinorm() used to have a bug wrt Inf and -Inf values in
its arguments. Thanks to Xiangjie Xue for picking this up.
o plota21() used qchisq(0.95, df = 1) instead of
qchisq(0.95, df = 1) / 2 for LRT confidence intervals.
Thanks to Russell Millar for picking this up.
o A new function Init.mu() is used to initialize several
family functions, especially those based on the negative
binomial and Poisson distributions.
The default for Init.mu() is suitable for 0-inflated
data.
o The fitted value of polya() was wrong (wasn't the mean).
o Default value of argument 'zero' has changed for:
bisa(), gumbelII().
o zibinomialff()@weight had a bug when calling iam().
o [dpqr]nbinom(..., size = Inf) was buggy; it produced many NaNs.
Thanks to Martin Maechler for promptly fixing this, for R 3.2.4.
o The arguments of interleave.VGAM() have changed: from
interleave.VGAM(L, M) to interleave.VGAM(.M, M1, inverse = FALSE).
The is a compromise solution with respect to my book.
The 'inverse' argument is due to Victor Miranda.
o summaryvglm() evidently evaluated the weights slot of an
object twice. Now it is only done once.
CHANGES IN VGAM VERSION 1.0-0
```

NEW FEATURES

```
o Official version that goes with the just-released book
"Vector Generalized Linear and Additive Models:
With an Implementation in R" by T. W. Yee (2015),
Springer: New York, USA.
o gengamma.stacy() implements a grid search wrt
all its parameters.
o New functions: [dp]lms.bcn().
o New family function: weibull.mean().
o triangle.control() slows down the speed of the iterations
towards the MLE, because the regularity conditions do not hold.
o New arguments: AR1(nodrift = FALSE).
o binormal has arguments eq.mean and eq.sd which now operate
independently.
o confint() should work for objects that are "vglm"s.
Thanks to Tingting Zhan for suggesting this.
o Tested okay on R 3.2.2.
o Methods functions for responseName() and term.names() and
has.intercept().
```

BUG FIXES and CHANGES

```
o Link functions have changed a lot!!!
They return different values when deriv = 1 and deriv = 2,
coupled with inverse = TRUE and inverse = FALSE.
Type ?Links to see examples.
The first derivatives become reciprocals of each other
when inverse = TRUE and inverse = FALSE, however the
2nd derivatives are no longer reciprocals of each other.
Also affected are dtheta.deta() and d2theta.deta2(), etc.
o 'show()' added to importMethods('methods') in NAMESPACE.
o The following currently do not work:
golf(), nbolf(), polf().
o AA.Aa.aa() used the OIM and worked for intercept-only models,
but now it uses the EIM.
o logneg("a", short = TRUE) has been modified.
o posnormal(): the first and second derivatives have been modified
for both SFS and ordinary FS,
and the default is zero = -2 now ('sd' is intercept-only).
Several other improvements have been done.
o binomialff()@deviance is assigned all the time now.
o dbetabin.ab() better handles extremes in the shape
parameters (very close to 0 and larger than 1e6, say).
Thanks to Juraj Medzihorsky for picking this up.
o Family functions: zigeometric()@weight and zigeometricff()@weight
had one element incorrect.
o logit("a+b", short = FALSE) was labelled incorrectly, etc.
o Family function tobit()@weights implements Fisher scoring
entirely. And it handles observations whose fitted
values are (relatively) large and positive; thanks to
Victor Champonnois for picking up this bug.
o S3 methods function df.residual_vlm() also called by df.residual.vlm().
This is to avoid a bug picked up by car::linearHypothesis().
Ditto for vcovvlm() by vcov.vlm().
Also model.matrix() and formula().
Thanks to Michael Friendly and John Fox for help here.
CHANGES IN VGAM VERSION 0.9-8
```

NEW FEATURES

```
o Tested okay on R 3.2.0.
o is.buggy() tests to see if a fitted VGAM object suffers
from known bugs, e.g., a vgam() object with at least one
s() term whose constraint matrix does not have orthogonal
columns.
o New family function: AR1(d).
o New function: dgenpois().
o The package has been updated to reflect the new
J. Stat. Soft. paper by Yee, Stoklosa and Huggins.
A vignette based on this paper is now included.
o dgenbetaII() has now been written; and genbetaII() improved,
and about 8 special cases of genbetaII() have
all been modernized to handle multiple responses
and a default grid search over all the parameters
(arguments 'gscale' and 'gshape1.a', etc.). These
families are based on Kleiber and Kotz (2003).
```

BUG FIXES and CHANGES

```
o Family function genpoisson() has been modernized, and
should give correct results wrt AIC() etc.
o Argument 'init.alpha' renamed to 'ialpha', for the brat(),
bratt(), and dirmul.old() families.
o Calls to N.hat.posbernoulli() used Hlist = constraints rather
than Hlist = Hlist; this failed for RR-VGLMs.
o Family function tobit() obtains initial values even
in the case when it would otherwise fit an underdetermined
system of equations. Thanks to McClelland Kemp for picking
this up.
CHANGES IN VGAM VERSION 0.9-7
```

NEW FEATURES

```
o Tested okay on R 3.1.2.
o linkfun() and nparam() are new generic functions.
o betabinomialff() replaces 'lshape12' with 'lshape1' and 'lshape2'.
Arguments 'i1' and 'i2' are now 'ishape1' and 'ishape2'.
o ABO() has more arguments.
o Arguments lower.tail and log.p have been added to quite
a few pq-type functions (work done by Kai Huang).
```

BUG FIXES and CHANGES

```
o Argument 'mv' has been renamed to 'multiple.responses'.
This applies to about 10 family functions such as binomialff().
o Argument 'lss' added to betaII(), dagum(), fisk(),
genbetaII(), inv.paralogistic(), paralogistic(),
sinmad(). Note that the order of the arguments of
these functions will change in the near future, and
consequently the order of the parameters.
The [dpqr]-type functions of all these distributions
have arguments that have been rearranged.
o All d-type functions handle 'x = Inf' and 'x = -Inf'.
Much help from Kai Huang here.
Thanks to Ott Toomet for alerting me to this type of bug.
o vsmooth.spline() has 2 argument name changes, and
a little reordering of its arguments.
o More p-type functions handle 'q = Inf' and 'q = -Inf'.
More q-type functions handle 'p = 0' and 'p = 1'.
Much help from Kai Huang here.
o AA.Aa.aa() and A1A2A3() handled 'inbreeding' the wrong way round.
o pposnorm() returned wrong answers.
o ptobit(log.p = TRUE) was incorrect, as well as some
other bugs in [dpqr]tobit().
The dtobit(Lower) and dtobit(Upper) have changed.
o negbinomial() now computes the EIM wrt the 'size' parameter based
on a finite approximation to an infinite series (provide the
mu and size parameter has values lying in a certain range).
This may be time- and/or memory-hungry, but the user has
control over this via some arguments such as max.mu, min.size
and chunk.max.MB.
o Renamed functions:
elogit() is now called extlogit(),
fsqrt() is now called foldsqrt().
CHANGES IN VGAM VERSION 0.9-6
```

NEW FEATURES

```
o All r-type functions handle the 'n' argument the same
way as runif(). This was done with the help of Kai Huang.
```

BUG FIXES and CHANGES

```
o Slot "res.ss" changed to "ResSS".
o Some argument reference errors found by valgrind have been fixed.
CHANGES IN VGAM VERSION 0.9-5
```

NEW FEATURES

```
o Tested okay on R 3.1.2.
o New argument 'lss' appears on some family functions.
This is important because it changes the order of the
parameters.
o New functions: QR.Q(), QR.R(), [pq]rice() (thanks
to Benjamin Hall for pointing that these are based on the
Marcum-Q function).
o exponential() has a new loglikelihood slot. Thanks to
Neyko Neykov for picking this up this omission.
o Constraint matrices in process.constraints() are checked
that they are of full column-rank.
o New family functions: better.exponential(), polyaR().
o New functions: qvplot() is preferred over plotqvar(),
[dpqr]levy().
o summary() applied to a "vglm" object now prints out
the table of estimates, SEs, test statistics
and p-values very similarly to glm() objects. In
particular, two-tailed p-values in the 4th column
are new; these correspond to the z ratio based on
a normal reference distribution.
o gev(), egev(), and gpd() have a 'type.fitted' argument, which
should be set to "mean" if the mean is desired as
the fitted values.
gpd() has a stop() if the data is negative.
o AA.Aa.aa() and A1A2A3() have a 'inbreeding = TRUE' argument.
If 'inbreeding = TRUE' then an extra parameter is estimated.
If 'inbreeding = FALSE' then the inbreeding coefficient is 0
by definition, and not estimated.
G1G2G3() is now renamed to A1A2A3().
o Decommissioned VGAM family functions:
AAaa.nohw(), matched.binomial().
o deviance() applied to a "qrrvglm" or "rrvgam" object
now has a 'history' argument.
o binomialff(mv = TRUE) is no longer restricted to responses
having 0 and 1 values.
o New data sets: flourbeetle.
o The 'constraints' argument accepts a list with functions
as components, that compute the constraint matrices.
```

BUG FIXES and CHANGES

```
o Renamed the order of arguments and linear predictors (now,
'location'-type precedes 'scale'-type, and 'scale'-type precedes
'shape'-type parameters):
benini1(dpqr)
bisa(dpqr)
gumbelII(dpqr)
makeham(dpqr)
nakagami(dpqr)
perks(dpqr)
riceff(dpqr)
genrayleigh(dpqr)
expexpff1(), expexpff()
exppoisson(dpqr)
gammaR()
o Renamed parameter names: poissonff() has "lambda", not "mu",
binomialff() has "prob", not "mu".
o Renamed functions:
plot.vgam() plots "vgam" objects, not plotvgam().
Use plot(as(vglmObject, "vgam")) to plot vglm() objects as
if they were vgam() objects.
plot.vgam(): the user has total control over 'xlim' and 'ylim'
if specified.
o Renamed functions: cm.zero.vgam() has become cm.zero.VGAM(),
cm.nointercept.vgam() has become cm.nointercept.VGAM(),
cm.vgam() has become cm.VGAM(),
process.categorical.data.vgam to process.categorical.data.VGAM,
process.binomial2.data.vgam to process.binomial2.data.VGAM.
o Link loge() returns "loge" as its tag, not "log" anymore.
o Class "cao" changed to "rrvgam".
o dbilogis4() was faulty.
o Renamed arguments: 'location' is now 'scale' in [dpqr]pareto(),
and paretoff().
o gev() and egev() handle working weights better when sigma is close
o gev(zero = 3) has changed to gev(zero = 2:3), by default, and
egev(zero = 3) has changed to egev(zero = 2:3), by default.
That is, only the location parameter is now modelled as
functions of covariates, by default;
the scale and shape parameters are intercept-only.
o bigamma.mckay(zero = 1) has changed to bigamma.mckay(zero = 2:3),
by default.
o rlplot() works for gev() model fits now.
o Renamed functions: subsetc() has become subsetcol(),
my1 has become sc.min1(),
my2 has become sc.min2(),
stdze1() has become sc.scale1(),
stdze2() has become sc.scale2(),
mlogit() has become multilogit().
o Decommissioned VGAM family functions:
AB.Ab.aB.ab2()
o Renamed VGAM family functions:
OLD NAME: NEW NAME:
amh() biamhcop()
bigumbelI() bigumbelIexp()
fgm() bifgmcop()
gammahyp() gammahyperbola()
morgenstern() bifgmexp()
plackett() biplackettcop()
benini() benini1()
cgumbel() cens.gumbel()
cenpoisson() cens.poisson()
cennormal() cens.normal()
double.cennormal() double.cens.normal()
recnormal() rec.normal()
recexp1() rec.exp1()
invbinomial() inv.binomial.exp1()
invlomax() inv.lomax.exp1()
invparalogistic() inv.paralogistic.exp1()
koenker() sc.studentt2()
frechet2() frechet()
hypersecant.1() hypersecant01()
gengamma() gengamma.stacy()
beta.ab() betaR()
betabinom.ab() betabinomialR()
gamma2.ab() gammaR() [see note about reordered arguments]
logistic2() logistic()
lgammaff() lgamma1()
lgamma3ff() lgamma3()
SUR() SURff()
expexp() expexpff()
expexp1() expexpff1()
weibull() weibullR(lss = FALSE). Also 'zero' has changed.
o Functionality has changed:
weibull() weibullR(lss = FALSE). Also 'zero' has changed.
o Data sets renamed:
mmt renamed to melbmaxtemp.
o lms.bcn(): changes in the arguments.
o [log]alaplace[123](): changes in the arguments, e.g.,
'parallelLocation' changed to 'parallel.locat'.
o Argument 'reference' has been changed to 'refResponse' for
CQO objects.
o Argument 'shrinkage.init' has been changed to 'ishrinkage'.
o Argument 'matrix.arg = TRUE' has been changed to
'drop = FALSE' in fittedvlm().
o Bug in dbort(). Thanks to Benjamin Kjellson for picking this up.
o vglm.control()$save.weight changed to vglm.control()$save.weights.
vgam.control()$save.weight changed to vgam.control()$save.weights.
o "ccoef" has been replaced by "concoef".
o Some documentation regarding qvar(se = TRUE) was wrong.
o Argument "alpha" in several bivariate distributions have
been replaced by "apar", for association parameter.
o Arguments "optima" replaced by "optimums",
"maxima" replaced by "maximums",
"logmaxima" replaced by "log.maximums".
o Function getMaxMin() renamed to grid.search().
o lognormal3() withdrawn.
o dfbeta() returns the difference between the coeffs.
o negbinomial(deviance = TRUE) works when fitting the NB-2,
provided criterion = "coef" or half.step = FALSE.
o Argument "a" replaced by "rate" in maxwell(dpqr).
o Arguments "x1" and "x2" replaced by "q1" and "q2" in pbinorm().
CHANGES IN VGAM VERSION 0.9-4
```

NEW FEATURES

```
o New data sets: cfibrosis, lakeO, wine.
o New functions: Select().
o negbinomial(deviance = TRUE) works, provided criterion = "coef"
is used too.
o simulate() works with binomialff(), poissonff(), rayleigh() and
several other families. See help(simulate.vlm) for a current listing.
o coef(colon = FALSE) works for VLM objects.
o pslash() has a 'very.negative = -4' argument.
Thanks to Tiago Pereira for picking this up.
o Some family functions have a 'summation = TRUE' argument in
the loglikelihood slot. Can be accessed using, e.g.,
logLik(fit, summation = FALSE). See ?logLik.vlm.
Similarly for deviance(fit, summation = FALSE).
o Tested okay on R 3.1.0.
```

BUG FIXES and CHANGES

```
o bs(), ns(), scale() and poly() are no longer smart,
but they will handle simple terms such as bs(x) and scale(x).
The smart version of those functions have been renamed to
sm.bs(), sm.ns(), sm.scale(), sm.poly();
these will handle complicated terms such as sm.bs(sm.scale(x)).
o Renamed functions: identity() has become identitylink().
o Argument names changed:
'ITolerances' renamed to 'I.tolerances' thoughout,
'EqualTolerances' renamed to 'eq.tolerances' thoughout.
o Bug in mix2normal() fixed in @initialize. Thanks to Troels Ring
for finding the bug.
o Upon loading the package, no warnings (such as masking) is
given.
o multinomial(parallel = TRUE) now applies the parallelism
constraint to the intercept.
o If a factor response is ordered then a warning is issued for
multinomial().
o predict(fit, newdata = zdata2, type = "response") used
to fail for z[ai][poisson][,ff]() and z[ai][negbinomial][,ff]()
families. Thanks to Diego Nieto Lugilde for picking this up.
o A bug with offsets and coefstart has been fixed.
Thanks to Giuseppe Casalicchio for picking this up.
o Variables "Blist" replaced by "Hlist".
o Expression new.s.call no longer used in vglm.fit() and vgam.fit().
Musual has been replaced by M1.
o Variable names changed: prinia, Huggins89table1, Huggins89.t1.
o Memory leaks found by valgrind have been patched.
CHANGES IN VGAM VERSION 0.9-3
```

NEW FEATURES

```
o New argument:
posbinomial(omit.constant = FALSE), set to TRUE if
comparing M_0/M_h models with M_b/M_t/M_tb/M_bh/M_th/M_tbh.
o rcim() works with family = multinomial; in conjunction with
arguments M and cindex to be specified.
rcim() also had additional arguments and new defaults.
o New arguments:
positive Bernoulli functions have 'p.small' and 'no.warning'
arguments.
o AICc() is new.
o family.name() generic is new.
o New data sets: prinia.
o logLik() methods function for "qrrvglm" objects.
AIC() methods function for "qrrvglm" objects is corrected.
AIC() methods function for "cao" objects is new.
```

BUG FIXES and CHANGES

```
o vgam() with nontrivial constraints is giving incorrect
predict(vgam.object) and fitted(vgam.object).
Not yet fixed up but will try soon!
Thanks to Zachary Kurtz for picking this up.
o Argument 'which.lp' changed to 'which.linpred'.
Argument 'which.eta' changed to 'which.linpred'.
Argument 'lapred.index' changed to 'linpred.index'.
Argument 'whichSpecies' changed to 'which.species'.
Argument 'plot.it' changed to 'show.plot'.
Argument 'intervalWidth' in plotqvar() changed to 'interval.width'.
o Decommissioned VGAM family functions: cennormal1().
o posbinomial() returns @extra$N.hat and @extra$SE.N.hat
if the number of trials is constant across observations.
o calibrate() restored to working order.
o Argument names changed:
'szero' renamed to 'str0' thoughout,
'allowable.length' renamed to 'length.arg' in is.Numeric().
o Function uqo() has been withdrawn. Reasons:
(i) It needs to be rewritten in C but unfortunately am too busy...
(ii) It is a very difficult optimization problem, probably too
difficult to solve in general efficiently.
o Arguments in rcqo() have changed.
o Data set Perom withdrawn, but deermice remains.
o Argument 'zero' in binom2.or() had a bug.
CHANGES IN VGAM VERSION 0.9-2
```

NEW FEATURES

```
o New family functions: logF(d), biclaytoncop(dr), binormalcop(dp),
bistudentt(d), and a basic normal.vcm(),
zabinomialff(), zageometricff(), zanegbinomialff(), zapoissonff(),
zibinomialff(), zigeometricff(), zinegbinomialff().
o cao.control()suppress.warnings == TRUE is new, and it
suppresses warnings (esp. lack of convergence) by default.
o The convergence criterion now takes into consideration the sample
size, somewhat. It should stop premature convergence for very
large data sets.
o New functions: dpois.points(), log1pexp(), expint(), expexpint(),
expint.E1(), dbinorm(), rbinorm(), kendall.tau(), qvar().
Also, depvar(type = c("lm", "lm2")) has a 'type' argument.
Also, aux.posbernoulli.t() is new.
o New link functions: logneg().
o New data sets: beggs, corbet, deermice, machinists, prats, V1.
o Argument 'form2' added to vgam(), so vgam.fit() has been modified too.
o posbernoulli.tb() seems correct, and works for any
number of sampling occasions. And posbernoulli.[b,t,tb]() have
more argument choices.
o BIC() is now available, it is based on AIC(..., k = log(nobs(object))).
But users need to use it with care.
Also, AICvlm() has a 'corrected = FALSE' argument.
o fittedvlm() now has a 'type.fitted' argument that allows
different fitted values to be computed from a vglm()/vgam()
object. Several family functions such as zi*()
[e.g., zipoisson()] and za*() [e.g., zapoisson()]
have a 'type.fitted' argument that matches it.
```

BUG FIXES and CHANGES

```
o Default arguments have changed, esp. wrt 'zero' for:
zibinomial(), zinegbinomial().
o cao() used to crash due to memory problems and segment faults.
o Syntax such as parallel = TRUE ~ 1 is now supported. Hence argument
'apply.parint' has been removed.
o posbernoulli.b() has a new and superior parameterization, & faster .
o Printed output when trace = TRUE has been improved, especially
for large data sets.
o For ordination methods "lv" has been generally replaced by
"latvar".
"latvar()" is supported, "lv()" will become fully
deprecated soon. But "lvplot()" is retained.
Also, this applies to most argument names and list
component names returned, e.g.,
OLD NAME: NEW NAME:
isdlv isd.latvar
varlvI varI.latvar
lvOrder latvar.order
OptimumOrder Optimum.order
maxfitted max.fitted
SD.Ainit sd.Ainit
SD.Cinit sd.Cinit
SD.sitescores sd.sitescores
o For ordination methods "ccoef" has been generally replaced by
"concoef". This applies to most methods functions.
Attributes have changed too, from "ccoefficients"
to "con.coefficients".
o VGAM now suggests \pkg{VGAMdata}.
o Renamed VGAM family functions:
OLD NAME: NEW NAME:
normal1() uninormal()
bivgamma.mckay() bigamma.mckay()
cennormal1() cennormal()
dcennormal1() double.cennormal()
dexpbinomial() double.expbinomial()
explogarithmic() explogff()
frank() bifrankcop(dpr)
[dpr]frank() [dpr]bifrankcop()
fnormal1() foldnormal()
[dpqr]fnorm() [dpqr]foldnorm()
gumbelIbiv() bigumbelI()
mbinomial() matched.binomial()
mix2normal1() mix2normal()
mix2normal1.control() mix2normal.control()
nidentity() negidentity()
normal1() uninormal()
nloge() negloge()
pnorm2() pbinorm(dpr)
pareto1() paretoff()
poissonp() poisson.points()
powl() powerlink()
recnormal1(d) recnormal()
rig() rigff()
skewnormal1() skewnormal()
[dr]snorm() [dr]skewnorm()
tpareto1() truncpareto()
wald() waldff()
o Decommissioned functions:
OLD NEW
dnorm2() dbinorm()
pnorm2() pbinorm()
o Renamed internal functions:
OLD NEW
lv.cao() latvar.cao()
o Renamed arguments:
OLD NEW
equalsd eq.sd
o Internally, variables identifiers with "_" have been replaced
by a ".", e.g., X_vlm becomes X.vlm.
Saved component names follow this change too, e.g.,
@extra$ncols_X_lm becomes @extra$ncols.X.lm.
o Improved:
fgm() has its explicit EIM programmed in.
o summary() applied to a "rcim0" or "rcim" object now works.
o Family functions which have changed: zigeometric().
o Slotname "rss" changed to "res.ss".
o zinegbinomial()@weight continues to use Fisher scoring
until not all the random variates are zeros or nonzeros.
o loglinb2(zero = 3) and loglinb3(zero = 4:6) are defaults
now (used to be zero = NULL).
o Data sets moved: wffc, wffc.nc, etc. moved to \pkg{VGAMdata}.
o stats::print.anova() no longer called directly by lrtest().
CHANGES IN VGAM VERSION 0.9-1
```

NEW FEATURES

```
o A companion package, called \pkg{VGAMdata}, is new.
Some large data sets previously in \pkg{VGAM} have
been shifted there, e.g., xs.nz and ugss.
In \pkg{VGAMdata} there is (new) oly12 and students.tw.
o pnorm2() argument names have changed from 'sd1' to
'var1', etc. and 'rho' to 'cov12'.
See documentation.
Warning given if it returns any negative value.
o Introduction of g-type arguments for grid search.
o Improved initial values for: lomax().
o Argument 'bred' works for poissonff().
o latvar() generic available, identical to lv(). But the
latter will be withdrawn soon.
o Rank() generic available for RR-VGLMs, QRR-VGLMs, CAO models.
o New function: pgamma.deriv(), pgamma.deriv.unscaled(),
vlm2lm.model.matrix().
o New VGAM family functions:
posbernoulli.b(), posbernoulli.t(), posbernoulli.tb(tau = 2 or 3).
These provide estimates of N as well as its standard error.
Also, truncgeometric() and truncweibull() are new.
Also, SUR() is new.
Also, binom2.rho.ss() does not work yet.
o New argument 'matrix.out = FALSE' for constraints.vlm().
o cm.vgam() has a few more arguments to provide more flexibility.
But there should be no changes for VGAM users at this stage.
o Renamed functions: confint_rrnb() is now renamed to
Confint.rrnb() and confint_nb1() is now renamed to Confint.nb1().
o Some changes to component names returned by Confint.rrnb() and
Confint.nb1(): $CI. and $SE. are uppercase.
o Some zero-inflated VGAM family functions return a
"vglm" object with @misc$pstr0 for the estimated
probability of a structural zero.
o New data set: olym12.
Note that Students.tw is earmarked for \pkg{VGAMdata}.
o Data sets renamed:
olympic renamed to olym08.
o Qvar() has a 'which.eta = 1' argument specifying which linear
predictor to use. So quasi-variances are now
available to models with M > 1 linear predictors.
o Tested okay on R 3.0.0.
```

BUG FIXES and CHANGES

```
o VGAM now depends on R >= 2.15.1.
o Fortran array bounds problems (picked up by
AddressSanitizer) have been fixed.
o All "no visible binding for global variables" warnings
have been suppressed.
o vgam() with a s(spar = myspar) term should run, and if myspar
is extracted from a previous vgam() model then the two models
should effectively be the same.
o summaryvgam() did not calculate or print out all the p-values
for testing linearity.
o fnormal1()@initialize was faulty wrt lm.wfit().
o zageometric() and zigeometric() handle multiple responses.
o mlogit(inverse = TRUE) and mlogit(inverse = FALSE)
were switched. Now multinomial() makes use of mlogit().
mlogit() now calls care.exp() to avoid overflow and underflow;
this stops multinomial() from returning a NA as a fitted
value if abs(eta) is very large.
o arwz2wz() introduced to simplify multiple responses
working weight matrices (wrt construction).
o Renamed functions:
dhuggins91() is now dposbern(),
huber() is now huber2(),
ei() is now eifun(), eij() is now eijfun(),
rss.vgam() is now ResSS.vgam().
o fisherz(theta) was wrong. Corrected, then replaced by
atanh(theta).
o [dpq]dagum(x), [dpq]lomax(x), [dpq]sinmad(x), etc. handled
correctly for x = 0, Inf, -Inf, NaN, NA.
o qdagum(x) failed due to 'Scale' [thanks to Alena Tartalova].
o Arguments renamed:
'intercept.apply' renamed to 'apply.parint',
'Norrr' renamed to 'noRRR' (warning/error message issued),
'nowarning' renamed to 'noWarning' in vglm.control().
o seq2binomial()@loglikelihood includes the binomial
lchoose() constants.
o qgev() bug [thanks to Alex Cannon], and qgpd().
o cao() produces less error/warning messages usually.
o Data sets corrected for errors: chinese.nz.
o Data set changes: gew had incorrect y1 and y2 values,
and variables x1 to x4 have been renamed to value.g, capital.w,
etc. The year variable has been added.
CHANGES IN VGAM VERSION 0.9-0
```

NEW FEATURES

```
o Major change: VGAM family functions no longer have
arguments such as earg, escale, eshape, etc. Arguments such
as offset that used to be passed in via those arguments can
be done directly through the link function. For example,
gev(lshape = "logoff", eshape = list(offset = 0.5)) is
replaced by gev(lshape = logoff(offset = 0.5)). The @misc
slot retains the $link and $earg components, however,
the latter is in a different format. Functions such as
dtheta.deta(), d2theta.deta2(), eta2theta(), theta2eta()
have been modified. Link functions have been simplified
somewhat. The casual user will probably not be affected,
but programmers will. Sorry about this!
o New VGAM family functions:
[dpqr]gompertz(), [dpqr]gumbelII(), [dpr]lindley(),
[dpqr]makeham(), [dpqr]perks().
o df.residual() supports a new formula/equation for 'type = "lm"'.
o garma("reciprocal") supported.
o is.parallel() for constraint matrices summary.
o Improved family functions:
these can handle multiple responses:
benini(), chisq(), erlang(), exponential(), gamma1(), geometric(),
gpd(), inv.gaussianff(), logff(), maxwell(), rayleigh(),
yulesimon(), zetaff().
o New data set: hormone
[http://www.stat.tamu.edu/~carroll/data/hormone_data.txt].
o If a factor response is not ordered then a warning
is issued for acat(), cratio(), cumulative() and sratio().
o New dpqr-type functions:
[dpqr]perks(), [dpqr]mperks(), [dpqr]mbeard().
o Argument 'parallel' added to gamma2().
o New link functions: mlogit().
```

BUG FIXES and CHANGES

```
o zibinomial() had 1 wrong element in the EIM; one of the
corrections of VGAM 0.8-4 was actually incorrect.
o zibinomial() blurb was wrong:
previously was "(1 - pstr0) * prob / (1 - (1 - prob)^w)" where
prob is the mean of the ordinary binomial distribution.
Now is "(1 - pstr0) * prob".
o betaff() no longer has "A" and "B" arguments; they ar
extracted from "lmu = elogit(min = A, max = B)".
o binom2.rho() has "lmu" as a new argument 2.
o logistic2() has has zero = -2 as default, and can handle
multiple responses.
o gengamma() returned the wrong mean (picked up by Andrea Venturini):
not b * k but b * gamma(k + 1 / d) / gamma(k).
o tobit.Rd nows states vector values for 'Lower' and 'Upper'
are permitted. Also, the @misc$Lower and @misc$Upper are
matrices of the same dimension as the response.
o constraints.vlm(type = c("vlm", "lm")) has been changed to
constraints.vlm(type = c("lm", "term")) [respectively].
o Rcam() renamed to Rcim(), and rcam() renamed to rcim().
Class "rcam" changed to "rcim".
o Days changed from "Monday" to "Mon" in all crash data frames, etc.
o w.wz.merge() written to handle the working weights
for multiple responses.
w.y.check() written to check the integrity of prior
weights and response.
o Argument 'sameScale' changed to 'eq.scale',
'quantile.probs' in negbinomial-type families changed to 'probs.y'.
o No more warnings: dirmultinomial().
o Renamed arguments: benini(earg <- eshape),
binormal(equalmean <- eq.mean),
binormal(equalsd <- eq.sd),
o dirmultinomial() can handle a 1-row response [thanks to Peng Yu].
o weibull() gives improved warnings re. the shape parameter wrt
regularity conditions.
o The 12 most time-consuming examples have been placed in a
\dontrun{} to save time.
o Argument "prob.x" renamed to "probs.x".
o Argument "hbw" removed from iam().
o Argument 'name' is passed into .C and .Fortran() [in dotC()
and dotFortran()] is now okay because the first argument
is unnamed.
CHANGES IN VGAM VERSION 0.8-7
```

NEW FEATURES

```
o Modified VGAM family functions:
genbetaII()@initialize has been improved, as well as
those special cases of that distribution (such as sinmad,
lomax, paralogistic, dagum, etc.).
o Argument 'lapred.index' added to model.matrix().
o npred() is now defined as a generic function (returns M).
o hatvalues() and hatplot() written for vglm() objects.
o The argument 'qr.arg' is set TRUE now by default in vglm().
o df.residual() supports the argument 'type = c("vlm", "lm")'.
o Argument 'nowarning' added to vglm.control().
o New data set: ucberk.
o Improved functions: rposbinom(), rposgeom(), rposnegbin(),
rpospois().
o Tested okay on R 2.15.0.
```

BUG FIXES and CHANGES

```
o Labelling of the linear predictors for sratio(), cratio()
etc. was faulty.
o pbetabinom.ab() did not recycle shape1 correctly
[found by David Venet].
o Arguments lower.tail and log.p not supported (temporarily) in
pposbinom() and qposbinom().
CHANGES IN VGAM VERSION 0.8-6
```

NEW FEATURES

```
o Modified VGAM family functions:
sinmad()@initialize has been improved.
```

BUG FIXES and CHANGES

```
o VGAM now depends on R >= 2.14.0.
o Trying to eliminate some residual errors with the NAMESPACE.
CHANGES IN VGAM VERSION 0.8-5
```

NEW FEATURES

```
o New VGAM family functions:
negbinomial.size(), zabinomial(dpqr),
zageometric(dpqr), [dpqr]posgeom().
o New link functions: nbcanlink().
o Modified VGAM family functions:
posnegbinomial(), zanegbinomial() and zinegbinomial()
use the nsimEIM argument;
zipoisson() handles a matrix response;
all [dpqr]zi-type functions handle zero-deflation,
normal1() can model the variance too as the 2nd parameter.
o Rudimentary methods functions for lrtest() and
update(), based on packages lmtest and base.
o The VGAM family functions for genetic models have been improved
wrt initial values.
o New data sets: xs.nz.
```

BUG FIXES and CHANGES

```
o In anticipation for R version 2.15.0, VGAM imports
from stats4 'coef', 'plot', 'summary', 'vcov'.
Calls to 'print' have been replaced by 'show'
since VGAM uses S4 methods.
Numerous NAMESPACE changes have been made.
No more warnings during checking and installation!
o Labelling in summary() of vglm() objects changed. It
now closely follows glm(). In particular, it has
changed from c("Value", "Std. Error", "t value") to
c("Estimate", "Std. Error", "z value").
Note that "z value" might change later to, e.g., "Wald".
o Zero-inflated and zero-altered functions have renamed and
reordered arguments. Ouch!
These include 'pstr0' for probability of a structural 0 [zero-inflated],
and 'pobs0' for probability of an observed 0 [zero-altered].
For example, argument lpstr0 replaces lphi in zipoisson().
The order of these arguments, including the respective
dpqr-type functions, may have changed too.
o zapoisson() now implements Fisher scoring.
o zipoissonff() had the wrong sign for the non-diagonal EIM element.
o nobs() is now defined as a generic function (needed
for older versions of R---versions 2-12.2 or earlier, actually).
o Data sets renamed:
uscrime and usgrain renamed to crime.us and grain.us;
bminz renamed to bmi.nz,
nzc renamed to chinese.nz,
nzmarital renamed to marital.nz.
o Improved family functions: genbetaII(), betaII(), sinmad(), dagum(),
lomax(), invlomax(), fisk(), invparalogistic(), paralogistic();
wrt fitted values (range checks in place now).
These functions have many argument names changed, e.g.,
link.a is now lshape1.a, init.a is now ishape1.a.
Also, some default initial values have changed from 1 to 2.
o Argument names changed (Ouch!):
q.lag.ma changed to q.ma.lag in garma().
CHANGES IN VGAM VERSION 0.8-4
```

NEW FEATURES

```
o VGAM family functions renamed (Ouch!):
1. 'betabinom.ab' renamed to 'betabinomial.ab'.
o Other functions renamed (Ouch!):
1. '[dpr]betabin' renamed to '[dpr]betabinom' etc.;
2. '[dpr]betabin.ab' renamed to '[dpr]betabinom.ab' etc.;
o Slot names changed (Ouch!):
1. 'link' renamed to 'linkfun' for class "vglmff";
2. 'inverse' renamed to 'linkinv' for class "vglmff".
o Extra arguments added to freund61().
o New VGAM family functions:
abbott(), zigeometric(dpqr), huber1().
o New functions: [p]polono(),
depvar() generic for the dependent (response) variable,
Qvar() and explink() for quasi-variances.
o Improved functions: [d]polono(), [dr]betabin() handles rho = 0
(suggested by Peng Yu).
o Improved family functions: normal1() handles matrix 'weights'.
o Defaults changed: [dr]betabin(rho = 0).
o New methods functions: nobs(), nvar(), depvar().
o Renaming: fitted.vlm() is now fittedvlm(),
persp.qrrvglm() is now perspqrrvglm(),
predict.qrrvglm() is now predictqrrvglm(),
predict.vglm() is now predictvglm().
o New data sets: finney44.
o VGAM now depends on R >= 2.11.1.
o Tested okay on R 2.14.0.
```

BUG FIXES

```
o zibinomial() had 2 wrong elements in the EIM,
thanks to Alan Welsh for picking this up.
o margeff() for cumulative() was faulty.
o blurb slot of binormal() was faulty.
o betabinomial() did not return the estimated rho in @misc$rho as
did betabinomial.ab().
o kumar() did not initialize well with non-integer prior weights.
o rdagum() did not handle the 'scale' argument correctly.
o codes() in s() is defunct so it has been replaced.
CHANGES IN VGAM VERSION 0.8-3
```

NEW FEATURES

```
o Argument names changed (Ouch!):
1. 'method.init' renamed to 'imethod';
2. 'k' renamed to 'size' in negbinomial(), zanegbinomial(),
posnegbinomial(), and zinegbinomial():
e.g., 'lk' renamed to 'lsize', 'ik' renamed to 'isize', etc.
o New data sets: hued, huie, huse, ugss, uscrime;
usagrain renamed to usgrain.
o The "prior.weights" slot is now a "matrix", not "numeric".
o [dpr]betabin.ab() now handles size = 0. Thanks to Robert Wolpert
for picking up this bug.
o New VGAM family functions:
[d]binormal(), [dr]huggins91() but this is not working properly,
[dpqr]explogarithmic(), polya().
o New functions: [dpqr]tobit().
o Improved family functions: tobit() implements the proper EIM for the
standard model, dcennormal1() has some new arguments [and renamed],
cennormal1(), cenrayleigh() renamed.
o VGAM now depends on R >= 2.10.0.
o Rcam(), moffset(), etc. for RCAMs have been improved and modified.
o VGAM family functions currently withdrawn: frechet3().
o Tested ok on R 2.13.0.
```

BUG FIXES

```
o tobit()@loglikelihood had omitted the constant in dnorm().
Also, tobit() uses simulated Fisher scoring (for nonstandard model).
o moffset() was buggy.
o ABO() is a little more robust.
o dirichlet()@loglikelihood miscalculated.
Ditto for gaussian()@loglikelihood (constants were omitted).
Thanks to Arne Henningsen for picking up these bugs.
o zipoissonff() did not initialize correctly and labelling was wrong
with matrix responses.
CHANGES IN VGAM VERSION 0.8-2
```

NEW FEATURES

```
o Objects of class "vglmff" have a "infos" slot to give
information about the family.
o New functions: lambertW(), rcam(), wffc.P3(),
wffc.P3star(), confint_rrnb(), confint_nb1().
o New VGAM family functions:
binom2.Rho(), [dpqr]expgeometric(),
[dpqr]genrayleigh(), [dpqr]huber(),
[dpqr]koenker(), studentt[23](), zipoissonff().
o Argument 'imethod' changed to 'method.init' for some
families, e.g., cnormal1(), tobit(), weibull().
o Improvements have been made to binom2.rho().
o Improved family functions:
negbinomial() has a new argument 'parallel',
micmen() has more initial value choices and fitting algorithms,
kumar(), studentt() and studentt2() now implement the EIM,
normal1() can handle multiple responses.
o Argument names changed:
'init.rho' renamed to 'irho' in binom2.rho(),
'a' renamed to 'scale' in rayleigh(),
'Structural.zero' renamed to 'szero' thoughout.
o zapoisson() permutes the linear/additive predictors.
o Several families such as negbinomial(), z[ai]negbinomial(),
zapoisson(), gamma2(), handle zero = c(-2, 3), say,
i.e., negative and positive values.
o New data sets: about half a dozen road crash data frames of
2009 NZ data.
o constraints(vglmfit) now has a 'type' argument that can be fed
into the original fit (type = "lm") as the constraints argument.
o vchol() takes drastic action to avoid infinite looping: it sets
the working weights to be proportional to the order-M diagonal
matrix.
o lognormal() and lognormal3() now have zero = 2 as the default
(was zero = NULL).
o Some variable names within grc() changed, e.g., Row. and not Row.
o The smartpred package within VGAM has updated poly(), ns(),
bs() and scale() for R version 2.12.0 (2010-10-15).
Calls to smartpredenv are now VGAM:::smartpredenv.
```

BUG FIXES

```
o VGAM:::VGAMenv is used now to avoid problems locating
this environment.
o Input of the mustart, etastart and coefstart arguments at
the solution should results in only one iteration being needed.
o binomialff() and categorical familes (e.g., multinomial) only
accept a factor or non-negative counts as the response.
This allows the 'weights' vector to have any value really.
In the past the denominator of a sample proportion was allowed
via the 'weights' argument.
o wffc.P1() had some rounding problems, e.g., with 0.280 m.
CHANGES IN VGAM VERSION 0.8-1
```

NEW FEATURES

```
o Most of the Fortran 77 code has been converted to C.
This change will be largely hidden from most users
but there may be the occasional bug not detected.
Much of the heavy work was done by Alvin Sou.
o lms.bcn()@loglikelihood incorporates the constants in
the log-likelihood.
o Also, no more F90 code! This means less portability/platform
problems.
o bivgamma.mckay, formerly mckaygamma2(), has been modified
substantially.
o Improvements have been made to simplex() and
[dr]simplex() have been written.
o Expectile functions for the uniform, normal and
exponential distributions: [dpqr]-type functions.
o cqo() has EqualTolerances = TRUE and ITolerances = FALSE as
the default now. The result is that cqo() should work without
the environmental variables being scaled.
If it is scaled then setting ITolerances = TRUE will result
in greater speed and requiring less memory.
o Families that deal with proportions, such as binomialff() and
betabinomial(), incorporate weights separately from the weights
generated by the response/counts. So the weights argument can
now have any positive values.
o rrvglm(..., Norrr = NULL) can be used so that the reduced-rank
regression is applied to every variable including the intercept.
o Renaming: ggamma() is now gengamma(), etc.
o Improved functions: negbinomial() has a few new arguments.
```

BUG FIXES

```
o Deviance.categorical.data.vgam did not handle small
fitted probabilities.
o binom2.rho() could produce small negative fitted probabilities.
o seq2binomial() did not initialize 'mvector'.
o zeta() crashed on some platforms.
o cqo() appears to be working again with the new C code.
o cao() still not working with the new C code.
o zapoisson() did not implement the elambda argument correctly.
o Tested ok on R 2.11.1.
CHANGES IN VGAM VERSION 0.7-10
```

NEW FEATURES

```
o Surv() renamed to Surv4(), class "SurvS4" renamed to "Surv4".
o coef(summary(vglmObject)) returns a 3-column matrix of estimates,
standard errors and Wald statistics, rather than coef(vglmObject)
in the past.
o Improved VGAM family functions: fff() uses simulated Fisher
scoring now and has slightly better initial values.
o New VGAM family functions:
propodds(reverse) is equivalent to
cumulative(parallel=TRUE, reverse=reverse) (for convenience only).
o Compatible with R 2.10.1 and the article "The VGAM package
for categorical data analysis," Journal of Statistical Software,
2010. A vignette based on this paper is included.
o Argument w.als renamed to w.aml in amlnormal().
```

BUG FIXES

```
o VGAM family functions: fff() had poor initial values.
o betabinomial()@loglikelihood required 'ycounts' to be integer.
o [dpqr]betanorm() were written but not in the NAMESPACE.
CHANGES IN VGAM VERSION 0.7-9
```

NEW FEATURES

```
o New functions: margeff() for marginal effects of a vglm()
"multinomial" or "cumulative" model.
o Almost all VGAM family functions now have a "loglikelihood"
slot that incorporates any constants in the density function.
Hence the fitted likelihood may differ by a constant from
previous results.
In particular, models such as multinomial(), cumulative()
and binom2.or() have this new feature.
o vglm() now has a modified 'xij' argument which implements
eta-specific covariates. Usage now involves the form2' argument,
and the 'xij' argument does not interfere with constraint matrices.
Documentation is supplied on the VGAM website, in particular,
http://www.stat.auckland.ac.nz/~yee/VGAM/doc/xij.pdf
o cases.names() and variable.names() methods functions
written for vglm()/vgam() objects.
o cumulative() has improved initial values, especially for
long data format, i.e., when each row of the data frame is an
observation rather than inputting a matrix of counts.
o rrvglm() handles a factor response without giving a warning.
o New data: olympic.
o testf90.f90 has been renamed to testf90.f95. This may decrease
the incidences of compiler problems on some platforms (f95 seems
more popular than f90).
o For cqo() objects: AIC(), resid() have been written.
o Improved functions: negbinomial() default initial values are
more robust to outliers in the response, betabinomial() and
betabin.ab() have better initialization and "loglikelihood"
slot matches dbetabin.ab(log=TRUE).
o Renamed VGAM family functions: alsqreg() becomes amlnormal().
o Renamed arguments: lmu replaces link.mu in zibinomial().
o dzeta(p) has changed wrt 'p'.
o The functions summary.lms() and summary.rc.exponential() are
no longer distributed to avoid a warning wrt S3 vs S4
methods dispatch.
o The VGAM family functions for genetic models have been improved,
e.g., some basic error checking.
Also some changes in the names of the parameters, e.g.,
"q" to "pB" for ABO(), plus some switching of the order of the
arguments.
```

BUG FIXES

```
o VGAM interferes much less in regard to generic functions
such as predict(), fitted(), resid(), wrt other packages and
also including base's lm(), glm(), etc.
o AIC() method for rrvglm() objects was wrong (did not account
for argument 'Structural.zero').
o dzibinom(log=TRUE) was wrong.
CHANGES IN VGAM VERSION 0.7-8
```

NEW FEATURES

```
o [dpqr]benf() written for Benford's distribution.
o plog() and dlog() improved.
o multinomial() now has a refLevel argument to specify the
reference or baseline level of the factor.
o binom2.or() has a new argument 'morerobust'.
o Renamed arguments in mix2normal1().
o DeLury() written.
o [dpqr]-type functions related to the negative binomial distribution
have changed wrt argument names and order.
o [pq]posnegbin(), [dpqr]zapois(), [dr]zanegbin() written.
o [dpqr]zinb() renamed to [dpqr]zinegbin().
o lms.bcn(), lms.bcg(), lms.yjn() have zero=c(1,3) as the new default.
This will increase the chances of successive convergence.
o Renamed arguments in lms.bcn(), lms.bcg(), lms.yjn(), e.g.,
link.sigma is now lsigma.
Some new arguments added too, e.g., llambda.
o Works for R 2.5.0 and later (not 2.4.0 and later).
Compatible with R 2.7.2.
o Contains Fortran 90 code (since 0.7-7, actually). This will
cause problems on older Linux machines without such a
compiler. Actually, removing the .f90 file(s) will not be too
much of a problem as there is very little F90 code in use by
the package at the moment.
o New functions: dbinom2.rho(), rbinom2.rho(), dposnegbin().
o New data: wffc, wffc.indiv, wffc.teams, wffc.nc.
o Improved functions: binom2.rho(), micmen(), negbinomial(),
poissonff(), posnegbinomial(), zanegbinomial(),
o A new form2 argument has been added to vglm().
VGAM family functions such as micmen() have the regressor inputted
using form2 now, rather than the regressor argument.
The resulting usage is a more elegant.
Fitted objects have a few more slots and formulas put in set
places on the object.
o AIC() methods functions has been modified.
```

BUG FIXES

```
o The big bug whereby vgam(... ~ s(x), ... ) did not work under
Windows was due to a single array element that was not initialized.
Evidently, Linux compilers seemed to have set it to zero.
Funny, the code has worked for decade or so...
o dposbinom() was buggy at x=0. Also it now handles size=0 and
prob=0 or prob=1.
o pzipois() was buggy at x<0.
o dbetabin.ab(log=T) was incorrect outside its support.
o zipf() did not handle 0 < s < 1.
o data(ruge) was faulty.
o summary(rrvglmObject) failed.
o persp.cao(ylim=) did not work.
o plotvgam() failed when se=TRUE and which.cf was specified.
CHANGES IN VGAM VERSION 0.7-7
```

NEW FEATURES

```
o Labelling changes: binom2.or() uses "oratio" instead of "OR" (stands
for the odds ratio).
o New VGAM family functions:
zipebcom().
o New functions: dbinom2.or(), rbinom2.or().
o binom2.or() has new arguments 'imu1, 'imu2' and 'ioratio' for
inputting optional marginal probabilities and odds ratio.
The third element of the score vector uses a new formula.
o [dpqr]zinb() has arguments prob and munb set to NULL by default.
o Compatible with R 2.7.0.
```

BUG FIXES

```
o gaussianff()@loglikelihood was buggy.
o all(trivial.constraints(Blist)) changed to
all(trivial.constraints(Blist) == 1) to avoid a warning in R 2.7.0.
Ditto for 'all(findex)' and 'any(diff(Alphavec))'.
o qtriangle(0.3, theta=0.3) used to fail.
o gharmonic() handles a negative argument s.
CHANGES IN VGAM VERSION 0.7-6
```

NEW FEATURES

```
o dpolono() has a new argument 'bigx' which implements an
approximation. It is for handling large values of x.
o vglm() and vgam() now create the response and model matrices etc.
in the same way as glm(). A consequence is that the response
does not have to be "numeric" as in lm(), e.g., a factor response
is now permitted.
o New VGAM family functions:
alaplace1(), alaplace2(), alaplace3(dpqr),
amlbinomial(), amlexponential(), amlpoisson(), amh(),
lqnorm(), mbinomial(), scumulative().
o Other VGAM family functions with argument names changed or added:
lms.yjn2().
o These VGAM family functions have been improved:
alsqreg() [parallel option, w argument can be a vector, link function
for the expectiles].
o The data set "aml" has been renamed "leukemia".
o Previously laplace(zero=NULL), now laplace(zero=2).
```

BUG FIXES

```
o deplot() applied to a "lms.yjn2" object gave an unnecessary warning.
o In the leukemia and toxop data sets 1L is replaced by 1 and 2L by 2 etc.
CHANGES IN VGAM VERSION 0.7-5
```

NEW FEATURES

```
o New VGAM family functions:
betaff(), cardioid(dpqr), cauchy(), felix(d), fnormal1(dpqr),
invbinomial(), kumar(dpqr), lms.yjn2(), mix2exp(), plackett(dpr),
riceff(dr), skellam(dr), zinegbinomial(dpqr).
o These VGAM family functions have been improved:
frank(), genpoisson(), hzeta(), mix2normal1(), mix2poisson(),
pospoisson(), studentt().
o These VGAM family functions have had their default arguments changed:
genpoisson(), mix2normal1().
o New documentation: borel.tanner(dr).
o expm1() used whenever possible.
o Renamed VGAM family functions: betaff() changed to beta.ab().
o cauchy1() now returns the location estimates as the fitted values
instead of NA (for the mean).
```

BUG FIXES

```
o cumulative(), sratio(), cratio(), acat() had response-matrix
column names which got lost.
o lms.yjn() failed if there was not enough data.
CHANGES IN VGAM VERSION 0.7-4
```

NEW FEATURES

```
o weibull() does not handle any censored observations at all.
The function cenweibull(), which will handle censored
observations, is currently being written and will use Surv()
as input; it should be distributed with version 0.7-5 of VGAM.
o bisa() now implements full Fisher scoring. No numerical
integration is needed.
o Certain functions from the smartpred package are no longer
distributed with the VGAM package. These are
lm, glm, predict.lm, predict.mlm, predict.glm.
This is done because many users have found they interfere with
the VGAM package in unpredictable ways.
o The following VGAM family functions have improved initial values:
betabinomial(), cauchy1(), mccullagh89(), negbinomial(),
tpareto1(), zipoisson().
o New family functions: alsqreg(), dexpbinomial(), laplace(),
poissonp(), seq2binomial(), triangle(dpqr).
o VGAM family functions currently withdrawn:
cexpon().
o A new class called "SurvS4" has been prepared. It will be used
later to handle VGAM family functions beginning with "cen" that
use Surv() as input.
o log1p() used whenever possible.
```

BUG FIXES

```
o bisa() did not make use of ishape.
o cao(..., family=gaussianff) failed. It now works, although the
dispersion parameter is computed using a slightly different
formula.
CHANGES IN VGAM VERSION 0.7-3
```

NEW FEATURES

```
o gpd() now does not delete any data internally. The user should
use the subset argument of vglm() and vgam() in order to select
any subset of a data frame.
o zapoisson() has a zero argument, and this can be assigned
a negative value.
o "partial for" is added to the ylabel of linear terms of a vgam()
object when it is plotted.
o When a vgam() object is plotted with se=TRUE and if there are
linear terms then the mean of x is added to the plot (this makes
the standard error curves meet there).
o This package has been tested (somewhat) under R 2.5.0.
```

BUG FIXES

```
o plotvgam() did not work for vgam() objects using the subset argument.
o cao() objects would not show() or print(), at least under R 2.4.1.
o summary(vgam.object) failed if vgam.object was a totally linear
model (i.e., no s() term in the formula). Now the "R" slot is
assigned for all vgam() objects.
o preplotvgam() had a bug regarding $se.fit of an atomic pred$se.fit.
CHANGES IN VGAM VERSION 0.7-2
```

NEW FEATURES

```
o Almost all VGAM family functions now have an earg-type argument
to support each link function. This allows parameters specific
to each link to be passed in,
e.g., VGAMfamilyfunction(link="logoff", earg=list(offset=1))
o rinv.gaussian() is new.
o New VGAM family functions: morgenstern(), fgm(), gumbelIbiv(),
ordpoisson().
o New documentation: powl(), fsqrt().
```

BUG FIXES

```
o zanegbinomial()@last had wrong names in misc$link.
o summary(vgam.object) failed to print the anova table.
o summary(cao.object) failed.
```

CHANGES

```
o binom2.or() has argument names changed from "lp" to "lmu" etc.
This is partly to make it in keeping with other VGAM family
functions for binary responses.
o Other VGAM family functions with argument names changed: frank().
o lms.bcn(), lms.bcg(), lms.yjn() arguments have changed order.
o hyper() renamed to hyperg().
o plotvgam() uses ylim if it is inputted.
CHANGES IN VGAM VERSION 0.7-1
```

NEW FEATURES

```
o VGAM family functions now require full (name) specification
of parameter link functions. For example, binomialff(link=probit)
is ok, as is binomialff(link="probit"), but binomialff(link="pr")
isn't.
VGAM family functions no longer offer a fixed set of link
functions but the user can invoke any, as well as write their
own link function.
o Working residuals for vglm() objects are now the default.
They used to be deviance residuals but they are not defined
for most VGAM family functions.
In the future the default may become "pearson" residuals.
For safety, use the type argument, e.g.,
resid(vglmobject, type="response").
o ITolerances=TRUE is now the default for qrrvglm.control(),
consequently, equal tolerances CQO models are fitted. The
rationale for this change that setting ITolerances=TRUE
provides the fast computational speed as well as the easiest
interpretation of the results. Also, rcqo() matches this by
having EqualTolerances=TRUE as its default. However, having an
equal tolerances assumption should be checked.
o New VGAM family functions: tikuv(dpqr), [dpqr]naka(), [dpr]log(),
[dpqr]tpareto1(), betabinomial().
o VGAM family functions which have been renamed (and often improved):
New name Old name
-------- --------
dirmultinomial() dirmul()
negbinomial() negbin.mu()
negbinomial.ab() negbin.mn()
posnegbinomial() posnegbin.mu()
zanegbinomial() zanegbin.mu()
rposnegbin() rposnegbin.mu()
gamma2() gamma2.ab()
gamma2mu() gamma2()
o New functions: lerch(), rcqo().
o In the smartpred package smart.mode.is(mode.arg) now requires
mode.arg, if given, to be exactly one of 3 character strings.
Also, is.smart(object) handles object being a smart function
or a fitted object.
o The VGAM package comes with modified lm, predict.lm, predict.glm,
predict.mlm, glm functions---these implement smart prediction, and
are current to R version 2.3.1 (2006-06-01).
o The order of the linear/additive predictors for expexp()
have been switched.
o weibull(zero=2) is the default now.
o negbin.mu(), posnegbin.mu(), zanegbin.mu: these have a few added
arguments for further flexibility, and some arguments have changed
names, e.g., 'k.init' has been changed to 'ik' and 'link.mu' to
'lmu'.
o Negative binomial random variates are now generated using
rnbinom() in the stats package rather than rnegbin() in the MASS
package.
o binom2.or() and binom2.rho() have more choices for some arguments
such as lor and lrho.
o Initial values have been improved for logff(), zipf() and zetaff().
o This package should work for R 2.4.0 after additional tweaks to
handle changes in show().
```

BUG FIXES

```
o pbetabin() had a bug.
o studentt() has a mean of 0 only if df > 1.
o garma() failed for link="loge". It now works for binary
data with the "logit" link.
o Internally, wz <- matrix(NA, ...) changed to
wz <- matrix(as.numeric(NA), ...).
Ditto for rep(NA, ...) to rep(as.numeric(NA), ...).
o tobit() had a bug in the initialize slot.
o rposnegbin.mu() now calls the MASS library function rnegbin()
explicitly.
o gammaff() now works.
o Working residuals for cao() objects were wrong.
o lvplot() for cao() objects have a whichSpecies argument
which allows selective plotting of the species' curves.
o gaussianff() did not work with rrvglm(). It now has a
loglikelihood slot, and returns deviance residuals for M>1.
```

CHANGES

```
o gaussianff(), studentt() have the order of its arguments changed.
o eta2theta(), theta2eta(): if these have a matrix "theta" then it
no longer calls the VGAM link function one column at a time.
Hence VGAM link functions must handle matrix "theta" using one
value of "earg" argument.
o The earg argument has changed for many VGAM link functions. It
is now a list, with component names that are specific to each
link function.
See the online help files for the list component names.
Soon, every VGAM family function that allows a link function
will have an earg argument to match it, thus giving maximum
flexibility.
CHANGES IN VGAM VERSION 0.6-9
```

NEW FEATURES

```
o New VGAM family functions: lino(dpqr), recexp1(),
posnormal1(dpqr), betageometric(dpr), [dr]polono(),
[dpr]betabin(), gamma2mu(), bisa(dpqr), zipf(dp).
There is a new dirmul() (the old one is renamed to dirmul.old())
but it hasn't yet be completed.
o Renamed VGAM family functions: beta2() changed to betaff().
o Renamed VGAM functions: is.a.number() changed to is.Numeric().
o The Windows crossbuild was done under R 2.3.0.
```

BUG FIXES

```
o Family functions lognormal(), lognormal3() now include the
1/sqrt(2*pi) constant in @loglikelihood because of its use of
dnorm(..., log=TRUE) and dlnorm(..., log=TRUE).
o [dpqr]lognormal() withdrawn as they exist in R already.
o Documentation for betaff() contained mistakes.
o summary() of a betabin.ab() object used to fail.
o The assign statement has been removed from some FORTRAN code.
CHANGES IN VGAM VERSION 0.6-8
```

NEW FEATURES

```
o New VGAM family functions: recnormal1(), recexp1(),
paretoIV(dpqr), paretoIII(dpqr), paretoII(dpqr),
gammahyp(), benini(dpqr).
However, the fitted value (mean) for benini() may be faulty.
o Decommissioned VGAM family functions: gpdold(), ogev(),
zipoissonX().
o gumbel.block() renamed to gumbel(), and gumbel() renamed to egumbel().
o Argument names and defaults have changed for: gpd(), egev(), gev(),
ogev(), cgumbel(), egumbel(), gumbel(), and weibull().
Also, gpd(), gev() and egev() have some improvements done internally.
Also, rlplot() is new.
o Several family functions have been converted to a new convention
whereby ilocation, iscale, ishape arguments are used, and also
llocation, lscale, lshape arguments for the link functions etc.
o New link function: nidentity(theta) for negative-identity: -theta.
o New argument "untransform" in predict() and vcov() for VGLMs.
o For intercept-only models, Coef(fit) returns more user-friendly
labelled output.
```

BUG FIXES

```
o ppareto() had a bug.
o gpd() had an incorrect second derivative.
CHANGES IN VGAM VERSION 0.6-7
```

NEW FEATURES

```
o New VGAM family functions: bilogistic4(dpr), frechet2(),
frechet3(), freund61(), frank(dpr), mccullagh89().
o For cao(), df1.nl has a default of 2.5, changed from 2.0 before.
o For vglm(), vgam() etc., diagonal elements of the working weight
matrices that are less than .Machine$double.eps^0.75 are replaced
by this value. The arguments checkwz and wzepsilon support this
feature.
o More documentation on: fill() [re. the xij argument], cauchy1().
o logistic2() now uses Fisher scoring.
o Argument init.method changed to method.init in several family
functions.
o Any non-smart-prediction use of smartpredenv has been changed
to VGAMenv.
```

BUG FIXES

```
o rayleigh() was not in NAMESPACE.
o logistic1() and logistic2() had wrong first derivatives and
loglikelihood function.
logistic1() offers some choice of link function for the location
parameter.
CHANGES IN VGAM VERSION 0.6-6
```

NEW FEATURES

```
o New functions: zibinomial(), zibinom(dpqr), posbinom(dpqr),
mix2normal1(), mix2poisson(), dsnorm(), rsnorm(),
cexpon(), cgumbel(), cnormal1(), hyper().
o New generic functions: is.bell() works for RR-VGLMs, QRR-VGLMs
and RR-VGAMs (CLO, CQO and CAO, respectively).
o normal1() has a new (first) argument: lmean for the mean.
o Documentation for skewnormal1() and snorm(dr).
```

BUG FIXES

```
o tobit() now implements Fisher scoring properly.
o Coef.vlm() needed to test for trivial constraints.
o skewnorm1() had a bug in it. It has been fixed and renamed to
skewnormal1().
o cao() had a problem with the variable "usethiseta" when it had
possible NAs.
o An appropriate error message is given if residuals=TRUE in the
call to @loglikelihood, for all VGAM family functions.
o Two unneeded lines in rgam.f have been removed.
CHANGES IN VGAM VERSION 0.6-5
```

NEW FEATURES

```
o New functions: guplot(), meplot(), ggamma(dpqr), fff(),
vonmises(), lgamma3ff, lgamma(dpqr), prentice74, tobit,
zipoisson(dpqr), [dpqr]pospois(), [dpqr]laplace but there is
no laplace().
o cqo() has been largely rewritten. It now sports a new algorithm
for ITolerances=TRUE. It can handle large data sets (e.g., 1000
sites with 100 species). Compared to other cqo() options, it is
the fastest. There are a few things to learn though to take full
advantage of the new algorithm, e.g., centering the variables.
o Windows version is cross built with R 2.2.0. The Linux version
has been tested with R 2.2.0.
o cao() has been largely rewritten. It now should not hang in the
the windows cross build version.
o .Init.Poisson.CQO() has been renamed .Init.Poisson.QO(), and also
improved (however, it uses more memory by default).
o Modelling functions such as vglm(), vgam() and cao() have
qr.arg=FALSE now. This means object sizes can be a lot smaller.
o The functions positive.poisson(), positive.binomial() etc. have
been renamed pospoisson(), posbinomial() etc.
o The functions [dpqr]gpd now have a location=0 argument.
o Some VGAM family functions will be adapted later to use the
BFGS quasi-Newton update for their working weight matrices.
o The link function logoff() now works, for constant offsets.
Link functions had the argument "extra"; now called "earg"
to avoid confusion with the argument "extra" used in vglm() etc.
Also, elogit() is new, which allows a parameter to lie between
two values (A,B), say.
```

BUG FIXES

```
o plotvgam() was incorrect if one of the terms (but not the first)
was "x" or a function of "x" such as bs(x).
o smart.expression now handles multiple 'arguments' by choosing
the first, which is the smart function name.
o lv(rrvglm.object) failed.
CHANGES IN VGAM VERSION 0.6-4
```

NEW FEATURES

```
o New family functions: betabin.ab(), betaprime(), dcnormal1(),
erlang(), expexp(), inv.gaussianff(), maxwell(), mckaygamma2(),
nakagami(), pareto1(), rayleigh(), wald().
Of these, Pareto, Rayleigh and Maxwell have random number
generation etc.
o If criter="coef" and trace=TRUE, then the number of
decimal places used to print the estimated coefficients at
each iteration is proportional to the control constant
epsilon.
o tanl() has been named to cauchit(), and appropriate
family functions reflect this change, i.e.,
link="cauchit" instead of link="tanl".
o size.binomial() has been improved.
o Documentation for gamma1(), gamma2().
```

BUG FIXES

```
o The documentation for the reverse argument in cumulative(),
cratio(), etc. was incorrect.
o vcov() didn't work on the windows version.
o cao() still hangs under the windows version, so hopefully
this bug will be fixed soon!
CHANGES IN VGAM VERSION 0.6-3
```

NEW FEATURES

```
o Built with R 2.1.0 for the .zip file (Windows version) and
deposited in the right directory at www.stat.auckland.ac.nz.
o More documentation, e.g., fitted(), yeo.johnson(),
dirmul().
o zeta() and zetaff() have been improved and/or corrected.
o The family functions binomial, poisson, quasibinomial,
quasipoisson, gaussian, inverse.gaussian, Gamma
have been withdrawn because of inteference with glm().
CHANGES IN VGAM VERSION 0.6-2
```

NEW FEATURES

```
o model.frame() and model.matrix() are roughly working for
objects that inherit from "vlm"s, e.g., "vglm" objects.
Both of these methods functions accept a "data"
argument etc.
Also, for these, smart prediction works.
o A methods function for the generic function weights() has
been written for VGLM objects. It returns
either the prior or working weights.
```

BUG FIXES

```
o The Crow1positive argument in cao() did not function correctly.
o The family functions dagum, fisk, lomax, invlomax, paralogistic,
invparalogistic, lognormal were not exported in the NAMESPACE
file.
o Functions in gaut.c and mux.c used "long" to represent integers.
In R, these should be "int". Although these are equivalent on
32-bit machines, they differ on 64-bit machines and crash.
The files are now renamed to gautr.c and muxr.c in R.
o summary(cao.object) failed.
CHANGES IN VGAM VERSION 0.6-1
```

NEW FEATURES

```
o New functions: cao() for "constrained additive ordination",
and uqo() for "unconstrained quadratic ordination".
Both of these are unfinished but will hopefully be
completed in the forseeable future.
o The function cgo() has been renamed to cqo(). Ouch!
CQO stands for "constrained quadratic ordination", and is
better than the old name cgo(), for
canonical Gaussian ordination.
o The inverse() link function has been renamed to reciprocal().
o More documentation: loglinb2() and loglinb3().
o zipbipp() renamed to zapoisson(), where "za" stand for
"zero-altered". This is more in line with the literature.
New families: zanegbin.mu, positive.negbin.mu.
New random variates: rposnegbin.mu, rpospois.
o negbin.mu() works now for cgo(). The subsequent methods
functions have been adapted to work on it too.
However, negbin.mu() is not recommended because maximum
likelihood estimation of the index parameter is fraught
numerically. It is better to use quasipoissonff().
o cgo() now uses the function .Init.Poisson.CGO() to obtain
initial values for the canonical coefficients, C.
The argument Use.Init.Poisson.CGO in qrrvglm.control()
now controls this feature.
o Lazy loading has been enabled for the VGAM package.
o Name spaces has been introduced into the VGAM package.
The consequencies of this might be far reaching for
code heavily based on the internals of the VGAM package.
o The application of name spaces means "ff" can be dropped
from certain family functions. In particular, poisson() can
be used instead of poissonff(), and binomial() instead
of binomialff(). Ditto for quasipoissonff() and
quasibinomialff().
o names.of() changed to namesof(). Many other function names
have been changed, particularly those of the S3 classes
such as coef. something, e.g., coef.vlm to coefvlm.
In general, S3 methods functions such as print.summary.vlm have
the first "." deleted, but classes such as "summary.vlm" retain the
".", and the function is printsummary.vlm.
```

BUG FIXES

```
o Some documentation regarding the negative binomial
distribution was wrong.
o The digamma function in FORTRAN was buggy.
o gumbel.block() now handles a vector response (equivalently,
a one column matrix) and the deviance has been decommissioned.
Instead, the log-likelihood is computed.
CHANGES IN VGAM VERSION 0.5-24
```

NEW FEATURES

```
o zipbipp() and zipoissonX() are new alternatives to yip88().
They fit a zero-inflated Poisson distribution.
Both can handle covariates for both parameters (p0 or
phi, and lambda.)
zipbipp() is recommended over the others.
zipoissonX() is experimental at this stage
and should be used with caution.
rpospois() is new.
o More documentation: rhobit and binom2.rho.
o binom2.or() now has lp1 and lp2 arguments, which allow
a different link function for each of the two marginal
probabilities.
o bratt() is a new family function. It fits the Bradley Terry
model with ties.
o flush.console() is used if it exists. This will make
Windows version more nicer for large data sets and when
trace=TRUE is used.
o wweights() extracts the working weights of an object.
Used to be called vweights().
CHANGES IN VGAM VERSION 0.5-23
```

NEW FEATURES

```
o The package works under the latest version, viz. 2.0.0.
There are fewer warning messages when checking :)
o persp() for CGO objects now handles Rank=1 models.
CHANGES IN VGAM VERSION 0.5-22
```

BUG FIXES

```
o plot.vgam(..., overlay=TRUE, which.cf=1:2) was incorrect.
```

NEW FEATURES

```
o demo files now are avaible for VGAM. These include lmsqreg,
distributions, and cgo. More will be added later.
CHANGES IN VGAM VERSION 0.5-21
```

BUG FIXES

```
o .Rd files adapted to reflect new changes in the library names.
o persp.qrrvglm() argument whichSpecies was faulty.
o gpd()@inverse returned erroneous centiles.
o Coef(cgo(..., FastAlgorithm=TRUE)) produced wrong results.
```

NEW FEATURES

```
o cgo(..., FastAlgorithm=TRUE) has been fined-tuned to give
greater speed and accuracy.
o lms.yjn() uses FORTRAN code to implement the Gauss-Legendre
algorithm. This results in greater accuracy.
o More documentation, especially for family functions for
extreme values modelling.
CHANGES IN VGAM VERSION 0.5-20
```

BUG FIXES

```
o vglm(y ~ x, binomialff(link=tanl)) used to fail.
o The CHECK command failed previously, but now it only
gives 5 warnings.
```

NEW FEATURES

```
o persp.qrrvglm() has been written to apply persp() to
a rank-2 CGO model.
o cgo(..., FastAlgorithm=TRUE) now has a logical argument
GradientFunction, which if TRUE (default), computes the
derivatives by using finite-difference approximations.
The default will cause the speed to generally increase.
CHANGES IN VGAM VERSION 0.5-19
```

BUG FIXES

```
o garma() did coerce the model matrix into the correct class
o fisherz() could not work out the inverse.
```

NEW FEATURES

```
o trplot() is a new generic function, and for objects of
class "qrrvglm" (a cgo() object), it produces a trajectory plot
for species.
o vcov.qrrvglm() now computes standard errors and returns the
variance-covariance matrix for rank-1 QRR-VGLMs.
o A new fast algorithm is implemented for cgo(..., FastAlgorithm=TRUE)
which only works under windows. It is a new undocumented algorithm.
o New family functions: lognormal(), lognormal3(), weibull().
o New family functions: genbetaII(), betaII(), sinmad(), dagum(),
lomax(), invlomax(), fisk(), invparalogistic(), paralogistic().
Additionally, d*, r* p* and q* forms of the
density/random-generation etc. functions for all of these
except for betaII and genbetaII.
o New link function for (0,1) parameters: tanl() for tan link.
It has a heavier tail and corresponds to a Cauchy distribution
(cf. probit for normal).
o New family function: brat() for the Bradley Terry model
(intercept model only).
CHANGES IN VGAM VERSION 0.5-18
```

NEW FEATURES

```
o I've changed deplot.lmscreg() so that the "at" argument is now
"y.arg", and the density is returned with name "density" instead
of "y". That is, "at" is now "y", and "y" is now "density".
o lvplot.rrvglm() and biplot.rrvglm() have been merged and are now
equivalent.
CHANGES IN VGAM VERSION 0.5-17
```

BUG FIXES

```
o Bestof argument in cgo() and rrvglm() was faulty.
o Bug in plot.vgam(type.resid) fixed.
```

NEW FEATURES

```
o Updated to work under R 1.8.1
o logLik() and AIC() methods functions supported for many VGAM objects.
o lms.bcn.control(), lms.bcg.control(), lms.yjn.control() now
have trace=TRUE because monitoring LMS quantile regression models
is a good idea.
o lms.bcn(), lms.bcg(), lms.yjn() now improved.
CHANGES IN VGAM VERSION 0.5-16
```

BUG FIXES

```
o biplot.rrvglm() had a internal bug with @C.
o Runs under R 1.8.0 now, having a fix with "qr" slot.
o etastart, coefstart, mustart arguments were not functional in vgam().
o vchol() did not replace the correct elements; sometimes the index
was out of subscript range.
o residuals.vlm() tried to evaluate a deviance slot in a "vglmff" object
even when it was empty.
o Documentation links to functions in other packages now work.
```

NEW FEATURES

```
o lvplot.qrrvglm() has been renamed biplot.qrrvglm().
Argument Equal.tolerances changed to EqualTolerances.
Argument Circular changed to ITolerances.
rrvglm.control() now split into qrrvglm.control() and itself.
o cgo() now performs canonical Gaussian ordination.
CHANGES IN VGAM VERSION 0.5-15
```

BUG FIXES

```
o Coef.qrrvglm() failed wrt Equal.tolerances and Circular when
Rank>2.
```

NEW FEATURES

```
o gco() is now an easier interface for fitting Gaussian canonical
ordination models. gco(...) is essentially rrvglm(..., Quadratic=TRUE).
o Documentation for deplot.lmscreg(), qtplot.lmscreg(), cdf.lmscreg()
and related functions. Also for positive.poisson(),
positive.binomial() and yip88().
o lvplot.qrrvglm() improved to handle non-diagonal tolerance matrices,
and a new Rotate option is available for QRR-VGLMs.
o By default, QRR-VGLMs now have the constraint that the latent
variables are uncorrelated and have unit variances, i.e.,
their variance-covariance matrix is diag(Rank).
Also, the Crow1positive argument allows ordinations to be reflected
across axes.
CHANGES IN VGAM VERSION 0.5-14
```

BUG FIXES

```
o vgam() with s() terms and subset= used to give a bug because the
attributes of s() were lost.
o summary() of a gaussianff was faulty because control.gaussianff()
was called gaussianff.control().
```

NEW FEATURES

```
o install.packages("VGAM", CRAN="http://www.stat.auckland.ac.nz/~yee")
now works for PC and Linux/Unix, i.e., the distribution of the
VGAM package allows for this type of download.
o poissonff(), quasipoissonff(), binomialff() and
quasibinomialff() now handle multiple dispersion parameters when
mv=TRUE and onedpar=FALSE.
o Generic function predictx(), with methods function for "qrrvglm"
objects. This solves (with limited functionality) the calibration
problem.
o predict.qrrvglm() and predict.rrvglm() written (but don't work 100%)
o Coef.rrvglm() now returns an S4 object, which can be printed nicely.
o summary.qrrvglm() has been improved.
o Documentation for poissonff(), quasipoissonff(), binomialff() and
quasibinomialff().
CHANGES IN VGAM VERSION 0.5-13
```

BUG FIXES

```
o Code with T and F now use TRUE and FALSE.
```

NEW FEATURES

```
o Documentation for lms.bcn(), lms.bcg(), lms.yjn(), and bmi.
Additionally, the overall documentation has been improved
throughout.
o print.Coef.qrrvglm prints the contents of Coef(qrrvglm.object)
in a nicer format. It uses S4 features.
CHANGES IN VGAM VERSION 0.5-12
```

BUG FIXES

```
o The package now works under R 1.7.1. This includes the smart
prediction library.
o dirichlet(), skewnorm1(), geometric(), gamma2() and erlang()
had a bug that has been fixed.
```

NEW FEATURES

```
o documentation for beta2(), and dirichlet().
o Easier installation; use something like
"R CMD INSTALL -l ./myRlibs VGAM_0.5-12.tar.gz"
for a local library.
CHANGES IN VGAM VERSION 0.5-11
```

BUG FIXES

```
o The code has been upgraded to work under R 1.7.0 because
of the calls to LAPACK and object oriented features.
```

NEW FEATURES

```
o levy() added, plus grc() documentation.
o constraints added to binomialff() and poissonff() since
they both handle multivariate responses.
CHANGES IN VGAM VERSION 0.5-10
```

BUG FIXES

```
o Many univariate family functions had a faulty loglikelihood slot.
o negbin.mu() was faulty causing very slow convergence.
o Coef.vglm() had a bug due to "fit" rather than "object"
```

NEW FEATURES

```
o logff() added.
o The undocumented backchat facility now works for Splus 6.x.
This should increase the efficiency of vglm() in particular.
Thanks to Insightful and Dr J. Chambers for helping to get it
going under the S4 engine.
CHANGES IN VGAM VERSION 0.5-9
```

BUG FIXES

```
o binomialff() had a bug in @weight.
o binomialff(mv=T) used to fail.
o gev(), ogev() and egev() had @loglikelihood that was faulty.
```

NEW FEATURES

```
o .Rd documentation included for vglm(), vgam(), rrvglm(), and
associated control and class functions, plus smart prediction.
CHANGES IN VGAM VERSION 0.5-8
```

NEW FEATURES

```
o rrvglm() now has a Quadratic argument to implement the class of
Quadratic Reduced-rank VGLMs, which gives maximum likelihood
solutions to Gaussian canonical ordination problems.
Documentation is in rrvglm.pdf
CHANGES IN VGAM VERSION 0.5-7
```

NEW FEATURES

```
o vglm() now has a xij argument which implements eta-specific covariates.
Documentation is supplied on the VGAM website.
o grc() has been written for Goodman's RC association model for a
contingency table. Documentation is in rrvglm.pdf
```