Statalist


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

st: Code erroring out because of "no observations" - revisited


From   "Ariel Linden, DrPH" <[email protected]>
To   <[email protected]>
Subject   st: Code erroring out because of "no observations" - revisited
Date   Fri, 26 Jun 2009 16:31:40 -0700

Hi Again,

I reran the updated code (as per Howie's suggestion, see below), and it ran fine.  However, when I first dropped all individuals where union ==. the code failed at the last wave (12). Stata gave an error  r(9777); which has no help associated with it.

I think it has something with how it reads the last wave (12), because when I set the code to run only through 11 waves it works fine. Again, all help is welcome:

**** start code****

*webuse nlswork, clear

bysort idcode (year):gen wave = _n

tsset idcode wave

drop if union==.

logit  union  ln_wage age collgrad tenure hours if wave==`i'

predict ps1 if e(sample)

sum wave
local max = r(max)
forvalues i=2/`max' {
logit  union  l.ln_wage l.age l.collgrad l.tenure l.hours if wave==`i'
predict ps`i' if wave == `i'
}

egen psfinal = rowmax(ps*)

***** end code******




Date: Thu, 25 Jun 2009 16:44:26 -0400
From: Howard Lempel <[email protected]>
Subject: st: RE: Code erroring out because of  "no observations"

Hi Ariel,

In your loop, _N represents the number of total observations, not the total number of waves.  There are only 15 waves of data, so when i gets to 16, you get an error - there are no observations for which wave==16.  

I think you want to change your loop to the following:

forvalues i=2/15 {
logit  union  l.ln_wage l.age l.collgrad l.tenure l.hours if wave==`i'
predict pred`i' if wave == `i'
}

If you don't want to stick 15 in as a magic number, you could to the following:

sum wave
local max = r(max)
forvalues i=2/`max' {
logit  union  l.ln_wage l.age l.collgrad l.tenure l.hours if wave==`i'
predict pred`i' if wave == `i'
}

Hope this helps.
Howie

From: Ariel Linden, DrPH [mailto:[email protected]] 
Sent: Wednesday, June 24, 2009 2:40 PM
To: '[email protected]'
Subject: Code erroring out because of "no observations"

Hi All,

I am running some code in the nlswork file in which I use lagged values in the present period’s logit model. Since there are individuals in the file that don’t have more than one period (wave), the code errors with “no observations.”  As a result, the code cannot continue to the last line I have below which generates a variable with the max of all the waves.

I tried using “capture” but the loop never ends. 

I’d appreciate it if someone could tell me how to override the error and continue on to the next line of code? (if my poor coding could be improved as well, I’d appreciate that as well) ☺

Thanks in advance

Ariel

***** start of code**********
webuse nlswork, clear

sort idcode year
bysort idcode: egen wave = seq()

tsset idcode wave

logit union age collgrad tenure hours if wave==1

predict pred1 if e(sample)

forvalues i=2/`=_N' {
logit  union  l.ln_wage l.age l.collgrad l.tenure l.hours if wave==`i'
predict pred`i' if wave == `i'
}

egen predfinal = rowmax( pred*)

***** end of code*************



*
*   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–2024 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index