data("EmplUK", package = "plm")
# Arellano/Bond 1991, Table 4, column (a1) (has robust SEs)
ab.a1 <- pgmm(log(emp) ~ lag(log(emp), 1:2) + lag(log(wage), 0:1)
+ lag(log(capital), 0:2) + lag(log(output), 0:2) | lag(log(emp), 2:99),
data = EmplUK, effect = "twoways", model = "onestep")
summary(ab.a1, robust = TRUE)
# Arellano/Bond 1991, Table 4, column (a2) (has non-robust SEs)
ab.a2 <- pgmm(log(emp) ~ lag(log(emp), 1:2) + lag(log(wage), 0:1)
+ lag(log(capital), 0:2) + lag(log(output), 0:2) | lag(log(emp), 2:99),
data = EmplUK, effect = "twoways", model = "twosteps")
summary(ab.a2, robust = FALSE)
# Arellano and Bond (1991), table 4 col. b / # Windmeijer (2005), table 2, std. errc
ab.b <- 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(ab.b, robust = FALSE) # Arellano/Bond
summary(ab.b, robust = TRUE) # Windmeijer
## Blundell and Bond (1998) table 4 (cf. DPD for OX p. 12 col. 4)
bb.4 <- 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(bb.4, robust = TRUE)
if (FALSE) {
## Same with the old formula or dynformula interface
## Arellano and Bond (1991), table 4, col. b
ab.b <- 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(ab.b, robust = FALSE)
## Blundell and Bond (1998) table 4 (cf. DPD for OX p. 12 col. 4)
bb.4 <- 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(bb.4, robust = TRUE)
}
Run the code above in your browser using DataLab