EstimationModel
Class
gme.EstimationModel(estimation_data: gme.EstimationData = None, lhs_var: str = None, rhs_var: List[str] = None, sector_by_sector: bool = False, drop_imp_exp: List[str] = [ ], drop_imp: List[str] = [ ], drop_exp: List[str] = [ ], keep_imp_exp: List[str] = [ ], keep_imp: List[str] = [ ], keep_exp: List[str] = [ ], drop_years: List[str] = [ ], keep_years: List[str] = [ ], drop_missing: bool = True, variables_to_drop_missing: List[str] = None, fixed_effects:List[Union[str,List[str]]] = [ ], omit_fixed_effect:List[Union[str,List[str]]] = ['exporter','exporter-year', 'year'], std_errors:str = 'HC1', iteration_limit:int = 1000, drop_intratrade:bool = False, retain_modified_data:bool = False, full_results:bool = False)
Description
The class used to specify and run an gravity estimation. A gme.EstimationData must be supplied along with a collection of largely optional arguments that specify variables to include, fixed effects to create, and how to perform the regression, among other options. After the definition of the model, additional methods such as .estimate(), which performs the PPML estimation, or .combine_sector_results(), which combines the results for each sector (if applicable) can be called.
Arguments
estimation_data: gme.EstimationData
A GME EstimationData to use as the basis of the gravity model.
spec_name: (optional) str
A name for the model.
lhs_var: str
The column name of the variable to be used as the dependent or 'left-hand-side' variable in the
regression.
rhs_var: List[str]
A list of column names for the independent or 'right-hand-side' variable(s) to be used in the
regression.
sector_by_sector: bool
If true, separate models are estimated for each sector, individually. Default is False. If True,
a sector_var_name must have been supplied to the EstimationData.
drop_imp_exp: (optional) List[str]
A list of country identifiers to be excluded from the estimation when they appear as an
importer or exporter.
drop_imp: (optional) List[str]
A list of country identifiers to be excluded from the estimation when they appear as an
importer.
drop_exp: (optional) List[str]
A list of country identifiers to be excluded from the estimation when they appear as an
exporter.
keep_imp_exp: (optional) List[str]
A list of countries to include in the estimation as either importers or exporters. All others not
specified are excluded.
keep_imp: (optional) List[str]
A list of countries to include in the estimation as importers. All others not specified are
excluded.
keep_exp: (optional) List[str]
A list of countries to include in the estimation as exporters. All others not specified are
excluded.
drop_years: (optional) list
A list of years to exclude from the estimation. The list elements should match the dtype of
the year column in the EstimationData.
keep_years: (optional) list
A list of years to include in the estimation. The list elements should match the dtype of the
year column in the EstimationData.
drop_missing: bool
If True, rows with missing values are dropped. Default is true, which drops if observations
are missing in any of the columns specified by lhs_var or rhs_var.
variables_to_drop_missing: (optional) List[str]
A list of column names for specifying which columns to check for missing values when
dropping rows.
fixed_effects: (optional) List[Union[str,List[str]]]
A list of variables to construct fixed effects based on. Can accept single string entries, which
create fixed effects corresponding to that variable or lists of strings that create fixed effects
corresponding to the interaction of the list items. For example,
fixed_effects = ['importer',['exporter','year']] would create a set of importer fixed effects
and a set of exporter-year fixed effects.
omit_fixed_effect: (optional) List[Union[str,List[str]]]
The fixed effect category from which to drop a fixed effect to avoid collinearity. The entry
should be a subset of the list supplied for fixed_effects. In each case, the last fixed effect
is dropped. If not specified, the colinearity diagnostics will identify a column to drop on its
own.
std_errors: (optional) str
Specifies the type of standard errors to be computed. Default is HC1, heteroskedascticity
robust errors. See statsmodels documentation for alternative options.
iteration_limit: (optional) int
Upper limit on the number of iterations for the estimation procedure. Default is 1000.
drop_intratrade: (optional) bool
If True, intra-national trade flows (importer == exporter) are excluded from the regression.
Default is False.
retain_modified_data: (optional) bool
If True, the estimation DataFrames for each sector after they have been (potentially) modified
during the pre-diagnostics for collinearity and convergence issues. Default is False.
WARNING: these object sizes can be very large in memory so use with caution.
full_results: bool
If True, estimate() returns the full results object from the GLM estimation. These results can
be quite large as each estimated sector's results will contain a full copy of the data used for
its estimation, vectors of predicted values, and other memory intensive pieces of data.
If False, estimate() returns a smaller subset of the results that are likely most useful (e.g.
.params, .nobs, .bse, .pvalues, .aic, .bic). For a list of these attributes, see the documentation
for the function SlimResults.
Attributes
estimation_data:
Return the EstimationData.
results_dict:
Return the dictionary of regression results (after applying estimate method).
modified_data:
Return data modified data after removing problematic columns (after applying estimate
method)
ppml_diagnostics:
Return PPML estimation diagnostic information (after applying estimate method). See
estimate.
Methods
estimate:
Estimate a PPML model. See estimate.
combine_sector_results:
Combine multiple result_dict entries into a single DataFrame. See combine_sector_results.
format_regression_table:
Format regression results into a text, csv, or LaTeX table for presentation. See
format_regression_table
Examples
# Declare an EstimationModel >>> sample_estimation_model = gme.EstimationModel(data_object = gme_data, ... lhs_var = 'trade_value', ... rhs_var = ['log_distance', ... 'agree_pta', ... 'common_language', ... 'contiguity']) # Estimate the model >>> sample_estimation_model.estimate() # Extract the results >>> results_dictionary = sample_estimation_model.results_dict # Write the estimates, p-values, and std. errors from all sectors to a .csv file. >>> sample_estimation_model.combine_sector_results("c:\\folder\\saved_results.csv") # Create and export a formatted table of estimation results >>> sample_estimation_model.format_regression_table(format = 'csv', ... path = "c:\\folder\\saved_results.csv")