Announcement

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

  • How to Lag Variable in Three-Level Mixed Effects Model

    Dear Stata Listserv,

    I have an unusual data structure where individuals are nested in country-years, which are nested in countries. I’m using individual-level data from the World Values Survey. (Repeated cross-sectional surveys were conducted in countries around the world at various years over the period 1981 to 2014.) To create my dataset, I merged together a country-year dataset -- containing data on countries around the world at all years between 1975 and 2015 -- with an individual-level dataset containing data from the World Values Survey. There are approximately 1,000 individuals per country-year in my dataset. But note that not all country-years have individual-level data (because for most country-years, no WVS survey was conducted). My dependent variable is individual-level attitudes towards homosexuality (hjind). One of my independent variables is GDP per capita (ihmegdp1000), which is measured at the level of the country-year. I’m using Stata 15. Below, country id is represented by the variable S003. Here’s what my three-level mixed effects model looks like:

    Code:
    mixed hjind ihmegdp1000 [w=S017] || S003: || year:
    Here, individuals are nested in country-years, which are nested in countries.

    My question: how can I lag GDP per capita by one year (or more)?

    When I was working with just country-year data, I could xtset my data (using the command xtset country year) and then use the “L.” prefix to lag my time-varying variables. But Stata won’t let me xtset these data because of the data structure. (The presence of individual-level data for some country years means that there are many duplicate country-years.) Can anyone think of an alternative?

    Below, I’m pasting the first 100 or so observations in my dataset. (Note that country id is represented by two variables: S003 and cname. Only cname is available for all observations. S007_01 is the individual id for survey respondents. S017 is the survey weight. Hjind is individual-level attitudes toward homosexuality. ihmegdp1000 is GDP per capita.)

    Code:
    * Example generated by -dataex-. To install: ssc install dataex
    clear
    input double(S003 S007_01 S017) str49 cname float year str34 cname_year float(ihmegdp1000 hjind)
    .        . . "Afghanistan" 1975 "Afghanistan 1975"  .7033401 .
    .        . . "Afghanistan" 1976 "Afghanistan 1976"    .72165 .
    .        . . "Afghanistan" 1977 "Afghanistan 1977"    .67523 .
    .        . . "Afghanistan" 1978 "Afghanistan 1978"    .70717 .
    .        . . "Afghanistan" 1979 "Afghanistan 1979"    .68529 .
    .        . . "Afghanistan" 1980 "Afghanistan 1980"    .67996 .
    .        . . "Afghanistan" 1981 "Afghanistan 1981"    .74025 .
    .        . . "Afghanistan" 1982 "Afghanistan 1982"    .79604 .
    .        . . "Afghanistan" 1983 "Afghanistan 1983"      .833 .
    .        . . "Afghanistan" 1984 "Afghanistan 1984"  .8320301 .
    .        . . "Afghanistan" 1985 "Afghanistan 1985"    .82116 .
    .        . . "Afghanistan" 1986 "Afghanistan 1986"    .85157 .
    .        . . "Afghanistan" 1987 "Afghanistan 1987"     .7666 .
    .        . . "Afghanistan" 1988 "Afghanistan 1988"    .70508 .
    .        . . "Afghanistan" 1989 "Afghanistan 1989"    .65608 .
    .        . . "Afghanistan" 1990 "Afghanistan 1990"    .62829 .
    .        . . "Afghanistan" 1991 "Afghanistan 1991"    .58427 .
    .        . . "Afghanistan" 1992 "Afghanistan 1992"    .55779 .
    .        . . "Afghanistan" 1993 "Afghanistan 1993"    .42187 .
    .        . . "Afghanistan" 1994 "Afghanistan 1994"    .33727 .
    .        . . "Afghanistan" 1995 "Afghanistan 1995"    .45041 .
    .        . . "Afghanistan" 1996 "Afghanistan 1996"    .43368 .
    .        . . "Afghanistan" 1997 "Afghanistan 1997"    .44256 .
    .        . . "Afghanistan" 1998 "Afghanistan 1998"    .43002 .
    .        . . "Afghanistan" 1999 "Afghanistan 1999"    .41777 .
    .        . . "Afghanistan" 2000 "Afghanistan 2000"    .40621 .
    .        . . "Afghanistan" 2001 "Afghanistan 2001"    .38704 .
    .        . . "Afghanistan" 2002 "Afghanistan 2002"    .56914 .
    .        . . "Afghanistan" 2003 "Afghanistan 2003"    .61988 .
    .        . . "Afghanistan" 2004 "Afghanistan 2004"     .6378 .
    .        . . "Afghanistan" 2005 "Afghanistan 2005"    .70442 .
    .        . . "Afghanistan" 2006 "Afghanistan 2006"    .74301 .
    .        . . "Afghanistan" 2007 "Afghanistan 2007"    .77456 .
    .        . . "Afghanistan" 2008 "Afghanistan 2008"    .86593 .
    .        . . "Afghanistan" 2009 "Afghanistan 2009" 1.0738001 .
    .        . . "Afghanistan" 2010 "Afghanistan 2010" 1.1336601 .
    .        . . "Afghanistan" 2011 "Afghanistan 2011" 1.1772801 .
    .        . . "Afghanistan" 2012 "Afghanistan 2012"   1.22506 .
    .        . . "Afghanistan" 2013 "Afghanistan 2013"   1.26855 .
    .        . . "Afghanistan" 2014 "Afghanistan 2014"         . .
    .        . . "Afghanistan" 2015 "Afghanistan 2015"         . .
    .        . . "Albania"     1975 "Albania 1975"       3.36259 .
    .        . . "Albania"     1976 "Albania 1976"       3.41112 .
    .        . . "Albania"     1977 "Albania 1977"       3.46041 .
    .        . . "Albania"     1978 "Albania 1978"       3.51776 .
    .        . . "Albania"     1979 "Albania 1979"       3.56712 .
    .        . . "Albania"     1980 "Albania 1980"       3.62129 .
    .        . . "Albania"     1981 "Albania 1981"       3.74575 .
    .        . . "Albania"     1982 "Albania 1982"       3.77188 .
    .        . . "Albania"     1983 "Albania 1983"       3.74743 .
    .        . . "Albania"     1984 "Albania 1984"        3.6834 .
    .        . . "Albania"     1985 "Albania 1985"       3.62464 .
    .        . . "Albania"     1986 "Albania 1986"       3.74592 .
    .        . . "Albania"     1987 "Albania 1987"       3.64367 .
    .        . . "Albania"     1988 "Albania 1988"       3.51585 .
    .        . . "Albania"     1989 "Albania 1989"       3.77471 .
    .        . . "Albania"     1990 "Albania 1990"       3.39467 .
    .        . . "Albania"     1991 "Albania 1991"        2.5573 .
    .        . . "Albania"     1992 "Albania 1992"       2.45344 .
    .        . . "Albania"     1993 "Albania 1993"       2.65589 .
    .        . . "Albania"     1994 "Albania 1994"       2.88165 .
    .        . . "Albania"     1995 "Albania 1995"       3.17665 .
    .        . . "Albania"     1996 "Albania 1996"       3.47847 .
    .        . . "Albania"     1997 "Albania 1997"       3.12523 .
    8 80360847 1 "Albania"     1998 "Albania 1998"       3.52371 2
    8 80360400 1 "Albania"     1998 "Albania 1998"       3.52371 1
    8 80360338 1 "Albania"     1998 "Albania 1998"       3.52371 1
    8 80360038 1 "Albania"     1998 "Albania 1998"       3.52371 4
    8 80360669 1 "Albania"     1998 "Albania 1998"       3.52371 1
    8 80360429 1 "Albania"     1998 "Albania 1998"       3.52371 3
    8 80360613 1 "Albania"     1998 "Albania 1998"       3.52371 5
    8 80360545 1 "Albania"     1998 "Albania 1998"       3.52371 1
    8 80360779 1 "Albania"     1998 "Albania 1998"       3.52371 1
    8 80360023 1 "Albania"     1998 "Albania 1998"       3.52371 1
    8 80360221 1 "Albania"     1998 "Albania 1998"       3.52371 1
    8 80360799 1 "Albania"     1998 "Albania 1998"       3.52371 7
    8 80360584 1 "Albania"     1998 "Albania 1998"       3.52371 1
    8 80360982 1 "Albania"     1998 "Albania 1998"       3.52371 1
    8 80360441 1 "Albania"     1998 "Albania 1998"       3.52371 .
    8 80360094 1 "Albania"     1998 "Albania 1998"       3.52371 1
    8 80360167 1 "Albania"     1998 "Albania 1998"       3.52371 1
    8 80360920 1 "Albania"     1998 "Albania 1998"       3.52371 1
    8 80360106 1 "Albania"     1998 "Albania 1998"       3.52371 2
    8 80360854 1 "Albania"     1998 "Albania 1998"       3.52371 1
    8 80360728 1 "Albania"     1998 "Albania 1998"       3.52371 .
    8 80360130 1 "Albania"     1998 "Albania 1998"       3.52371 1
    8 80360850 1 "Albania"     1998 "Albania 1998"       3.52371 2
    8 80360386 1 "Albania"     1998 "Albania 1998"       3.52371 1
    8 80360358 1 "Albania"     1998 "Albania 1998"       3.52371 1
    8 80360058 1 "Albania"     1998 "Albania 1998"       3.52371 1
    8 80360388 1 "Albania"     1998 "Albania 1998"       3.52371 4
    8 80360223 1 "Albania"     1998 "Albania 1998"       3.52371 1
    8 80360926 1 "Albania"     1998 "Albania 1998"       3.52371 1
    8 80360941 1 "Albania"     1998 "Albania 1998"       3.52371 1
    8 80360398 1 "Albania"     1998 "Albania 1998"       3.52371 1
    8 80360074 1 "Albania"     1998 "Albania 1998"       3.52371 4
    8 80360294 1 "Albania"     1998 "Albania 1998"       3.52371 1
    8 80360496 1 "Albania"     1998 "Albania 1998"       3.52371 1
    8 80360888 1 "Albania"     1998 "Albania 1998"       3.52371 .
    8 80360201 1 "Albania"     1998 "Albania 1998"       3.52371 2
    end
    label values S003 S003
    label def S003 8 "Albania", modify
    label values S007_01 S007_01
    label values S017 S017
    label def S017 1 "No weighting", modify
    I’d definitely be grateful for your thoughts -- thanks.

    Louisa

  • #2
    You then need to create the lagged variable yourself. The following uses frames (Stata 16+)

    Code:
    encode cname, gen(country)
    frame put country year ihmegdp1000, into(lags)
    frame lags: contract *
    frame lags: xtset country year
    *E.g., 3 year lag
    frame lags: gen l3gdp= L3.ihmegdp1000
    frlink m:1 country year, frame(lags)
    frget l3gdp, from(lags)

    Comment


    • #3
      Thank you very much Andrew! I don't have access to Stata 16 (just Stata 15). Is there way to do this without using the frames command?

      Comment


      • #4
        Code:
        encode cname, gen(country)
        preserve
        keep country year ihmegdp1000
        contract *
        xtset country year
        *E.g., 3 year lag
        gen l3gdp= L3.ihmegdp1000
        tempfile tomerge
        save `tomerge'
        restore
        merge m:1 country year using `tomerge'
        drop _freq _merge
        ADDED IN EDIT: Is there any extra information that you obtain by having repeated country-year observations? If not,

        Code:
        contract country year
        and then use the xt operators.
        Last edited by Andrew Musau; 09 Sep 2019, 15:23.

        Comment


        • #5
          Andrew, thanks a lot!!! This one had been troubling me for a while.

          Louisa

          Comment

          Working...
          X