Hello all,
I would like to find out if i have to do a robustness test for my ols regressions because of the existence of heteroskedasticity. For this I have some understanding questions first before I have a question regarding the commands.
My dataset is like this:
fy | firmid | earning | dvpsx_f |prior_dividend | deltadividend
1 | 5 | .66 .48 .48 1.07e-08
1 | 5 | 1 .48 .48 1.07e-08
1 | 5 | 1.38 .48 .48 1.07e-08
1 | 5 | 1.29 .33 .48 -.15
1 | 5 | 1.51 .34 .33 .01
1 | 5 | 1.3 .34 .34 -3.58e-09
1 | 6 | .69 .34 .34 -3.58e-09
1 | 6 | -2.08 .16 .34 -.18
1 | 6 | -.39 .025 .16 -.135
2 | 5 | .11 0 .025 -.025
2 | 5 | 2.04 0 0 0
2 | 5 | 2.12 0 0 0
2 | 5 | 1.17 0 0 0
2 | 6 | 1.85 .075 0 .075
2 | 6 | 1.68 .3 .075 .225
3 | 8 | 1.38 .3 .3 -1.19e-08
3 | 8 | 1.85 .3 .3 -1.19e-08
3 | 9 | -1.4 .3 .3 -1.19e-08
I have a regression in a loop and want to do a cross-section analysis of the firms for each fy (subperiod).
So I test my regressions for homoskedasticity with the breusch-pagan test and the white test after i did my loop regression.
Is this even correct to do the tests for my whole dataset with all 3 fy as one or should i do it for each fy?
For the understanding for myself: The Breusch-pagan test in my case is with 0.7663 larger than the p value of 0.05 which means that my regression is homoskedasticity. This is then supported by white's test (0.8417>0.05 fail to reject null hypothesis), am I interpreting this correctly?
Also can it happen that with these two tests that only one null hypothesis is rejected and the other not, so that one test would have homoskedasticity and the other one heteroskedasticity? what would be the next step here then?
Let's assume I have a value of less than 0.05 in the breusch-pagan test and in the white's test for another regression in my research, then I would have to check my regression for robust standard error, am i right?
I had previously set up my command for normal regression analysis like this:
With this code i get a table with the standard deviation as one of the value.
Subperiod 1984-2002 (N=743)
------------------------------------------------------------------------------------------------
| Average Standard Deviation 25th Percentile Median 75th Percentile
--------------------+---------------------------------------------------------------------------
Constant | 0.199** 1.092** 0.000** 0.025 0.185**
Speed of adjustment | 0.389* 0.371* 0.063* 0.324 0.637*
Target Payout | 0.096* 1.643* 0.000* 0.071 0.242*
Adjusted R² | 0.324 0.265 0.108 0.294 0.497
------------------------------------------------------------------------------------------------
*** p<.01, ** p<.05, * p<.1
Now if i want to do a robust regression , how do i rewrite it? For the robust regression i use the vce(robust) in the loop (correct?), but how do i extract the robust standard error and list it in the end as robust standard deviation? I had tried _rse (for robust standard error) but i just get the message "_rse not found"? What do I have to use there to get "robust standard deviation" in my table instead of "standard deviation"?
I hope someone can enlighten me about this.
Thanks for the help.
I would like to find out if i have to do a robustness test for my ols regressions because of the existence of heteroskedasticity. For this I have some understanding questions first before I have a question regarding the commands.
My dataset is like this:
fy | firmid | earning | dvpsx_f |prior_dividend | deltadividend
1 | 5 | .66 .48 .48 1.07e-08
1 | 5 | 1 .48 .48 1.07e-08
1 | 5 | 1.38 .48 .48 1.07e-08
1 | 5 | 1.29 .33 .48 -.15
1 | 5 | 1.51 .34 .33 .01
1 | 5 | 1.3 .34 .34 -3.58e-09
1 | 6 | .69 .34 .34 -3.58e-09
1 | 6 | -2.08 .16 .34 -.18
1 | 6 | -.39 .025 .16 -.135
2 | 5 | .11 0 .025 -.025
2 | 5 | 2.04 0 0 0
2 | 5 | 2.12 0 0 0
2 | 5 | 1.17 0 0 0
2 | 6 | 1.85 .075 0 .075
2 | 6 | 1.68 .3 .075 .225
3 | 8 | 1.38 .3 .3 -1.19e-08
3 | 8 | 1.85 .3 .3 -1.19e-08
3 | 9 | -1.4 .3 .3 -1.19e-08
I have a regression in a loop and want to do a cross-section analysis of the firms for each fy (subperiod).
So I test my regressions for homoskedasticity with the breusch-pagan test and the white test after i did my loop regression.
Code:
egen newid = group(firmid), sum newid, d return list local max=r(max) forvalues id = 1/`max' { forvalues p = 1/2 { capture noisily regress deltadividend prior_dividend earning if newid ==`id' & fy == `p' } } . hettest Breusch–Pagan/Cook–Weisberg test for heteroskedasticity Assumption: Normal error terms Variable: Fitted values of deltadividend H0: Constant variance chi2(1) = 0.09 Prob > chi2 = 0.7663 . imtest, white White's test H0: Homoskedasticity Ha: Unrestricted heteroskedasticity chi2(5) = 2.05 Prob > chi2 = 0.8417
For the understanding for myself: The Breusch-pagan test in my case is with 0.7663 larger than the p value of 0.05 which means that my regression is homoskedasticity. This is then supported by white's test (0.8417>0.05 fail to reject null hypothesis), am I interpreting this correctly?
Also can it happen that with these two tests that only one null hypothesis is rejected and the other not, so that one test would have homoskedasticity and the other one heteroskedasticity? what would be the next step here then?
Let's assume I have a value of less than 0.05 in the breusch-pagan test and in the white's test for another regression in my research, then I would have to check my regression for robust standard error, am i right?
I had previously set up my command for normal regression analysis like this:
Code:
statsby _b _se SOA = (-(_b[prior_dividend])) TP = (-((_b[earning])/(_b[ prior_dividend]))) adj_r_squared = e(r2_a), by(newid fy) clear : regress deltadividend prior_dividend earning list, sep(0) rename _eq2_TP Target_Payout rename _eq2_SOA Speed_of_adjustment rename _eq2_adj_r_squared Adj_R_squared rename _b_cons Constant replace Target_Payout = 0 if Target_Payout == . replace Speed_of_adjustment = 0 if Speed_of_adjustment == . //Summarize summarize Constant Speed_of_adjustment Target_Payout Adj_R_squared if fy==1, detail summarize Constant Speed_of_adjustment Target_Payout Adj_R_squared if fy==2, detail collect dims collect clear foreach i in Constant Speed_of_adjustment Target_Payout Adj_R_squared { collect: summarize `i' if fy == 1 , detail } collect title Subperiod 1984-2002 (N=743) collect label values result mean "Average" sd "Standard Deviation" p25 "25th Percentile" p50 "Median" p75 "75th Percentile", modify collect style column, extraspace(1) collect label levels cmdset 1 "Constant" 2 "Speed of adjustment" 3 "Target Payout" 4 "Adjusted R²" , modify collect style cell result[mean sd p25 p50 p75], nformat(%9.3f) collect stars mean p25 p50 p75 sd 0.01 "***" 0.05 "**" 0.1 "*", attach(mean median p25 p75 sd) nformat(%9.7g) shownote collect layout (cmdset) (result[mean sd p25 p50 p75]) (), name(default)
Subperiod 1984-2002 (N=743)
------------------------------------------------------------------------------------------------
| Average Standard Deviation 25th Percentile Median 75th Percentile
--------------------+---------------------------------------------------------------------------
Constant | 0.199** 1.092** 0.000** 0.025 0.185**
Speed of adjustment | 0.389* 0.371* 0.063* 0.324 0.637*
Target Payout | 0.096* 1.643* 0.000* 0.071 0.242*
Adjusted R² | 0.324 0.265 0.108 0.294 0.497
------------------------------------------------------------------------------------------------
*** p<.01, ** p<.05, * p<.1
Now if i want to do a robust regression , how do i rewrite it? For the robust regression i use the vce(robust) in the loop (correct?), but how do i extract the robust standard error and list it in the end as robust standard deviation? I had tried _rse (for robust standard error) but i just get the message "_rse not found"? What do I have to use there to get "robust standard deviation" in my table instead of "standard deviation"?
I hope someone can enlighten me about this.
Thanks for the help.
Comment