amlbinomial(w.aml=1, parallel=FALSE, digw=4, link="logit", earg=list())
w.aml
has more than one value then
this argument allows the quantile curves to differ by the same amount
as a function of the covariates.
Setting this to be TRUE
should force the quantile curves to
not cross (although Round
as the digits
argument
for the w.aml
values;
used cosmetically for labelling.binomialff
."vglmff"
(see vglmff-class
).
The object is used by modelling functions such as vglm
and vgam
.w.aml
has more than one value then the value returned by
deviance
is the sum of all the (weighted) deviances taken over
all the w.aml
values.
See Equation (1.6) of Efron (1992).binomialff
) but the usual deviance is replaced by an
asymmetric squared error loss function; it is multiplied by
$w.aml$ for positive residuals.
The solution is the set of regression coefficients that minimize the
sum of these deviance-type values over the data set, weighted by
the weights
argument (so that it can contain frequencies).
Newton-Raphson estimation is used here.amlpoisson
,
amlexponential
,
amlnormal
,
alaplace1
.# Example: binomial data with lots of trials per observation
set.seed(1234)
sizevec = rep(100, length=(n <- 200))
mydat = data.frame(x = sort(runif(n)))
mydat = transform(mydat,
prob=logit(-0+2.5*x+x^2, inverse=TRUE))
mydat = transform(mydat, y = rbinom(n, size=sizevec, prob=prob))
mydat = transform(mydat, y = y / sizevec) # Convert to proportions
(fit = vgam(y ~ s(x, df=3), fam=amlbinomial(w=c(0.01,0.2,1,5,60)),
data=mydat, weight=sizevec, trace=TRUE))
fit@extra
par(mfrow=c(1,2))
# Quantile plot
with(mydat, plot(x, jitter(y), col="blue", las=1, main=
paste(paste(round(fit@extra$percentile, dig=1), collapse=", "),
"percentile-expectile curves")))
with(mydat, matlines(x, fitted(fit), lwd=2, col="blue", lty=1))
# Compare the fitted expectiles with the quantiles
with(mydat, plot(x, jitter(y), col="blue", las=1, main=
paste(paste(round(fit@extra$percentile, dig=1), collapse=", "),
"percentile curves are red")))
with(mydat, matlines(x, fitted(fit), lwd=2, col="blue", lty=1))
for(ii in fit@extra$percentile)
with(mydat, matlines(x, qbinom(p=ii/100, size=sizevec, prob=prob)/sizevec,
col="red", lwd=2, lty=1))
Run the code above in your browser using DataLab