R: Tidying methods for generalized method of moments "gmm"...

gmm_tidiers {broom} | R Documentation

## Tidying methods for generalized method of moments "gmm" objects

### Description

These methods tidy the coefficients of "gmm" objects from the gmm package, or glance at the model-wide statistics (especially the J-test).

### Usage

    ## S3 method for class 'gmm'
    tidy(x, conf.int = FALSE, conf.level = 0.95,
      exponentiate = FALSE, quick = FALSE, ...)

    ## S3 method for class 'gmm'
    glance(x, ...)

### Arguments

`x` | gmm object
`conf.int` | whether to include a confidence interval
`conf.level` | confidence level of the interval, used only if `conf.int=TRUE`
`exponentiate` | whether to exponentiate the coefficient estimates and confidence intervals (typical for logistic regression)
`quick` | whether to compute a smaller and faster version, containing only the `term` and `estimate` columns (and confidence interval if requested, which may be slower)
`...` | extra arguments (not used)

### Details

If `conf.int=TRUE`, the confidence interval is computed with the `confint` function.

Note that though the "gmm" object contains residuals and fitted values, there is not yet an `augment` method implemented. This is because the input to gmm is not tidy (it's a "wide" matrix), so it is not immediately clear what the augmented results should look like.

### Value

All tidying methods return a `data.frame` without rownames. The structure depends on the method chosen.

`tidy.gmm` returns one row for each coefficient, with six columns:

`term` | The term in the model being estimated
`estimate` | The estimated coefficient
`std.error` | The standard error from the linear model
`statistic` | t-statistic
`p.value` | two-sided p-value

If all the the terms have _ in them (e.g. `WMK_(Intercept)`), they are split into `variable` and `term`.

If `conf.int=TRUE`, it also includes columns for `conf.low` and `conf.high`, computed with `confint`.

`glance.gmm` returns a one-row data.frame with the columns

`df` | Degrees of freedom
`statistic` | Statistic from J-test for E(g)=0
`p.value` | P-value from J-test
`df.residual` | Residual degrees of freedom, if included in "gmm" object

### Examples

    if (require("gmm", quietly = TRUE)) {
      # examples come from the "gmm" package
      ## CAPM test with GMM
      data(Finance)
      r <- Finance[1:300, 1:10]
      rm <- Finance[1:300, "rm"]
      rf <- Finance[1:300, "rf"]

      z <- as.matrix(r-rf)
      t <- nrow(z)
      zm <- rm-rf
      h <- matrix(zm, t, 1)
      res <- gmm(z ~ zm, x = h)

      # tidy result
      tidy(res)
      tidy(res, conf.int = TRUE)
      tidy(res, conf.int = TRUE, conf.level = .99)

      # coefficient plot
      library(ggplot2)
      library(dplyr)
      tidy(res, conf.int = TRUE) %>%
        mutate(variable = reorder(variable, estimate)) %>%
        ggplot(aes(estimate, variable)) +
        geom_point() +
        geom_errorbarh(aes(xmin = conf.low, xmax = conf.high)) +
        facet_wrap(~ term) +
        geom_vline(xintercept = 0, color = "red", lty = 2)

      # from a function instead of a matrix
      g <- function(theta, x) {
      	e <- x[,2:11] - theta[1] - (x[,1] - theta[1]) %*% matrix(theta[2:11], 1, 10)
      	gmat <- cbind(e, e*c(x[,1]))
      	return(gmat) }

      x <- as.matrix(cbind(rm, r))
      res_black <- gmm(g, x = x, t0 = rep(0, 11))

      tidy(res_black)
      tidy(res_black, conf.int = TRUE)

      ## APT test with Fama-French factors and GMM

      f1 <- zm
      f2 <- Finance[1:300, "hml"] - rf
      f3 <- Finance[1:300, "smb"] - rf
      h <- cbind(f1, f2, f3)
      res2 <- gmm(z ~ f1 + f2 + f3, x = h)

      td2 <- tidy(res2, conf.int = TRUE)
      td2

      # coefficient plot
      td2 %>%
        mutate(variable = reorder(variable, estimate)) %>%
        ggplot(aes(estimate, variable)) +
        geom_point() +
        geom_errorbarh(aes(xmin = conf.low, xmax = conf.high)) +
        facet_wrap(~ term) +
        geom_vline(xintercept = 0, color = "red", lty = 2)
    }

[Package broom version 0.4.2 Index]