margeff(object, subset=NULL)
vglm
multinomial
or
cumulative
object. If
is.numeric(subset)
and
length(subset) == 1
then a
$p$ by $M+1$ matrix is returned.
This function is not applicable for models with
data-dependent terms such as bs
and
poly
.
Also the function should not be applied to models with any terms that
have generated more than one column of the LM model matrix,
such as bs
and poly
.
For such try using numerical methods such as finite-differences.
The formula
in object
should comprise of simple terms
of the form ~ x2 + x3 + x4
, etc.
multinomial
,
cumulative
,
vglm
.# Not a good example for multinomial() because the response is ordinal!!
ii = 3; hh = 1/100
pneumo = transform(pneumo, let = log(exposure.time))
fit = vglm(cbind(normal, mild, severe) ~ let, multinomial, pneumo)
fit = vglm(cbind(normal, mild, severe) ~ let,
cumulative(reverse=TRUE, parallel=TRUE),
data = pneumo)
fitted(fit)[ii,]
mynewdata = with(pneumo, data.frame(let = let[ii]+hh))
(newp <- predict(fit, newdata=mynewdata, type="response"))
# Compare the difference. Should be the same as hh --> 0.
round(dig=3, (newp-fitted(fit)[ii,])/hh) # Finite-difference approximation
round(dig=3, margeff(fit, subset=ii)["let",])
# Other examples
round(dig=3, margeff(fit))
round(dig=3, margeff(fit, subset=2)["let",])
round(dig=3, margeff(fit, subset=c(FALSE,TRUE))["let",,]) # recycling
round(dig=3, margeff(fit, subset=c(2,4,6,8))["let",,])
Run the code above in your browser using DataLab