asrol - help

asrol - help

                                                                                                             version:  2.0.0

help asrol                                                                                                   21 Feb 2017

------------------------------------------------------------------------------------------------------------------------

Title

    asrol - Generates rolling-window descriptive statistics

Syntax

    asrol varlist [if] [in], stat(statistic) window([rangevar] # ) [ gen(newvar) smiss by(varlist) minimum( # ) ]

    The underlined letters signifies that users can abbreviate the full words only to the underlined letters.

Description

    asrol calculates descriptive statistics in a user's defined rolling-window. asrol efficiently handles all types of

    data structures such as data declared as time series or panel data, undeclared data, or data with duplicate

    values, missing values or data having time series gaps.

    asrol uses efficient codings in the Mata language which makes this version extremely fast as compared to other

    available programs. The speed efficiency matters more in large data sets. This version also overcomes limitation

    of th r version of asrol which could calculate statistics in a rolling window of 104. asrol can accoomodate any

    length of the rolling window.

Syntax Details

    The program has 2 required options: They are:

    1. stat: to specify required statistics. The following statistics are allowed;

        sd for standard deviation

        mean for mean

        sum for sum or total

        median for median

        count for counting number of non-missing observations in the given window

        missing for counting number of missing observations in the given window

        min for finding minimum value in the given window

        max for finding maximum value in the given window

        first for finding the first observation in the given window

        last for finding the last observation in the given window

 

    2. window: specifies length of the rolling window.  The window option accepts up to two arguments. If we have

    already declared our data as panel or time series data, asrol will automatically pick the time variable. In such

    cases, option window can have one argument, that is the length of the window, e.g., window(5). If our data is time

    series or panel, then we have to specify the time variable as first argument of the option window. For example, if

    our time variable is year and we want a rolling window of 5, then option window will look like:  window(year 5)

Optional Options

    1. gen: This is an optional option to generate new variable, where the variable name is enclosed in paranthesis

    after gen.  If we do not specify this option, arsol2 will automatically generate a new variable with the name

    format of stat_varname.

    2. smiss

    The option smiss forces asrol to omit required statistics at the start of the rolling window. Compare results of

    Example 1 below with the results of Example 3 where we use option smiss.  In Example 3, asrol finds mean starting

    with the fourth observation of each panel, i.e.  the rolling window does not start working unless it reaches the

    required level of 4 observations.

 

 

    3. minmum

    The option min forces asrol to find required statistics where the minimum number of observations are available. If

    a specific rolling window does not have that many observations, values of the new variable will be replaced with

    missing values.

 

  

    4. by( varlist )

    asrol is byable and hence the rolling statistics can be calculated using a single variable as sorting filter or

    using multiple variables. For example, we can find mean profitability for each company in a rolling window of 5

    years. Here, we use a single filter, that is company. Imagine that we have a data set of 40 countries, each one

    having 60 industries, and each industry has 1000 firms. We might be interested in finding mean profitability of

    each industry within each country in a rolling window of 5 years. In that case, we shall use the option by as

    shown below:

    asrol profitability, window(year 5) stat(mean), by(country industry)

 

Example 1: Find Rolling Mean

 

    . webuse grunfeld

 

    . asrol invest, stat(mean) win(4)

    This command calculates mean for the variable invest using a four years rolling window and stores the results in a

        new variable, mean4_invest.

 Example 2: Find Rolling Standard Deviation 

 

    . webuse grunfeld

 

    . asrol invest, stat(sd) win(6)

 

 

    This command calculates standard deviation for the variable invest using a six years rolling window and stores the

        results in a new variable , sd4_invest

   

 Example 3:  For Rolling Mean with missing values at start of each panel 

 

    . webuse grunfeld

 

    . asrol invest, stat(mean) win(4) smiss

 

    This command calculates mean for the variable invest using a four years rolling window and stores the results in a

    new variable , mean4_invest. The smiss option forces asrol to skip calculation of mean at the start of each panel,

    unless the legnth of the rolliwng window is reached.  Compare these results with the results reported in Example 1

    above. In Example 1, asrol calculates mean values right from the first observation, adds new observation to the

    rolling window untill the length of the rolling window is reached.

 

 

 Example 4:  Rolling mean with minimum number of observaton 

 

 

    . webuse grunfeld

 

    . asrol invest, stat(mean) win(4) min(3)

 

 Example 5:  Rolling mean with minimum number of observaton including the start of the panel 

 

 

    . webuse grunfeld

 

    . asrol invest, stat(mean) win(4) min(3) smiss

 

 Example 6: Using by option for two or three variables 

 

 

    We shall generate a dummy data of 5 countries, 50 industries, 50 years, and 5000 firms for further examples.

  

clear

set obs 50

gen industry=_n

gen year=_n+1917

expand 5

bys industry: gen country=_n

expand 1000

bys ind: gen company=_n

gen profit=uniform()

Mean by country and industry in a rolling window of 10 years 

 

    . asrol profit, stat(mean) win(year 10) by(country industry)

 

    NOTE: Since the data cannot be declared as panel data on the basis of country and industry, we have to specify the

        range variable in the window option.

Author

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: *

*                                                                   *

*            Dr. Attaullah Shah                                     *

*            Institute of Management Sciences, Peshawar, Pakistan   *

*            Email: attaullah.shah@imsciences.edu.pk                *

*            www.OpenDoors.Pk                                       *

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*

Also see

    rolling, mvsumm, ascol, asreg, astile

Acknowledgements

    For creating group identifiers, I could have used egen's function, group. But for speed efficiency, Nick Cox's

    solution of creating group idnetifier was preffered( See here).  For finding median in the Mata language, I used

    the approach suggested by Daniel Klein, ( See here)