
use sharew1_rel2-6-0_gv_isced.dta, clear
// Reshape data into long format
reshape long iscedy_c, i(mergeid) j(child)
// Fix variable of interest
recode iscedy_c (-7 = .a "not yet coded (temporary)") ///
(-2 = .b "refusal") ///
(-1 = .c "don't know") ///
(95 = .d "still in school") ///
(97 = .e "other") ///
( . = .f "missing") ///
, gen(years)
label var years "Years of education"
// Israel doesn't provide a ISCED-to-years conversion, thus it's dropped here
drop if country == 25
// Fix country variable
decode country, gen(cntry)
// Calculate ICC's per country
tempname foo
postfile `foo' str100 commandline_str str20 cntry icc icclb iccub N N_groups using "C:\Windows\Temp\test.dta", replace
levelsof cntry, local(country)
foreach x of local country {
*di "`x'"
qui mixed years || mergeid: if cntry == "`x'", reml
qui estat icc
matrix groups = e(N_g)
scalar n_g = groups[1,1]
matrix cis = r(ci2)
scalar icclb = cis[1,1]
scalar iccub = cis[1,2]
post `foo' (e(cmdline)) ("`x'") (r(icc2)) (icclb) (iccub) (e(N)) (n_g)
matrix stuff1 = (r(icc2), icclb, iccub, e(N), n_g)
if "`x'" == "Austria" matrix table1 = stuff1
else matrix table1 = (table1\stuff1)
}
postclose `foo'
matrix rownames table1 = `country'
matrix colnames table1 = "ICC" "CI lower" "CI upper" "Children" "Families"
esttab matrix(table1, fmt(2 2 2 0 0))

use "C:\Windows\Temp\test.dta", clear
egen order_ = rank(-icc), unique
labmask order_, value(cntry)
twoway (rcap icc icc order_, horizontal) ///
(rspike icclb iccub order_, horizontal) ///
, ylabel(1/11, val) legend(off) ytitle("") xscale(alt) ///
xtitle("Sibling correlations in educational attainment") ///
note(" " "{it:Source:} SHARE wave 1, doi:10.6103/SHARE.w1.260", span)
erase "C:\Windows\Temp\test.dta"