# pgmm

##### Generalized Method of Moments (GMM) Estimation for Panel Data

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

- Keywords
- regression

##### 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 pgmm
coef(object, ...)

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

# S3 method for 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,- 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",- 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
if

`TRUE`

, robust inference is performed in the summary,- time.dummies
if

`TRUE`

, the estimated coefficients of time dummies are present in the table of coefficients,- 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
@see @AREL:BOND:91plm, `"ld"`

the "system GMM" model
@see @BLUN:BOND:98plm.

`pgmm`

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

##### Value

An object of class `c("pgmm","panelmodel")`

, which has the
following elements:

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

the vector of residuals,

the covariance matrix of the coefficients,

the vector of fitted values,

degrees of freedom of the residuals,

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

a list containing the instruments for each individual (two lists in case of "sys--GMM"),

the weighting matrix for the one--step estimator,

the weighting matrix for the two--steps estimator,

the call.

It has print, summary and print.summary methods.

##### References

##### See Also

`sargan()`

for the Hansen--Sargan test and `mtest()`

for
Arellano--Bond's test of serial correlation. `dynformula()`

for
dynamic formulas (deprecated).

##### Examples

```
# NOT RUN {
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)
# }
# NOT RUN {
# }
```

*Documentation reproduced from package plm, version 2.2-5, License: GPL (>= 2)*