ols estimates gravity models in their traditional form via Ordinary Least Squares (ols). It does not consider Multilateral Resistance terms.

ols(dependent_variable, distance, additional_regressors = NULL,
  income_origin, income_destination, code_origin, code_destination,
  uie = FALSE, robust = FALSE, data, ...)



(Type: character) name of the dependent variable.

If uie = TRUE the dependent variable is divided by the product of unilateral incomes (e.g. income_origin and income_destination) and logged afterwards.

If uie=FALSE the dependent variable is logged directly. The transformed variable is then used as the dependent variable and the logged income variables are used as independent variables in the estimation.


(Type: character) name of the distance variable that should be taken as the key independent variable in the estimation. The distance is logged automatically when the function is executed.


(Type: character) names of the additional regressors to include in the model (e.g. a dummy variable to indicate contiguity). Unilateral metric variables such as GDPs can be added but those variables have to be logged first. Interaction terms can be added.

Write this argument as c(contiguity, common currency, ...). By default this is set to NULL.


(Type: character) origin income variable (e.g. GDP) in the dataset.


(Type: character) destination income variable (e.g. GDP) in the dataset.


(Type: character) country of origin variable (e.g. ISO-3 country codes). The variables are grouped using this parameter.


(Type: character) country of destination variable (e.g. country ISO-3 codes). The variables are grouped using this parameter.


(Type: logical) Dtermines whether the parameters are to be estimated assuming unitary income elasticities. The default value is set to FALSE.


(Type: logical) whether robust fitting should be used. By default this is set to FALSE.


(Type: data.frame) the dataset to be used.


Additional arguments to be passed to the function.


The function returns the summary of the estimated gravity model as an lm-object.


ols estimates gravity models in their traditional, additive, form via Ordinary Least Squares using the lm function. Multilateral Resistance terms are not considered by this function.

As the coefficients for the country's incomes were often found to be close to unitary and unitary income elasticities are in line with some theoretical foundations on international trade, it is sometimes assumed that the income elasticities are equal to unity.

In order to allow for the estimation with and without the assumption of unitary income elasticities, the option uie is built into ols with the default set to FALSE.

ols estimation can be used for both, cross-sectional and panel data. Nonetheless, the function is designed to be consistent with the Stata code for cross-sectional data provided at the website Gravity Equations: Workhorse, Toolkit, and Cookbook when choosing robust estimation.

The function ols was therefore tested for cross-sectional data. For the use with panel data no tests were performed. Therefore, it is up to the user to ensure that the functions can be applied to panel data.

Depending on the panel dataset and the variables - specifically the type of fixed effects - included in the model, it may easily occur that the model is not computable. Also, note that by including bilateral fixed effects such as country-pair effects, the coefficients of time-invariant observables such as distance can no longer be estimated.

Depending on the specific model, the code of the respective function may has to be changed in order to exclude the distance variable from the estimation.

At the very least, the user should take special care with respect to the meaning of the estimated coefficients and variances as well as the decision about which effects to include in the estimation. When using panel data, the parameter and variance estimation of the models may have to be changed accordingly.

For a comprehensive overview of gravity models for panel data see Egger and Pfaffermayr (2003) , Gómez-Herrera (2013) and Head et al. (2010) as well as the references therein.


For more information on gravity models, theoretical foundations and estimation methods in general see

Anderson JE (1979). “A Theoretical Foundation for the Gravity Equation.” The American Economic Review, 69(1), 106--116. ISSN 00028282.

Anderson JE, van Wincoop E (2001). “Gravity with Gravitas: A Solution to the Border Puzzle.” Technical Report 8079, National Bureau of Economic Research. doi: 10.3386/w8079 .

Anderson JE (2010). “The Gravity Model.” Technical Report 16576, National Bureau of Economic Research. doi: 10.3386/w16576 .

Baier SL, Bergstrand JH (2009). “Bonus vetus OLS: A simple method for approximating international trade-cost effects using the gravity equation.” Journal of International Economics, 77(1), 77 - 85. ISSN 0022-1996, doi: 10.1016/j.jinteco.2008.10.004 .

Baier SL, Bergstrand JH (2010). “The Gravity Model in International Trade: Advances and Applications.” In van Bergeijk PAG, Brakman S (eds.), chapter 4. Cambridge University Press. doi: 10.1017/CBO9780511762109 .

Feenstra RC (2002). “Border effects and the gravity equation: consistent methods for estimation.” Scottish Journal of Political Economy, 49(5), 491--506.

Head K, Mayer T, Ries J (2010). “The erosion of colonial trade linkages after independence.” Journal of International Economics, 81(1), 1 - 14. ISSN 0022-1996, doi: 10.1016/j.jinteco.2010.01.002 .

Head K, Mayer T (2014). “Chapter 3 - Gravity Equations: Workhorse,Toolkit, and Cookbook.” In Gopinath G, Helpman E, Rogoff K (eds.), Handbook of International Economics, volume 4 of Handbook of International Economics, 131 - 195. Elsevier. doi: 10.1016/B978-0-444-54314-1.00003-3 .

Silva JMCS, Tenreyro S (2006). “The Log of Gravity.” The Review of Economics and Statistics, 88(4), 641-658. doi: 10.1162/rest.88.4.641 .

and the citations therein.

See Gravity Equations: Workhorse, Toolkit, and Cookbook for gravity datasets and Stata code for estimating gravity models.

For estimating gravity equations using panel data see

Egger P, Pfaffermayr M (2003). “The proper panel econometric specification of the gravity equation: A three-way model with bilateral interaction effects.” Empirical Economics, 28(3), 571--580. ISSN 1435-8921, doi: 10.1007/s001810200146 .

Gómez-Herrera E (2013). “Comparing alternative methods to estimate gravity models of bilateral trade.” Empirical Economics, 44(3), 1087--1111. ISSN 1435-8921, doi: 10.1007/s00181-012-0576-2 .

and the references therein.

See also


# Example for CRAN checks: # Executable in < 5 sec library(dplyr) data("gravity_no_zeros") # Choose 5 countries for testing countries_chosen <- c("AUS", "CHN", "GBR", "BRA", "CAN") grav_small <- filter(gravity_no_zeros, iso_o %in% countries_chosen) fit <- ols( dependent_variable = "flow", distance = "distw", additional_regressors = c("rta", "contig", "comcur"), income_origin = "gdp_o", income_destination = "gdp_d", code_origin = "iso_o", code_destination = "iso_d", uie = FALSE, robust = FALSE, data = grav_small )