| gmm_tidiers {broom} | R Documentation |
These methods tidy the coefficients of "gmm" objects from the gmm package, or glance at the model-wide statistics (especially the J-test).
## 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, ...)
x |
gmm object |
conf.int |
whether to include a confidence interval |
conf.level |
confidence level of the interval, used only if
|
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 |
... |
extra arguments (not used) |
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.
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 |
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)
}