pgmm: Generalized Method of Moments (GMM) Estimation for Panel Data

View source: R/est_gmm.R

pgmmR Documentation

Generalized Method of Moments (GMM) Estimation for Panel Data

Description

Generalized method of moments estimation for static or dynamic models with panel data.

Usage

pgmm(
  formula,
  data,
  subset,
  na.action,
  effect = c("twoways", "individual"),
  model = c("onestep", "twosteps"),
  collapse = FALSE,
  lost.ts = NULL,
  transformation = c("d", "ld"),
  fsm = NULL,
  index = NULL,
  ...
)

## S3 method for class 'pgmm'
coef(object, ...)

## S3 method for class 'pgmm'
summary(object, robust = TRUE, time.dummies = FALSE, ...)

## S3 method for class 'summary.pgmm'
print(
  x,
  digits = max(3, getOption("digits") - 2),
  width = getOption("width"),
  ...
)

Arguments

formula

a symbolic description for the model to be estimated. The preferred interface is now to indicate a multi–part formula, the first two parts describing the covariates and the GMM instruments and, if any, the third part the 'normal' instruments,

data

a data.frame (neither factors nor character vectors will be accepted in data.frame),

subset

see lm(),

na.action

see lm(),

effect

the effects introduced in the model, one of "twoways" (the default) or "individual",

model

one of "onestep" (the default) or "twosteps",

collapse

if TRUE, the GMM instruments are collapsed (default is FALSE),

lost.ts

the number of lost time series: if NULL, this is automatically computed. Otherwise, it can be defined by the user as a numeric vector of length 1 or 2. The first element is the number of lost time series in the model in difference, the second one in the model in level. If the second element is missing, it is set to the first one minus one,

transformation

the kind of transformation to apply to the model: either "d" (the default value) for the "difference GMM" model or "ld" for the "system GMM" model,

fsm

the matrix for the one step estimator: one of "I" (identity matrix) or "G" (=D'D where D is the first–difference operator) if transformation="d", one of "GI" or "full" if transformation="ld",

index

the indexes,

...

further arguments.

object, x

an object of class "pgmm",

robust

for pgmm's summary method: if TRUE (default), robust inference is performed in the summary,

time.dummies

for pgmm's summary method: if TRUE, the estimated coefficients of time dummies are present in the table of coefficients; default is FALSE, thus time dummies are dropped in summary's coefficient table (argument is only meaningful if there are time dummies in the model, i.e., only for effect = "twoways"),

digits

digits,

width

the maximum length of the lines in the print output.

Details

pgmm estimates a model for panel data with a generalized method of moments (GMM) estimator. The description of the model to estimate is provided with a multi–part formula which is (or which is coerced to) a Formula object. The first right–hand side part describes the covariates. The second one, which is mandatory, describes the GMM instruments. The third one, which is optional, describes the 'normal' instruments. By default, all the variables of the model which are not used as GMM instruments are used as normal instruments with the same lag structure as the one specified in the model.

y~lag(y, 1:2)+lag(x1, 0:1)+lag(x2, 0:2) | lag(y, 2:99) is similar to

y~lag(y, 1:2)+lag(x1, 0:1)+lag(x2, 0:2) | lag(y, 2:99) | lag(x1, 0:1)+lag(x2, 0:2)

and indicates that all lags from 2 of y are used as GMM instruments.

transformation indicates how the model should be transformed for the estimation. "d" gives the "difference GMM" model \insertCite@see @AREL:BOND:91plm, "ld" the "system GMM" model \insertCite@see @BLUN:BOND:98plm.

pgmm is an attempt to adapt GMM estimators available within the DPD library for GAUSS \insertCite@see @AREL:BOND:98plm and Ox \insertCite@see @DOOR:AREL:BOND:12plm and within the xtabond2 library for Stata \insertCite@see @ROOD:09plm.

Value

An object of class c("pgmm","panelmodel"), which has the following elements:

coefficients

the vector (or the list for fixed effects) of coefficients,

residuals

the list of residuals for each individual,

vcov

the covariance matrix of the coefficients,

fitted.values

the vector of fitted values,

df.residual

degrees of freedom of the residuals,

model

a list containing the variables used for the estimation for each individual,

W

a list containing the instruments for each individual (a matrix per list element) (two lists in case of system GMM,

A1

the weighting matrix for the one–step estimator,

A2

the weighting matrix for the two–steps estimator,

call

the call.

In addition, it has attribute "pdim" which contains the pdim object for the model.

It has print, summary and print.summary methods.

Author(s)

Yves Croissant

References

\insertAllCited

See Also

sargan() for the Hansen–Sargan test and mtest() for Arellano–Bond's test of serial correlation. dynformula() for dynamic formulas (deprecated).

Examples


data("EmplUK", package = "plm")

## Arellano and Bond (1991), table 4 col. b 
z1 <- pgmm(log(emp) ~ lag(log(emp), 1:2) + lag(log(wage), 0:1)
           + log(capital) + lag(log(output), 0:1) | lag(log(emp), 2:99),
            data = EmplUK, effect = "twoways", model = "twosteps")
summary(z1, robust = FALSE)

## Blundell and Bond (1998) table 4 (cf. DPD for OX p. 12 col. 4)
z2 <- pgmm(log(emp) ~ lag(log(emp), 1)+ lag(log(wage), 0:1) +
           lag(log(capital), 0:1) | lag(log(emp), 2:99) +
           lag(log(wage), 2:99) + lag(log(capital), 2:99),
           data = EmplUK, effect = "twoways", model = "onestep", 
           transformation = "ld")
summary(z2, robust = TRUE)

## Not run: 
## Same with the old formula or dynformula interface
## Arellano and Bond (1991), table 4, col. b 
z1 <- pgmm(log(emp) ~ log(wage) + log(capital) + log(output),
            lag.form = list(2,1,0,1), data = EmplUK, 
            effect = "twoways", model = "twosteps",
            gmm.inst = ~log(emp), lag.gmm = list(c(2,99)))
summary(z1, robust = FALSE)

## Blundell and Bond (1998) table 4 (cf DPD for OX p. 12 col. 4)
z2 <- pgmm(dynformula(log(emp) ~ log(wage) + log(capital), list(1,1,1)), 
            data = EmplUK, effect = "twoways", model = "onestep", 
            gmm.inst = ~log(emp) + log(wage) + log(capital), 
            lag.gmm = c(2,99), transformation = "ld")
summary(z2, robust = TRUE)

## End(Not run)


plm documentation built on June 22, 2024, 6:54 p.m.