Xi asked the following question:
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, clear
tsset
bys 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
Problem solved!
hi,
while calculating p-value what does 2 represent? and also ttail?
(2 * ttail(_Nobs-3)
i think i got it, it two tailed t test?
Yes, that is correct.
Hi prof.
first of all, thanks for your wonderful contribution.
Is there the possibility to have the F-test in the output? I mean, first of all, the P-value of the F-test.
Thanks in advance.
Andrea
Andrea
The F-statistics is currently not available. Thanks for the suggestion. I shall consider it in the next update.
Hi Attaullah,
I am using asreg to do Fama-MacBeth regression for two subsamples, and test whether the two reg coefficients are different. I first use “est store” to store the coefficients, and then use “suest” to compare them. However, STATA reported the error as “
“.
Is this because asreg is not compatible with
suest?
In this case, is there an easy way to compare the coefficients of asreg from different samples? Thank you!Dear Professor Shah,
*I also ask the question it in the other post*
I tried the commend:
asreg EXCOMP MktRF, window(mofd 36) min(36) se
but had the error:
: 3499 ASREGW() not found.
How can I solve this error?
Besides, I want to ask if the commend applicable to the Newey-West correction? Such as:
asreg EXCOMP MktRF, window(mofd 36) min(36) newey(6)
Best regards,
Hello, I would like to estimate newey-west t-statistics using rolling regressions. As you mentioned in Statlist, asreg has the option Newey. However, when I had this option I got the following error message:
computeLagCross(): 3301 subscript invalid
newey(): – function returned error
newey_errors(): – function returned error
ASREGs1f0(): – function returned error
GetStatisticsForMissing(): – function returned error
ASREGW(): – function returned error
: – function returned error
Without the option, everything seems fine.
bys id (tid ): asreg ret mkt hml smb, window(tid 36) min(12) newey(4)