Bookmark and Share

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


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


From   Oliver Jones <[email protected]>
To   [email protected]
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
<[email protected]>  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
Faculty of Business Administration and Economics
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/


© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index