Stata The Stata listserver
[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

Re: st: RE: RE: Bracket [ ] notation

From   n j cox <>
Subject   Re: st: RE: RE: Bracket [ ] notation
Date   Wed, 10 Aug 2005 17:14:39 +0100

-capture- gives you a way to ignore a command if it
produces an error and would otherwise stop
your program. I have to guess that is not
what you need here, but I'm less clear about
what you do need.

>>> Terra Curtis

Is there any way to tell Stata to ignore the command when at least one of the referenced entries does not exist?

Nick Cox

If the subscript on the RHS is missing (meaning not present in the dataset),
the result on the LHS will be missing too (meaning "missing").

Here the use of -by:- is just a detail and does not affect the principle.
The principle can be seen by

sysuse auto
di mpg[0]
di mpg[75]

As advised in another thread, you would surely be better off re-casting this using time-series operators.


Terra Curtis

> I am running into some problems trying to run a nonlinear regression.
> I continue to get error 480 "starting values invalid or some RHS
> variables have missing values." I think I see where my error is but
> I'm not sure how STATA deals with a reference, say 'by varname:
> data[x]' if x is out of the range of data for that varname. Here is
> my code: I have written a program to specify the nonlinear equation,
> and that is where the error is:
> program nlstk2_depreciation
> version 8.1
> if "`1'" == "?" {
> global S_1 "B3 B4 B5 drd2 dmktg2"
> global B3=1
> global B4=1
> global B5=1
> global drd2=0.15
> global dmktg2=0.15
> exit
> }
> forvalues x=10/53 {
> by coname: replace `1'=$B3+$B4*(ireal46[`x'] +
> (1-$drd2)*ireal46[`x'-1] + (1-$drd2)^2*ireal46[`x'-2] +
> (1-$drd2)^3*ireal46[`x'-3] + (1-$drd2)^4*ireal46[`x'-4] +
> (1-$drd2)^5*ireal46[`x'-5] + (1-$drd2)^6*ireal46[`x'-6] +
> (1-$drd2)^7*ireal46[`x'-7]+ (1-$drd2)^8*ireal46[`x'-8] +
> (1-$drd2)^9*ireal46[`x'-9]/$drd2) + $B5*(imktg[`x'] +
> (1-$dmktg2)*imktg[`x'-1] + (1-$dmktg2)^2*imktg[`x'-2] +
> (1-$dmktg2)^3*imktg[`x'-3] + (1-$dmktg2)^4*imktg[`x'-4] +
> (1-$dmktg2)^5*imktg[`x'-5] + (1-$dmktg2)^6*imktg[`x'-6] +
> (1-$dmktg2)^7*imktg[`x'-7] + (1-$dmktg2)^8*imktg[`x'-8] +
> (1-$dmktg2)^9*imktg[`x'-9]/$dmktg2) if `x'==year
> }
> end
> I have panel data for companies over a period of years, although each
> company has a different amount of years of data (no company has more
> than 53 years of data). If a company has 10 years of data, I want the
> regression to use all 10 years of data. If it has more than 10 years
> of data, I want it to use the most recent 10 (say, years 1990-1999),
> then use the next 10 (years 1989-1998), and so on until it gets to the
> last set of 10 years for that company. I think the logic of the
> equation I have written works out, so I'm guessing the error is coming
> from some referencing problem in the brackets...I don't quite
> understand how STATA would deal with ireal46[49] if some company
> didn't have a 49th ireal46 entry.

* For searches and help try:

© Copyright 1996–2017 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index