View source: R/estimate_fama_macbeth.R
estimate_fama_macbeth | R Documentation |
This function estimates Fama-MacBeth regressions by first running cross-sectional regressions for each time period and then aggregating the results over time to obtain average risk premia and corresponding t-statistics.
estimate_fama_macbeth(
data,
model,
vcov = "newey-west",
vcov_options = NULL,
data_options = NULL
)
data |
A data frame containing the data for the regression. It must include a column
representing the time periods (defaults to |
model |
A formula representing the regression model to be estimated in each cross-section. |
vcov |
A character string indicating the type of standard errors to compute. Options are
|
vcov_options |
A list of additional arguments to be passed to the
|
data_options |
A named list of data_options with characters, indicating the column
names required to run this function. The required column names identify dates. Defaults to
|
A data frame with the estimated risk premiums, the number of observations, standard errors, and t-statistics for each factor in the model.
set.seed(1234)
data <- tibble::tibble(
date = rep(seq.Date(from = as.Date("2020-01-01"),
to = as.Date("2020-12-01"), by = "month"), each = 50),
permno = rep(1:50, times = 12),
ret_excess = rnorm(600, 0, 0.1),
beta = rnorm(600, 1, 0.2),
bm = rnorm(600, 0.5, 0.1),
log_mktcap = rnorm(600, 10, 1)
)
estimate_fama_macbeth(data, "ret_excess ~ beta + bm + log_mktcap")
estimate_fama_macbeth(data, "ret_excess ~ beta + bm + log_mktcap", vcov = "iid")
estimate_fama_macbeth(data, "ret_excess ~ beta + bm + log_mktcap",
vcov = "newey-west", vcov_options = list(lag = 6, prewhite = FALSE))
# Use different column name for date
data |>
dplyr::rename(month = date) |>
estimate_fama_macbeth(
"ret_excess ~ beta + bm + log_mktcap",
data_options = data_options(date = "month")
)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.