systemfit( method, eqns, eqnlabels=c(as.character(1:length(eqns))),
inst=NULL, data=list(), R.restr=NULL,
q.restr=matrix(0,max(nrow(R.restr),0),1),
TX=NULL, maxiter=1, tol=1e-5,
rcovformula=1, formula3sls="GLS",
probdfsys=!(is.null(R.restr) & is.null(TX)),
single.eq.sigma=(is.null(R.restr) & is.null(TX)),
solvetol=.Machine$double.eps,
saveMemory=( nrow(data) * length(eqns) > 1000 &&
length(data) > 0 ) )
R.restr
* $b$ = q.restr
(j = number of restrictions, k = number of all parameters,
$b$ = vector of all parameters).R.restr
); default is a j x 1 matrix
that contains only zeros.systemfit
returns a list of the class systemfit
and
contains all results that belong to the whole system.
This list contains one special object: "eq". It is a list and contains
one object for each estimated equation. These objects are of the class
systemfit.equation
and contain the results that belong only to the
regarding equation. The objects of the class systemfit
and
systemfit.equation
have the following components (the elements of
the latter are marked with an asterisk ($*$)):
TX
.b
.b
.b
.b
.bt
.rcov
.k
only if there are restrictions that are not cross-equation).b
.b
.b
.b
.TX
transforms the regressor matrix ($X$) by
$X^{*} = X *$ TX
. Thus, the vector of coefficients is now
$b =$ TX
$\cdot b^{*}$ , where $b$ is the original (stacked) vector
of all coefficients and $b^{*}$ is the new coefficient vector that is
estimated instead. Thus, the elements of vector $b$ are
$b_i = \sum_j TX_{ij} \cdot b^{*}_j$
The TX
matrix can be used to change the order of the
coefficients and also to restrict coefficients (if TX
has less
columns than it has rows). However restricting coefficients
by the TX
matrix is less powerfull and flexible than the
restriction by providing the R.restr
matrix and the
q.restr
vector. The advantage of restricting the coefficients
by the TX
matrix is that the matrix that is inverted for
estimation gets smaller by this procedure, while it gets larger
if the restrictions are imposed by R.restr
and q.restr
. If iterated (WLS, SUR, W2SLS or 3SLS estimation with maxit
>1),
the convergence criterion is
$$\sqrt{ \frac{ \sum_i (b_{i,g} - b_{i,g-1})^2 }{ \sum_i b_{i,g-1}^2 }}
< \code{tol}$$
($b_{i,g}$ is the ith coefficient of the gth iteration step).
The formula to calculate the estimated covariance matrix of the residuals ($\hat{\Sigma}$) can be one of the following (see Judge et al., 1985, p. 469): if rcovformula=0: $$\hat{\sigma}_{ij} = \frac{\hat{e}_i' \hat{e}_j}{T}$$ if rcovformula=1 or rcovformula='geomean': $$\hat{\sigma}_{ij} = \frac{\hat{e}_i' \hat{e}_j} {\sqrt{(T - k_i)*(T - k_j)}}$$ if rcovformula=2 or rcovformula='Theil': $$\hat{\sigma}_{ij} = \frac{\hat{e}_i' \hat{e}_j}{T - k_i - k_j + tr[X_i(X_i'X_i)^{-1}X_i'X_j(X_j'X_j)^{-1}X_j']}$$ if rcovformula=3 or rcovformula='max': $$\hat{\sigma}_{ij} = \frac{\hat{e}_i' \hat{e}_j} {T - \max( k_i, k_j)}$$ If $i = j$, formula 1, 2 and 3 are equal. All these three formulas yield unbiased estimators for the diagonal elements of the residual covariance matrix. If $i \neq j$, only formula 2 yields an unbiased estimator for the residual covariance matrix, but it is not neccessarily positive semidefinit. Thus, it is doubtful whether formula 2 is really superior to formula 1 (Theil, 1971, p. 322).
The formulas to calculate the 3SLS estimator lead to identical results if the same instruments are used in all equations. If different instruments are used in the different equations, only the GMM-3SLS estimator ("GMM") and the 3SLS estimator proposed by Schmidt (1990) ("Schmidt") are consistent, whereas "GMM" is efficient relative to "Schmidt" (see Schmidt, 1990).
Greene, W. H. (2002) Econometric Analysis, Fifth Edition, Prentice Hall.
Judge, George G.; W. E. Griffiths; R. Carter Hill; Helmut L�tkepohl and Tsoung-Chao Lee (1985) The Theory and Practice of Econometrics, Second Edition, Wiley.
Kmenta, J. (1997) Elements of Econometrics, Second Edition, University of Michigan Publishing.
Schmidt, P. (1990) Three-Stage Least Squares with different Instruments for different equations, Journal of Econometrics 43, p. 389-394.
Theil, H. (1971) Principles of Econometrics, Wiley, New York.
lm
and nlsystemfit
library( systemfit )
data( kmenta )
demand <- q ~ p + d
supply <- q ~ p + f + a
labels <- list( "demand", "supply" )
system <- list( demand, supply )
## OLS estimation
fitols <- systemfit("OLS", system, labels, data=kmenta )
print( fitols )
## OLS estimation with 2 restrictions
Rrestr <- matrix(0,2,7)
qrestr <- matrix(0,2,1)
Rrestr[1,3] <- 1
Rrestr[1,7] <- -1
Rrestr[2,2] <- -1
Rrestr[2,5] <- 1
qrestr[2,1] <- 0.5
fitols2 <- systemfit("OLS", system, labels, data=kmenta,
R.restr=Rrestr, q.restr=qrestr )
print( fitols2 )
## iterated SUR estimation
fitsur <- systemfit("SUR", system, labels, data=kmenta, maxit=100 )
print( fitsur )
## 2SLS estimation
inst <- ~ d + f + a
fit2sls <- systemfit( "2SLS", system, labels, inst, kmenta )
print( fit2sls )
## 2SLS estimation with different instruments in each equation
inst1 <- ~ d + f
inst2 <- ~ d + f + a
instlist <- list( inst1, inst2 )
fit2sls2 <- systemfit( "2SLS", system, labels, instlist, kmenta )
print( fit2sls2 )
## 3SLS estimation with GMM-3SLS formula
inst <- ~ d + f + a
fit3sls <- systemfit( "3SLS", system, labels, inst, kmenta, formula3sls="GMM" )
print( fit3sls )
Run the code above in your browser using DataLab