Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Quarterly GDP disaggregation to monthly levels - Gravity model estimation

    Dear Forum,

    I am currently working on a gravity model to estimate the effects on trade of an exogenous shock. In my research, I need to perform my analysis on a monthly level of detail (the period is 2016-2018). I am using the usual gravity regressors (GDP, distance, etc.). The data on trade (import and export) are already provided at a monthly level, while the data on GDP is only at a quarterly level.

    As a first test, I initially tried to transform the quarterly data to monthly through a "naive" equal distribution among the three months of each quarter (M = Q/3). I tried this by assuming that there is a small variation of GDP produced between different months. I then run a simple regression (xtreg) with FE, and I obtained as a result that the beta coefficient of the GDP is negative (e.g.: -0.155), which is obviously wrong.
    I have thus realized that this error is driven by the simplistic data disaggregation that I am using. When I tried to run the same regression at a quarterly level I have obtained the expected result (coef. = ~1 for GDP).

    I would be extremely grateful if you can suggest a different methodology to disaggregate the GDP data from quarterly to a monthly level that will produce a more reliable and correct result.

    Thank you in advance for your help.

    Best,

    Annamaria Mazzoni

  • #2
    GDP is a very slow-moving variable. In many cases, we take 5-year averages or 10-year averages to identify its effects. Even if monthly GDP estimates were to be available, I doubt how useful they would be.

    Comment


    • #3
      This can be done using mipolate (SSC) as shown here.

      Code:
      clear
      
      local v = "GDPC1" // Real GDP
      !curl -L https://fred.stlouisfed.org/series/`v'/downloaddata/`v'.csv > "`v'.csv"
      insheet using "`v'.csv", comma clear
      erase "`v'.csv"
      
      gen quarter = qofd(date(date, "YMD"))
      gen mdate = mofd(dofq(quarter)) + 1
      
      tsset mdate
      format mdate %tm
      tsfill
      sort mdate
      rename value GDP
      gen logGDP = log(GDP)
      
      mipolate logGDP mdate, gen(logGDP2) pchip
      gen iGDP = exp(logGDP2)
      
      
      twoway connected iGDP mdate if yofd(dofm(mdate)) >= 2013, ms(+)  || scatter GDP mdate if yofd(dofm(mdate)) >= 2013 , ///
      legend(order(1 "guessed" 2 "known"))  xtitle("") yla(, ang(h)) ytitle(GDP, orient(horiz))
      Attached Files

      Comment

      Working...
      X