
Last chance! 50% off unlimited learning
Sale ends in
normal.vcm(link.list = list("(Default)" = "identity"),
earg.list = list("(Default)" = list()),
lsd = "loge", lvar = "loge",
esd = list(), evar = list(),
var.arg = FALSE, imethod = 1,
icoefficients = NULL, isd = NULL, zero = "M")
CommonVGAMffArguments
for more information.
The default is for CommonVGAMffArguments
for more information.
Same as uninormal
uninormal
.CommonVGAMffArguments
for more information.
The default applies to the last one,
viz. the standard deviation/variance."vglmff"
(see vglmff-class
).
The object is used by modelling functions such as vglm
,
and vgam
.identity
-link functions.
If the initial value of the standard deviation/variance is too
small then numerical problems may occur.
One trick is to fit an intercept-only only model and feed its
predict()
output into argument etastart
of a
more complicated model.
The use of the zero
argument is recommended in order
to keep models as simple as possible.
The usual linear model is specified through argument
form2
. As with all other formula
.
The mlogit
link allows a subset of the
coefficients to be positive and add to unity. Either
none or more than one call to mlogit
is allowed. The last variable will be used as the
baseline/reference group, and therefore excluded from
the estimation.
By default, the log of the standard deviation is the last linear/additive predictor. It is recommended that this parameter be estimated as intercept-only, for numerical stability.
Technically, the Fisher information matrix is of unit-rank for all but the last parameter (the standard deviation/variance). Hence an approximation is used that pools over all the observations.
This identity
,
loge
,
logoff
,
loglog
,
logit
,
probit
,
cauchit
.
cloglog
,
rhobit
,
fisherz
.
uninormal
,
lm
.ndata <- data.frame(x2 = runif(nn <- 2000))
# Note that coeff1 + coeff2 + coeff5 == 1. So try a "mlogit" link.
myoffset <- 10
ndata <- transform(ndata,
coeff1 = 0.25, # "mlogit" link
coeff2 = 0.25, # "mlogit" link
coeff3 = exp(-0.5), # "loge" link
coeff4 = logoff(+0.5, offset = myoffset, inverse = TRUE), # "logoff" link
coeff5 = 0.50, # "mlogit" link
coeff6 = 1.00, # "identity" link
v2 = runif(nn),
v3 = runif(nn),
v4 = runif(nn),
v5 = rnorm(nn),
v6 = rnorm(nn))
ndata <- transform(ndata,
Coeff1 = 0.25 - 0 * x2,
Coeff2 = 0.25 - 0 * x2,
Coeff3 = logit(-0.5 - 1 * x2, inverse = TRUE),
Coeff4 = loglog( 0.5 - 1 * x2, inverse = TRUE),
Coeff5 = 0.50 - 0 * x2,
Coeff6 = 1.00 + 1 * x2)
ndata <- transform(ndata,
y1 = coeff1 * 1 +
coeff2 * v2 +
coeff3 * v3 +
coeff4 * v4 +
coeff5 * v5 +
coeff6 * v6 + rnorm(nn, sd = exp(0)),
y2 = Coeff1 * 1 +
Coeff2 * v2 +
Coeff3 * v3 +
Coeff4 * v4 +
Coeff5 * v5 +
Coeff6 * v6 + rnorm(nn, sd = exp(0)))
# An intercept-only model
fit1 <- vglm(y1 ~ 1,
form2 = ~ 1 + v2 + v3 + v4 + v5 + v6,
normal.vcm(link.list = list("(Intercept)" = "mlogit",
"v2" = "mlogit",
"v3" = "loge",
"v4" = "logoff",
"(Default)" = "identity",
"v5" = "mlogit"),
earg.list = list("(Intercept)" = list(),
"v2" = list(),
"v4" = list(offset = myoffset),
"v3" = list(),
"(Default)" = list(),
"v5" = list()),
zero = c(1:2, 6)),
data = ndata, trace = TRUE)
coef(fit1, matrix = TRUE)
summary(fit1)
# This works only for intercept-only models:
mlogit(rbind(coef(fit1, matrix = TRUE)[1, c(1, 2)]), inverse = TRUE)
# A model with covariate x2 for the regression coefficients
fit2 <- vglm(y2 ~ 1 + x2,
form2 = ~ 1 + v2 + v3 + v4 + v5 + v6,
normal.vcm(link.list = list("(Intercept)" = "mlogit",
"v2" = "mlogit",
"v3" = "logit",
"v4" = "loglog",
"(Default)" = "identity",
"v5" = "mlogit"),
earg.list = list("(Intercept)" = list(),
"v2" = list(),
"v3" = list(),
"v4" = list(),
"(Default)" = list(),
"v5" = list()),
zero = c(1:2, 6)),
data = ndata, trace = TRUE)
coef(fit2, matrix = TRUE)
summary(fit2)
Run the code above in your browser using DataLab