Showing posts with label tsset. Show all posts
Showing posts with label tsset. Show all posts

Feb 9, 2018

Analysis of incomplete data using multiple imputation in Stata

This replicates MI Example 1 of Allison (2002, pp. 41-50) using Stata 14.

version 14
use "https://statisticalhorizons.com/wp-content/uploads/college.dta", clear

mi set mlong
mi register imputed gradrat csat private lenroll stufac rmbrd act
mi impute mvn gradrat csat private lenroll stufac rmbrd act, ///
   add(5) burnin(500) burnbetween(200) emlog emoutput ///
   saveptrace(trace, replace)

preserve
mi ptrace describe trace 
mi ptrace use trace, clear

// Generate regression coefficient
generate b = v_y2y1 / v_y2y2 
 

// Figure 5.1
twoway line b iter if inrange(iter, 1, 100), ///
       xtitle(Iteration) ytitle(b(csat)) ///
       ylabel(, format(%6.3f)) name(figure51, replace)
// Figure 5.2 tsset iter ac v_y2y1, lags(100) ciopts(color(white)) note("") name(figure52, replace) restore
// Table 5.3 eststo clear foreach i of numlist 1/5 { qui eststo: regress gradrat csat lenroll private stufac rmbrd if _mi_m == `i' } esttab, not se wide nostar noobs order(_cons) varlabel(_cons "Intercept") nomtitle
// Figure 5.3 mi estimate: regress gradrat csat lenroll private stufac rmbrd

Reference

Allison, Paul D. 2002. Missing Data. Sage. doi: 10.4135/9781412985079

Mar 18, 2013

Merging quarterly time-series data with monthly time series data

version 12
set more off
clear

// DATASET: GDP and main components - Current prices [namq_gdp_c]
// LAST UPDATE: 15.03.13 20:50:29
// EXTRACTION DATE: 18.03.13 18:04:00
// SOURCE OF DATA: Eurostat

insheet using "namq_gdp_c_1_Data.csv", comma clear names
 
// Generate country variable
kountryadd "Germany (until 1990 former territory of the FRG)" to "Germany" add
kountry geo, from(other) stuck
ren _ISO3N_ country
kountry  country, from(iso3n) to(iso2c)
ren  _ISO2C_ country_str
replace country_str = "UK" if country_str == "GB"
list country_str geo
 
// Fix GDP variable
replace value = "" if value == ":"          // Fix missing data indicator 
replace value = subinstr(value, " ", "",.)  // Remove blank (thousands separator)
destring value, replace                     // Convert to numeric

// Drop unecessary variables and clean up data set
drop s_adj unit indic_na flagandfootnotes country
order country_str geo time value
sort geo time

// Generate monthly time variable
    
   // Generate quarterly time variable first
gen current_time_point_q = quarterly(time, "YQ")
    
   // Convert to months
gen current_time_point = mofd(dofq(current_time_point_q))
format current_time_point %tm
    
   // Carry forward first monthly observation
expand 3                                      // Create 2 duplicates of each case
by geo time, s: gen counter = _n - 1          // Count duplicates,
                                              // original    = 1 - 1 = 0
                                              // duplicate 1 = 2 - 1 = 1        
                                              // duplicate 2 = 3 - 1 = 2
replace current_time_point = current_time_point + counter
drop current_time_point_q counter time
 
// Cleaning up 
ren value gdp
label var gdp "GDP per capita (quarterly)"
keep country_str current_time_point gdp
save gdp.dta, replace
 
// Open master data set and merge
use unmepl.dta, clear 
merge 1:1 country_str current_time_point using gdp.dta 
keep if _merge == 3  
 
// Create semi-ugly plot for illustration 
keep if country_str == "NL" 
label var total_unempl_nsa "Unemployment rate (monthly)" 
 
tsset  current_time_point 
twoway (tsline gdp, yaxis(1)) /// 
       (tsline total_unempl_nsa, yaxis(2)) /// 
    , legend(ring(0)) /// 
      ytitle("Euros per inhabitant", axis(1)) /// 
   ytitle("Percentage points", axis(2)) /// 
   tlabel(2004m1 (6) 2009m12, angle(45)) /// 
   ttitle("Months")