This trace does not add to what you know already. One alternative is to
increase the trace depth, but the program is sufficiently short that
line-by-line scrutiny pays dividends.
Your bootstrap command expects to see a scalar r(a).
This will be produced if, and only if, the local macro X contains a.
But
First, Svend pointed out that local macro X is never defined by your
program. Nor is it defined by -indeplist-. -indeplist, local- defines a
local locnames, as its help indicates. You do not address this point in
your reply.
Second, you are calling -stcox- without covariates, so I see no point in
firing up -indeplist- to find out what your covariates are. One of
those things is either wrong or irrelevant.
I don't understand exactly what your program is trying to do but it does
appear buggy.
You may also be getting confused between a and `a', which are quite
different beasts.
The variable `id' does nothing in your program. I don't know if that
matters. My guess is not.
Nick
[email protected]
Michael McCulloch
Thanks Svend. I've re-run the program preceded by
. set tracedepth 1
. set trace on
and here is what is returned, but I'm not sure how to understand the
error messages given.
********* begin command *************
. capture program drop sim_surv
. program define sim_surv, rclass
1. tempname lambda a id t
2. set obs 10 //create 10 observations
3. gen `id'=_n //Create ID numbers
4. set seed 1235 //set random number seed for reproducibility
5. gen `a'=0 + int(2*uniform()) //Generate treatment:
discrete 0/1 uniform random variable
> s
6. gen `lambda'=-2
7. gen `t'=(ln(uniform())/(`lambda'*exp(-0.8*`a'))) //
using Bender, 2005
8. stset `t'
9. stcox `t'
10. indeplist, local
11. foreach var of varlist `X' {
12. return scalar `var' = exp(_b[`var'])
13. }
14.
. end
. set seed 12358
. bootstrap a=r(a), eform reps(10): sim_surv
********* begin response *************
------------------------------------------------------------------------
------
begin bootstrap ---
- version 9, missing
- local version : di "version " string(_caller()) ", missing:"
- if _caller() < 9 {
capture syntax [anything] using [, * ]
if !c(rc) {
if _by() {
error 190
}
`version' bootstrap_8 `0'
exit
}
}
- capture _on_colon_parse `0'
= capture _on_colon_parse a=r(a), eform reps(10): sim_surv
- if c(rc) | `"`s(after)'"' == "" {
= if c(rc) | `" sim_surv"' == "" {
gettoken old : 0 , qed(qed)
if `qed' {
`version' bootstrap_8 `0'
exit
}
else if "`old'" != "" {
capture which `old'
if !c(rc) {
`version' bootstrap_8 `0'
exit
}
capture program list `old'
if !c(rc) {
`version' bootstrap_8 `0'
exit
}
}
capture syntax [, * ]
if !c(rc) {
if _caller() < 9 {
`version' bootstrap_8 `0'
exit
}
if "`e(prefix)'" != "bootstrap" {
error 301
}
`version' Display `0'
exit
}
else {
`version' bootstrap_8 `0'
exit
}
}
- preserve
- `version' BootStrap `0'
= version 9.2, missing: BootStrap a=r(a), eform reps(10): sim_surv
(running sim_surv on estimation sample)
'r(a)' evaluated to missing in full sample
------------------------------------------------------------------------
--------
end bootstrap ---
r(322);
>Michael McCulloch wrote:
>
>I've written the following do-file to simulate survival data, in the
>case of exponential distribution with one treatment variable (a) and
>no covariates. The code works when not in a program, and returns the
>specified Beta-coefficient (-0.8). May I ask for help in fine-tuning
>the program? I'm getting error message: " 'r(a)' evaluated to
>missing in full sample".
>
>clear
>capture program drop sim_surv
> program define sim_surv, rclass
> tempname lambda a id t
> set obs 10 //create 10 observations
> gen `id'=_n //Create ID numbers
> set seed 1235 //set random number seed for reproducibility
> gen `a'=0 + int(2*uniform()) //Generate treatment: discrete
>0/1 uniform random variables
> gen `lambda'=-2
> gen `t'=(ln(uniform())/(`lambda'*exp(-0.8*`a'))) // using
>Bender, 2005
> stset `t'
> stcox `t'
> indeplist, local
> foreach var of varlist `X' {
> return scalar `var' = exp(_b[`var'])
> }
>
>end
>set seed 12358
>bootstrap a=r(a), eform reps(10): sim_surv
>
>==============================================================
>
>It seems that contents of the local macro `X' is not defined within
>the program. That may explain why the code works when not in a
>program, but not in this program.
>
>To examine such problems try:
>
> set tracedepth 1
> set trace on
>
>Other advice: Tell which command in the program that gave rise to
>the error message, by copying and pasting both command and response
>to you mai..
>
>
*
* For searches and help try:
* http://www.stata.com/support/faqs/res/findit.html
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/