Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.

# Re: st: plotting a regression function with time-dummies indicating structural breaks

 From Oliver Jones To statalist@hsphsun2.harvard.edu Subject Re: st: plotting a regression function with time-dummies indicating structural breaks Date Tue, 03 May 2011 11:53:13 +0200

```Hi Nick,
here is some example I just made up, that shows what I mean by "range problem"

************* begin example ****************
clear
set obs 20

gen int TIME = _n + 1990

* create dummies
gen byte d1 = 0
replace d1 = 1 if TIME > 1995
gen byte d2 = 0
replace d2 = 1 if TIME > 2005

tsset TIME

* set coefficients
scalar b_0 = 100
scalar b_1 = 2
scalar b_2 = 10000
scalar b_3 = -5
scalar b_4 = 20

* generate the time series
set seed 1
gen u = rnormal(0,2)
gen y = b_0 + b_1*TIME + b_2*d1 + b_3*d1*TIME + b_4*d2 + u

tw ///
(tsline y) ///
(function y = b_0 + b_1*x + b_2*d1 + b_3*d1*x + b_4*d2, ///
range(1991 2010)), ///
legend(order(1 "tsline" 2 "function"))

************* end example ****************

I hope the resulting plot shows what I mean.

Best
Oliver

Am 03.05.2011 11:29, schrieb Nick Cox:
```
```This is presumably a family of four curves given by a range on TIME_t
and Dummy_1 = 0, 1 and Dummy_2 = 0,1.

-twoway function- will take care of TIME_t = x but it is completely
dumb about the dummies. My guess is that it will use Dummy_1[1] and
Dummy_2[1] and give you just one of the four depending on values in
the first observation.

You will need to call -function- four times, but you don't need to
type the code four times.

Something like this:

forval a = 0/1 {
forval b = 0/1 {
local fcall `fcall' (function y = b_0 + b_1*x + `a'*(b_2 +
b_3*x) + b_4*`b', ///
range(TIME_t))
}
}

twoway (tsline y) `fcall' , legend(order(2 "0 0" 3 "0 1" 4 "1 0" 5 "1 1"))

I am assuming that this is generic code or that you have scalars b_0 .. b_4.

By the way, the -generate- line is irrelevant. -twoway function- works
with a generic x.

On Tue, May 3, 2011 at 10:10 AM, Oliver Jones
<ojones@wiwi.uni-bielefeld.de>  wrote:

```
```I wonder if there is an easy way to plot a regression of the form:

y_t = b_0 + b_1*TIME_t + Dummy_1*(b_2 + b_3*TIME_t) + b_4*Dummy_2

So far I tried:
gen x = TIME_t
twoway ///
(tsline y) ///
(function y = b_0 + b_1*x + Dummy_1*(b_2 + b_3*x) + b_4*Dummy_2, ///
range(`first_year' `last_year'))

I seem to have a problem with the range, because the resulting graph just
covers one third of the graph. But the shape seems to look ok, just
compressed.

Hopefully there is a nice way of plotting such stuff without the -function-
command or some one has a hint regarding the range problem.
```
```
*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/
```
```
--
Universität Bielefeld
Fakultät für Wirtschaftswissenschaften
Lehrstuhl für Ökonometrie und Statistik
- -
Bielefeld University
Chair of Econometrics and Statistics
- -
Raum / room:  V9-110
Tel / phone:  +49 (0)521 106 4871
---
*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/
```