# Category Archives: Stata Programs

## Getting p-values and t-values with asreg

Category:Blog,Stata Programs

Xi asked the following quesiton:

How can I get p-values and t-values using asreg program?

## Introduction to asreg

asreg is a Stata program, written by Dr. Attaullah Shah. The program is available for free and can be downloaded from SSC by typing the following on the Stata command window:

`ssc install asreg`

asreg was primarily written for rolling/moving / sliding window regressions. However, with the passage of time, several useful ideas were conceived by its creator and users. Therefore, more features were added to this program.

## Getting t-values after asreg

Consider the following example where we use the grunfeld dataset from the Stata web server. The dataset has 20 companies and 20 years of data for each company. We shall estimate the following regression model where the dependent variable is invest and independent variables are mvalue and kstock. Let’s estimate the regression model separately for each company, denoted by i .

In the following lines of code, the letters se after comma causes asreg to report the standard errors for each regression coefficient.

`webuse grunfeld, cleartssetbys company: asreg invest mvalue kstock, se`

asreg generates the regression coefficients, r-squared, adjusted r-squared, number of observations (_Nobs) and standard errors for each coefficient. This is enough information for producing t-values and p-values for the regression coefficients. The t-values can be generated by:

`  gen t_values_Cons    =   _b_cons / _se_cons  gen t_values_mvalue =  _b_mvalue  /  _se_mvalue   gen t_values_kstock =  _b_kstock  /  _se_kstock `

## Getting p-values after asreg

Getting p-values is just one step away. We need one additional bit of information from the regression estimates, that is the degrees of freedom. This is usually equal to the number of observations minus the number of parameters being estimated. Since we have two independent variables and one constant, the number of parameters being estimated are 3. asreg returns the number of observation in the variable _Nobs. Therefore, the term _Nobs – 3 in the following lines of code is a way to get the degrees of freedom.

` gen p_values_Cons = (2 * ttail(_Nobs-3), abs( _b_cons / _se_cons )) gen p_values_mvalue = (2 * ttail(_Nobs-3), abs( _b_mvalue / _se_mvalue )) gen p_values_kstock = (2 * ttail(_Nobs-3), abs( _b_kstock / _se_kstock ))`

### Verify the Results

Let’s estimate a regression for the first company and compare our estimates with those produced by the Stata regress command.

` reg invest mvalue kstock if company == 1 list _b_cons  _se_cons p_values_Cons in 1`

### Full Code

` webuse grunfeld, clear tsset bys company: asreg invest mvalue kstock, se gen t_values_Cons   =   _b_cons / _se_cons  gen t_values_mvalue =  _b_mvalue  /  _se_mvalue   gen t_values_kstock =  _b_kstock  /  _se_kstock   gen p_values_Cons = (2 * ttail(_Nobs-3), abs( _b_cons / _se_cons )) gen p_values_mvalue = (2 * ttail(_Nobs-3), abs( _b_mvalue / _se_mvalue )) gen p_values_kstock = (2 * ttail(_Nobs-3), abs( _b_kstock / _se_kstock )) reg invest mvalue kstock if company == 1 list _b_cons  _se_cons t_values_Cons p_values_Cons in 1`

## Ordering variables in a nested regression table of asdoc in Stata

Category:asdoc,Blog

In this blog entry, I shall highlight one important, yet less known, feature of the option keep() in nested regression tables of asdoc. If you have not used asdoc previously, this half-page introduction will put on fast track. And for a quick start of regression tables with asdoc, you can also watch this YouTube video.

## Option keep()

There are almost a dozen options in controlling the output of a regression table in asdoc. One of them is the option keep(list of variable names). This option is primarily used for reporting coefficient of the desired variables. However, this option can also be used for changing the order of the variables in the output table. I explore these with relevant examples below.

### 1. Changing the order of variables

Suppose we want to report our regression variables in a specific order, we shall use option keep() and list the variable names in the desired order inside the brackets of option keep(). It is important to note that we have to list all variables which we want to report as omitting any variable from the list will cause asdoc to omit that variable from the output table.

### An example

Let us use the auto dataset from the system folder and estimate two regressions. As with any other Stata command, we need to add asdoc to the beginning of the command line. We shall nest these regressions in one table, hence we need to use the option nest. Also, we shall use option replace in the first regression to replace any existing output file in the current directory. Let’s say we want to variables to appear in this order in the output file _cons trunk weight turn. Therefore, the variables are listed in this order inside the keep() option. The code and output file are shown below.

`sysuse auto, clearasdoc reg mpg turn, nest  replaceasdoc reg mpg turn weight trunk, nest  keep(_cons trunk weight turn)`

### 2. Reporting only needed variables

Option keep is also used for reporting only needed variables, for example, we might not be interested in reporting coefficients of year or industry dummies. In such cases, we shall list the desired variable names inside the brackets of the keep() option. In the above example, if we wish to report only _cons trunk weight , we would just skip the variable turn from the keep option. Again, the variables will be listed in the order in which they are listed inside the keep option.

`sysuse auto, clearasdoc reg mpg turn, nest  replaceasdoc reg mpg turn weight trunk, nest  keep(_cons trunk weight)`

Off course, we could also have used option drop(turn) instead of option keep(_cons trunk weight) for dropping variable turn from the output table.

## Exporting ttest results from Stata to Word using asdoc

Category:asdoc,Blog,Stata Programs,Uncategorized

### asdoc installation

If you have not already studied the features of asdoc, you can visit this page that lists the table of contents of what asdoc can do. You can also read this one paragraph introduction to asdoc. The following line of code will install asdoc from SSC

`ssc install asdochelp asdoc`

## Reporting t-tests with asdoc

Before we make the t-test results table for our example data, let us breifly explore the options available in asdoc for making a t-test results table.

Whether it is one-sample t-test or two-sample or other forms, asdoc manages to report the results line by line for each test. asdoc also allows accumulating results from different runs of t-tests. For this purpose, the option rowappend of asdoc really comes handy. With the sub-command ttest , we can use the following options of asdoc to control asdoc behavior.

(1) replace / append

(2) save(filename)

(3) title(text)

(4) fs(#)

(5) hide.

(6) stats()

(7) rowappend.

These options are discussed in detail in Section 1 of asdoc help file. Option stats and rowappend are discussed below:

### Option stat()

Without stat() option, asdoc reports the number of observations (obs), mean, standard error, t-value, and p-value with t-tests. However, we can select all or few statistics using the stat option. The following table lists the keywords and their details for reporting the desired statistics.

 keyword details n Number of observations mean Arithmetic mean se Standard error df degrees of freedom obs Number of observations t t-value p p-value sd standard deviation dif difference in means if two-sample t-test

### Option rowappned

ttest tables can be constructed in steps by adding results of different t-tests to an existing table one by one using option rowappend. There is only one limitation that the t-tests are performed and asdoc command applied without writing any other results to the file in-between.

## An example

Suppose we have the following data set with variables r0, r1, r2, r3, and y. The data can be downloaded into Stata by

`use http://fintechprofessor.com/ttests.dta, clear`

The variables ro-r3 are the numeric variables for which we would like to conduct one-sample ttest whereas variable y is a numeric date variable that tracks years. We wish to conduct a ttest for each of the r0-r3 variables and in each year and make one table from all such tests.

### Without using a loop

` asdoc ttest R0==0 if Y==2009, replace title(One Sample t-test Results) asdoc ttest R1==0 if Y==2009, rowappend asdoc ttest R2==0 if Y==2009, rowappend asdoc ttest R3==0 if Y==2009, rowappend asdoc ttest R0==0 if Y==2010, rowappend asdoc ttest R1==0 if Y==2010, rowappend asdoc ttest R2==0 if Y==2010, rowappend asdoc ttest R3==0 if Y==2010, rowappend asdoc ttest R0==0 if Y==2011, rowappend asdoc ttest R1==0 if Y==2011, rowappend asdoc ttest R2==0 if Y==2011, rowappend asdoc ttest R3==0 if Y==2011, rowappend asdoc ttest R0==0 if Y==2012, rowappend asdoc ttest R1==0 if Y==2012, rowappend asdoc ttest R2==0 if Y==2012, rowappend asdoc ttest R3==0 if Y==2012, rowappend`

And appreciate the results

## Explanation

1.In the first line of code, we wrote asdoc ttest in the beggining of the line. This is how we use asdoc with Stata commands. We just add asdoc to the beggining of any Stata command and that’s all.

2. We used two options of asdoc in the first line of code: the replace and title(). Replace will replace any existing file with the name Myfile.doc and title will add the specific test as a title to the output file.

3. In the second line of code, we added option rowappend() that will append the results to the existing table in the file Myfile.doc

4. And the process continues untill all ttests are estimated.

## asdoc: Cutomizing the regression output | MS Word from Stata | Confidence Interval, adding stars, etc.

Category:asdoc,Blog,Uncategorized

Version 2.3 of asdoc adds the following features for reporting detailed regression tables.

1. Reporting confidence interval

2. Suppressing confidence intervals

3. Suppressing the stars which are used to show significance level

4. Customization of significance level for stars

These features are discussed in details below. If you have not already studied the features of asdoc, you can visit this page that lists the table of contents of what asdoc can do. You can also read this one paragraph introduction to asdoc. The following line of code will install this beta version of asdoc from our website

`net install asdoc, from(http://fintechprofessor.com) replacehelp asdoc`

## Details of the new features

The new features related to creating detailed regression tables with asdoc are discussed below with details.

### 1. Confidence interval

I received several emails and comments on blog posts suggesting the addition of confidence intervals (CI) to the detailed regression tables created by asdoc. In version 2.3 onwards, confidence intervals are shown by default. This means that we do not have to add an additional option to report CI. See the following example.

`sysuse auto, clearasdoc reg price mpg rep78 headroom trunk weight length turn , replace`

### 2. Suppressing the confidence interval

If confidence intervals are not needed, we can use option noci. For example

`asdoc reg price mpg rep78 headroom trunk weight length turn , replace noci`

### 3. Suppressing stars

Similarly, if we are not interested in reporting significance stars, we can use option nostars. For example,

### 4. Setting custom significance level

The default significance levels for reporting stars are set at : *** for p-values <=0.01; ** for p-values <=0 .05, and * for p-values <=0.1. However, now we can set our own levels for statistical significance using option setstars. An example of setstars option looks like:

`setstars(***@.01, **@.05, *@.1)`

As we can see from the above line, setstars separates each argument by a comma. Each argument has three components. The first component is the symbol (in our case it is *) which will be reported for the given significance elve. The second component is the @ sign that connects the significance level with the symbol. And the third component is the value at which the significance level is set. So if we want to report stars such that

`* for p-value .001 or less** for p-value .01 or less*** for p-value .05 or less`

We shall write the option setstars as

`setstars(*@.001, **@.01, ***@.05)`

Continuing with our example, let us use the above option to report our defined level of stars.

`asdoc reg price mpg rep78 headroom trunk weight length turn , replace setstars(*@.001, **@.01, ***@.05)`

## asdoc: Exporting customized descriptive statistics from Stata to MS Word / RTF

Category:asdoc,Blog

Osama Mahmood has asked :

If I want to report 25th and 75th percentiles for variables through asdoc, then how would I do that? And what if I do not want to report the Min and Max?

Answer: In this YouTube video, I have shown various methods in which descriptive statistics can be reported using asdoc. What Osama has asked for is possible with the customized descriptive statistics using the stat() option of asdoc. Using option stat(), we can choose from the following statistics. Each of the bold words in the following list represents the control word that can be used to report the required statistic.

N Number of observations
mean Arithmetic mean
sd Standard deviation
semean Stanard error of the mean
sum Sum / total
range Range
min The smallest value
max The largest value
count Counts the number of non-missing observations
var Variance
cv Coefficient of variation
skewness Skewness
kurtosis Kurtosis
iqr Interquartile range
p1 1st percentile
p5 5th percentile
p10 10th percentile
p25 25th percentile
p50 Median or the 50 percentile
p75 75th percentile
p99 99th percentile
tstat t-statistics that the given variable == 0

### Example 1: Mean, sd, 25th percentile, median, and 75th percentiles

` sysuse auto asdoc sum, stat(mean sd p25 p50 p75) replace`

### Example 2: Mean, sd, 25th percentile, median, and 75th percentiles, range, t-statistics

` asdoc sum, stat(mean sd p25 p50 p75 range tstat) replace`

## asdoc: Export matrix to MS Word | the case of xttab command in Stata

Category:asdoc,Blog

asdoc provides a variety of ways in which results from various Stata commands can be exported to MS Word or an RTF file. In this blog post,  I show how to export a Stata matrix to MS word. Usually, Stata commands leave results in r() or e() macros and sometimes in a Stata matrix. Consider the example of xttab command.  xttab is a generalization of tabulate oneway. It performs one-way tabulations and decomposes counts into between and within components in panel data. The command returns results in the r(results) matrix which we can then send to MS word.

## The syntax

asdoc follows the following syntax for exporting matrix to a word document.

asdoc wmat, matrix(matrix_name) [rnames(row names) cnames(row names) replace append other_options]

## Description

wmat is the command name – an abbreviation for writing matrix. Option matrix() is a required option to get the name of an existing matrix. Option rnames() and cnames() are optional options to specify row names and column names of the matrix. If these options are left blank, existing row and column names of the matrix are used. Other options of asdoc can also be used with wmat. For example, replace will replace an existing output file, while append will append to the existing file. fs() sets the font size, while option title() can be used to specify the title of the matrix in the output file.

An example: The case of xttab command

The dataset that we shall use is from the help file of xttab.

```webuse nlswork
xtset id year
xttab race
mat T = r(results)
asdoc wmat, mat(T) replace
```

## Explanation

1. The first line downloads the example data

2. The second line declares the data as panel data

3. The third line tabulates the race variable

4. The fourth line creates a matrix with the name T from the xttab command

5. The fifth line writes the T matrix to a Word file. wmat is a sub-command in asdoc for writing matrix data to the output file. The two words after command are options of asdoc. The first option tells asdoc about the name of the matrix that has to be exported. The second option tells asdoc to replace any existing output file.

asdoc produces the following Table.

Results Table

 value Overall:Freq Overall:Pe~t Between:Freq Between:Pe~t Within:Per~t r1 1 20180 70.723 3329 70.664 r2 2 8051 28.215 1325 28.126 r3 3 303 1.062 57 1.21 r4 3 28534 100 4711 100

## Over a grouping variable?

If we wished to do the above for each category of the grouping variable msp, that has two categories i.e., 0 and 1, we can use the if qualifier and append the results to the same file. So

```xttab race if msp == 1
mat T = r(results)
asdoc wmat, mat(T) replace title(When msp == 1)
xttab race if msp == 0
mat T = r(results)
asdoc wmat, mat(T) title(When msp == 0)```

When msp == 1

 value Overall:Freq Overall:Pe~t Between:Freq Between:Pe~t Within:Per~t r1 1 13321 77.475 2747 75.405 100 r2 2 3682 21.414 853 23.415 100 r3 3 191 1.111 43 1.18 100 r4 3 17194 100 3643 100 100

When msp == 0

 value Overall:Freq Overall:Pe~t Between:Freq Between:Pe~t Within:Per~t r1 1 6853 60.517 2046 65.724 100 r2 2 4359 38.493 1036 33.28 100 r3 3 112 .989 31 .996 100 r4 3 11324 100 3113 100 100

## asdoc: using option row for creating customized tables row by row in Stata | MS Word

Category:asdoc,Blog

## Introduction

Option row is a new feature in version 2.0 of asdoc. This feature allows building tables in pieces. That is good news for those who want to make highly customized tables from Stata output.

This feature can be considered an advanced topic and might not be good for Stata beginners. With many other Stata commands, using asdoc is exceptionally easy. You can read this concise blog post for some basic examples of using asdoc. However, if you are already familiar with Stata macros and results returned in r() and e() macros, then you should continue reading this post.

## How does option row work?

Option row allows building a table row by row from text and statistics. In each run of asdoc with option row, a row is added to the output table. The syntax for using this option is given below:

`asdoc, row(data1, data2, data3, ...)`

As shown above, we shall type nothing after the word asdoc. Therefore, all other arguments of the command come after the comma. The first required option is row(data1, data2, …). Here data1, data2, … can be either a numeric value, string, or both. Within the brackets after option row, each piece of data should be separated by the character comma and hence it will be written to a separate cell in the output table. If a cell is empty, then each comma should be accompanied by a backslash that is  “,\”

## Options

We can use the following options when using option row. dec(): for specifying the number of decimal points. If not used, the default is to use three decimal points. An example of using this option could be dec(2) for using two decimal points. title() : This will add a title to the table. This option works only when the row option is used for the first time in the creation of a table. For example, title(Descriptive Statistics). replace: this option will replace any existing file. Without option replace, the default is to append results.

save(): This will save file with the specified name. For example, save(Table 1) will save the file with the name Table 1.

## A simple example

To understand how does the option row work, let us write first the table column title and then some data. Let us create a table that has four columns. The columns are named as KP, Sindh, Baluchistan, and Punjab. We shall write the table title as Provincial GDP of Pakistan.  So the first row is the header row

``` asdoc, row(Years, KP, Sindh, Baluchistan, Punjab) title(Provincial GDP of Pakistan over years) replace
```

The above line of code generates the table title and the header row. Please note that we also included Years in the table columns because we shall report the provincial GDP over years, therefore we need one additional column for displaying the year labels in the first column. Now let us continue writing to this table. Make sure that you close the Word file before writing additional rows to it.

`asdoc, row(1999, 2500.55, 4000.35, 1000.21,  5500.74) dec(2)`

In the second line of code, we did not write replace as we wanted to append the results to the same file “MyFile.doc” and we also skipped the title option. We used option dec(2) to report two decimal points with numeric values. We can continue writing additional rows to this table.

`asdoc, row(200, 2600.25, 4500.35, 1100, 5700.87) dec(2)`

## Collecting stats with option accum

We can create a table from text and statistics that are collected from different Stata commands. There is one challenge to developing such a flexible table with option row – that a given row has to be written in one go. So once a row is written, no further cells can be appended to the same row. This means that we need to first collect all the required bits of information before writing a row. Collecting and holding these bits of information can be tricky or too time-consuming. To facilitate this process, asdoc offers option accum(data1 data2,…). The word accum is an abbreviation that I use for accumulate. The syntax of this option is given below:

`asdoc, accum(data1 data2 data3 data4 data5 ...) [ dec(#) show ]`

Actually, the above command can be run as long as the limit of the global macro to hold data is not reached. The above command will accumulate text and statistics from different runs of asdoc and hold them in the global macro \${accum}. Once we have accumulated all the needed bits of information in the global macro, then its contents can be written to the Word table with option row. Option show can be used to show the contents of the global macro \${accum}. Assume that we want to build an odd table that presents the number of observations, mean, and standard deviation for two variables in two different time periods. The researcher wants to follow the following format:

```webuse grunfeld, clear

asdoc, row( \i, \i, invest, \i, \i, kstock,\i) replace

asdoc, row( Periods, N, Mean, SD, N, Mean, SD)

sum invest if inrange(year , 1935, 1945)

asdoc, accum(`r(N)', `r(mean)', `r(sd)')

sum kstock if inrange(year , 1935, 1945)

asdoc, accum(`r(N)', `r(mean)', `r(sd)')

asdoc, row( 1935-1945, \$accum)```

## Explanation:

1. The second row of our required table reveals that a total of 7 cells are needed, this is why we created 7 cells in the first line of code. The text ” \i,” is a way of entering an empty cell. We entered empty cells so that the variables names invest and kstocks are written in the middle of the table.

2. The second line of code writes the table header row.

3. The third line finds summary statistics. We shall collect our required statistics from the macros that are left behind in r() by the sum command.

4. The fourth line accumulates the required statistics for our first variable invest

5. We are not yet writing the accumulated statistics to the Word file. So we find statistics for our second variable kstocks in the fifth line.

6. We again accumulate the needed statistics for our second variable in the sixth line.

7. Since our row of required statistics is now complete, we write the accumulated statistics and the first-row label, i.e, 1935-1945 to our Word file. Let us write one more row to the table. This time, the statistics are based on years 1946-1954

```sum invest if inrange(year , 1946, 1954)

asdoc, accum(`r(N)', `r(mean)', `r(sd)')

sum kstock if inrange(year , 1946, 1954)

asdoc, accum(`r(N)', `r(mean)', `r(sd)')

asdoc, row( 1946-1954, \$accum)```

## Dropping i.dummies from regression | asdoc | Word | Stata

Category:asdoc,Blog,Stata Programs

Questions: I have time and location dummies which I want to include in the regression, but do not want to report them in the regression nested tables created with asdoc. How can I do that?

If you have not already installed asdoc, you can install it from SSC by typing the following in the Stata command window:

ssc install asdoc

Let’s use an example data set.

`use http://fintechprofessor.com/regdata.dta, clear`

This dataset has four main independent variables, named as x1, x2, x3, x4 and a set of possible dummy variables that will be constructed from the variable year (from 2001-2005) and location (from 1-3).  Let us estimated the following regression:

```asdoc reg y x1 x2 x3 i.year i.location, nest drop(i.year i.location) replace

asdoc reg y x1 x2 x4 i.year i.location, nest drop(i.year i.location)```

### Explanations

In the above two lines, we have estimated two regressions and sent their output to a Word file.  In the first line, we estimated a regression with the three main independent variables x1, x2, and x3 and included the year and location dummies on the fly. The option nest will create a nested regression table. The option drop(i.year i.location) drops these dummy variables from the regression table, however, they are included in the main regression. The two lines produce the following regression table in MS Word.

[mc4wp_form id=”1409″]

## Stata Rolling command vs asreg for rolling regressions: Similarities and differences

Category:Stata Programs

Karina van Kuijk asked the following question:

### Question:

I need to calculate the factor sensitivity of firms to ultimately sort portfolio’s based on this factor. I have found the asreg Stata code on your website and I was wondering if this code would be useful for my purpose. However, if I compare the rolling Stata code with your aserg program on a small dataset, I won’t get the same results.

The key difference between the Stata’s official rolling command and asreg [see this blog entry for installation] is in their speeds. asreg is an order of magnitude faster than rolling.  There are other differences with respect to how these two calculate the regression components in a rolling window.  For example, rolling command will report statistics when the rolling window reaches the required length while asreg reports statistics when the number of observations is greater than the parameters being estimated. Therefore, if we have one independent variable and use a rolling window of 10 periods, rolling will report statistics from the 10th period in the dataset. However, asreg will report statistics from the 3rd observation (two parameters here, the coefficient of the independent variable and the intercept).  To make the results of asreg at par with the rolling command, let us use an example:

### Example

Let us use the grunfeld data that has 10 companies and 20 years of time series for each company. We shall use the variables invest as dependent variable and mvalue as the independent variable.  Therefore, the rolling command will look like:

```webuse grunfeld

rolling _b, window(10) saving (beta, replace): reg invest mvalue```

The results from the rolling command are reported below only for the first company

 company start end _b_cons _b_mvalue 1 1935 1944 186.5406 .0562316 1 1936 1945 196.1084 .0573704 1 1937 1946 106.4769 .0847188 1 1938 1947 53.12083 .1053145 1 1939 1948 364.5426 .0359897 1 1940 1949 372.5457 .0400371 1 1941 1950 360.8489 .04835 1 1942 1951 213.7943 .090357 1 1943 1952 119.8572 .1195415 1 1944 1953 -284.6031 .2229699 1 1945 1954 -496.6066 .2841584

To find similar results with asreg, we shall type:

`bysort company: asreg invest mvalue, wind(year 10)`

asreg generated the following results for the first company:

 company year _Nobs _R2 _adjR2 _b_cons _b_mvalue 1 1935 . . . . . 1 1936 . . . . . 1 1937 3 .98568503 .97137006 192.3812 .04135324 1 1938 4 .91957661 .87936492 129.06727 .05411168 1 1939 5 .86795099 .82393465 129.91674 .05233687 1 1940 6 .69944952 .6243119 108.59266 .06102699 1 1941 7 .54085608 .4490273 91.235677 .06942586 1 1942 8 .31250011 .19791679 182.86065 .05101677 1 1943 9 .25355654 .14692176 197.08754 .05052367 1 1944 10 .24298452 .14835759 186.54064 .05623158 1 1945 10 .20582267 .10655051 196.10839 .05737045 1 1946 10 .29515806 .20705282 106.47691 .0847188 1 1947 10 .3728928 .2945044 53.120829 .10531451 1 1948 10 .05894158 -.05869073 364.54258 .03598974 1 1949 10 .1461912 .0394651 372.54574 .04003715 1 1950 10 .18946219 .08814496 360.84887 .04834995 1 1951 10 .41646846 .34352702 213.79429 .09035704 1 1952 10 .38796888 .31146499 119.85717 .11954148 1 1953 10 .69741758 .65959478 -284.60313 .22296989 1 1954 10 .67138447 .63030752 -496.6066 .28415839

As mentioned above, asreg does not wait for the full window to get the required number of period. Therefore, results from the rolling command and asreg start to match only from the 10th observation,  i.e., the year 1944. If you like asreg to ignore observation unless the minimum number of periods are available, you can use the option min. So to match the results with the rolling command, we can type:

`bysort company: asreg invest mvalue, wind(year 10) min(9)`

and there you go, asreg produces the same coefficients as the rolling command, with blistering speed.

Please do cite asreg in your research

In-text citation

Rolling regressions were estimated using asreg, a Stata program written by Shah (2017).

Bibliography

Shah, Attaullah, (2017), ASREG: Stata module to estimate rolling window regressions. Fama-MacBeth and by(group) regressions, https://EconPapers.repec.org/RePEc:boc:bocode:s458339.

## asdoc : options and examples

Category:asdoc,Stata Programs

## Introduction

asdoc sends Stata output to Word / RTF format. asdoc creates high-quality, publication-ready tables from various Stata commands such as
summarize, correlate, pwcorr, tab1, tab2, tabulate1, tabulate2, tabstat, ttest, regress, table, amean, proportions, means, and many more.
Using asdoc is pretty easy. We need to just add asdoc as a prefix to Stata commands. asdoc has several built-in routines for dedicated
calculations and making nicely formatted tables.

## asdoc Options

How to enter asdoc options and Stata_command options?
Both the asdoc options and Stata_command specific options should be entered after comma. asdoc will parse both the option itself. For example,the following command has both types of options.

`asdoc sum, detail replace dec(3)`

option detail belongs to sum command of Stata, whereas options replace and dec(3) are asdoc options.

Following options are used for controlling the behavior of asdoc:

### 1.1 Replace / append:

We shall use option replace when an existing output file needs to be replaced. On the other hand, we shall use option append if we want to
append results to the existing file. Both the options are optional. Therefore, if none of these options are used, asdoc will first determine
whether a file with a similar name exists in the current directory. If it exists, asdoc will assume an append option. If the file does not
exist, it will create a new file with the default name “Myfile.doc”

```Example 1 : running asdoc without replace or append (first time)

sysuse auto
asdoc sum```

The above lines of code will generate a new file with the name Myfile.doc. Next, if we estimate a table of correlation, we can replace the
existing file Myfile.doc or append to it. Again, if we do not use any of these options, option append will be assumed. So;

```Example 2 : running asdoc without replace or append (second time)

asdoc cor
OR
asdoc cor, append```

Both of the above commands serve the same purpose. The file Myfile.doc will now contain a table of summary statistics, followed by a table ofcorrelations. However, had we typed the following, then the file would contain only table of correlations. asdoc cor, replace

### 1.2 rowappend:

To develop a table row by row from different runs of the asdoc, we need to use option rowappend. This option can be used with ttest, customized summary statistics, or in other instances where the table headers and structure do not change
and appendable statistics have a similar structure as those already in the table.

### 1.3 save (file_name):

Option save(file_name) is an optional option. This option is used to specify the name of the output file. If left blank, the default name will
be used, that is Myfile.doc. If .doc extension is not preferred, then option save will have to be used with the desired extension, such as
.rtf

```Example 3 : Naming the output file

asdoc sum, save(summary.doc)
OR
asdoc sum, save(summary.rtf)```

### 1.4 title(table_title)

Option title(table_title) is an optional option. This option is used to specify table title. If left blank, a default table title will be
used.

`asdoc sum, save(summary.doc) title(Descriptive statistics)`

### 1.5 Font size i.e. fs(#)

The default font size of asdoc is 10 pt. Option fs(#) can be used to change it. For example, fs(12) or fs(8), etc.

### 1.6 Decimal points i.e. dec(#)

The default decimal points in many commands are 3. In some commands, the decimal points are borrowed from the Stata output and hence they cannot be changed. In several commands, it is possible to change decimal points with option dec(#). For example, dec(2) or dec(4), etc.

### 1.7 Adding text lines to the output file i.e. text(text lines)

We can write text to our output file with option text(text lines). This is useful when we want to add details or comments with the Stata
output. In fact, this option makes asdoc really flexible in terms of adding tables and paragraph at the same time. We never have to leave the
Stata interface to add comments or interpretation with the results. One trick that we can play is to use option fs() to change font size and
mark headings and sub-headings in the document. Consider the following examples [I have copied some text from www.wikipedia.org for this example]

```1. Write a heading "Details on Cars" in our document
asdoc, text(Details on Cars) fs(16) replace```

2. Now add some text

```asdoc, text(A car is a wheeled motor vehicle used for transportation) append fs(10)
asdoc, text(Most definitions of car say they run primarily on roads, seat one ) append fs(10) asdoc, text(to eight people, have four tires, and mainly transport people.) append fs(10)```

3. Now add some statistics

```sysuse auto, clear
asdoc sum, append fs(10)```

### 1.8 Hide Stata output with option hide

We can suppress Stata output with option hide. It is important to mention that option hide might not work with some of the Stata commands (asdoc creates output from log files in some cases).

### 1.9 Getting Stata commands in output files (cmd)

If we need to report the Stata command in the output file, we can use the option cmd.

### 1.10 Abbreviate variable names with option (abb(#))

In case variable names are lengthy, they can be abbreviated in the output file with option abb(#). For example, abb(8). In many cases, the
default value is 10. However, when option label is used, this value is set to = abb + 22

### 1.11 Report variable labels with option (label)

Several commands allow reporting variable labels instead of variable names. For example, the most commonly used commands for reporting statistics are correlate and summarize. Both of these commands allow option label. For example :

```asdoc cor, label
asdoc sum, label```

### 1.12 Always report equal decimal points (tzok)

The default for report decimal points is to drop trailing zeros and report only valid decimal points. However, we can use the option tzok
i.e. trailing zeros OK, to report equal decimal points for all values even if the trailing values are zero. Therefore, using option
dec(4) for reporting 4 decimal points, the value 2.1 will be reported as follows with and without option tzok.

Default style 2.1
with tzok option 2.1000