|
[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]
RE: st: troubleshooting code for simulating survival data
Thank you Nick for pointing out areas of programming I don't yet know well.
Three replies:
1. The purpose of my program is to simulate survival data. I want to
run this program with -simulate-. (My broader aim is to use these
simulated data to validate a Marginal Structural Models program which
I'm using on real data.)
2. I wanted -indeplist- because once the model with no covariates
works, I'll add them.
3. As for local macro X, that bit of code:
foreach var of varlist `X' {
return scalar `var' = exp(_b[`var'])
}
is supposed to give me the hazard ratios for independent variable(s)
of the line:
stcox a
so, how would I modify this to address the "X" issue?
Many thanks,
Michael
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/
*
* 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/