Search code examples
panelstatacorrelationpanel-datacross-correlation

Calculate within correlation in panel data long form


We have a simple panel data set in long form, which has the following structure:

i   t            x
1   Aug-2011     282
2   Aug-2011    -220
1   Sep-2011     334
2   Sep-2011     126
1   Sep-2012    -573
2   Sep-2012     305
1   Nov-2013     335
2   Nov-2013     205
3   Nov-2013     485

I would like to get the cross-correlation between each i within the time-variable t.

This would be possible by converting the data in wide format. Unfortunately, this approach is not feasible due to the big number of i and t values in the real data set.

Is it possible to do something like in this fictional command:

by (tabulate t): corr x 

Solution

  • You can easily calculate the correlations of a single variable such as x across panel groups using the reshape option of the community-contributed command pwcorrf:

    ssc install pwcorrf
    

    For illustration, consider (a slightly simplified version of) your toy example:

    clear
    
    input i t x 
    1 2011 282
    2 2011 -220
    1 2012 334
    2 2012 126
    1 2013 -573
    2 2013 305
    1 2014 335
    2 2014 205
    3 2014 485
    end
    
    xtset i t
           panel variable:  i (unbalanced)
            time variable:  t, 2011 to 2014
                    delta:  1 unit
    
    pwcorrf x, reshape
    Variable(s): x
    Panel var: i
    
    corrMatrix[3,3]
                1           2           3
    1           1           0           0
    2  -.54223207           1           0
    3           .           .           1