
SUR(mle.normal = FALSE,
divisor = c("n", "n-max(pj,pk)", "sqrt((n-pj)*(n-pk))"),
parallel = FALSE, Varcov = NULL, matrix.arg = FALSE)
TRUE
then the MLE, assuming multivariate normal errors,
is computed;
the effect is just to add a loglikelihood
slot to the
returned object.
Then it results in the maximum likelihood estimator."n"
then the estimate will be biased.
If the others then the estimate will be unbiased for some elements.
If ml
CommonVGAMffArguments
.
If parallel = TRUE
then the constraint applies to
the intercept too.matrix.arg
then this is a $M \times M$ matrix.
If !matrix.arg
then this is a $M \times M$ matrix in
matrix-band format (a vector with at least $M$ and
"vglmff"
(see vglmff-class
).
The object is used by modelling functions such as
vglm
and vgam
.epsilon = 1e-11
, especially
with mle.normal = TRUE
.
Zellner's efficient (ZEF) estimator (also known as
Zellner's two-stage Aitken estimator)
can be obtained by setting
maxit = 1
(and possibly divisor = "sqrt"
or
divisor = "n-max"
).
The default value of maxit
(in vglm.control
)
probably means iterative GLS (IGLS) estimator is computed because
IRLS will probably iterate to convergence.
IGLS means, at each iteration, the residuals are used to estimate
the error variance-covariance matrix, and then the matrix is used
in the GLS.
The IGLS estimator is also known
as Zellner's iterative Aitken estimator, or IZEF.
Kmenta, J. and Gilbert, R. F. (1968) Small Sample Properties of Alternative Estimators of Seemingly Unrelated Regressions. J. Amer. Statist. Assoc., 63(324), 1180--1200.
uninormal
,
gew
.# Obtain some of the results of p.1199 of Kmenta and Gilbert (1968)
clist <- list("(Intercept)" = diag(2),
"capital.g" = rbind(1, 0),
"value.g" = rbind(1, 0),
"capital.w" = rbind(0, 1),
"value.w" = rbind(0, 1))
zef1 <- vglm(cbind(invest.g, invest.w) ~
capital.g + value.g + capital.w + value.w,
SUR(divisor = "sqrt"), maxit = 1,
data = gew, trace = TRUE, constraints = clist)
round(coef(zef1, matrix = TRUE), digits = 4) # ZEF
zef1@extra$ncols.X.lm
zef1@misc$divisor
zef1@misc$values.divisor
round(sqrt(diag(vcov(zef1))), digits = 4) # SEs
mle1 <- vglm(cbind(invest.g, invest.w) ~
capital.g + value.g + capital.w + value.w,
SUR(mle.normal = TRUE, divisor = "n-max"),
epsilon = 1e-11,
data = gew, trace = TRUE, constraints = clist)
round(coef(mle1, matrix = TRUE), digits = 4) # MLE
round(sqrt(diag(vcov(mle1))), digits = 4) # SEs
Run the code above in your browser using DataLab