|
[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]
st: Using sts list results in do-files
There was a previous post on Statalist by James Harris about getting the results of -sts list- into a format accessible to Stata programs. I've made a small program that does just this, preliminary called st_survat. You'd call it with stset data and after generating a survival variable with stgen. It uses previous Statalist suggestions about using "stgen" but has a little logic to select the next earlier time point if the wanted time point isn't actually in the dataset. The use case is where you want to mass-produce summaries of survival-level data in a table.
It's a quickie, and I can't write Stata help files so I prefer to post it here (too many {(/*'}). If anybody wants to embellish it with help files and a -sysuse- example, I'd be happy. I may get around to it.
*This program returns the survival at a given time point
*in an r-class macro, making results like "sts list"
*accessible by a Stata program
*Requirements:
* 1) data is stset
* 2) a survival variable has been generated using stgen
program define st_survat , rclass
syntax [if], at(real) survvar(varlist min=1 max=1)
st_is 2 full
if "`if'"!="" {
local if " & `if'"
}
/* Check if we have an exact match on the time scale */
qui summ `survvar' if _t==`at' & _t<=`at' `if'
if `r(N)'==0 {
*no match, so get the next smallest match
qui summ _t if _t<=`at' `if'
local time=`r(max)'
}
else {
local time=`at'
local surv "`r(min)'"
}
/* Get the survival at the best time match */
qui summ `survvar' if _t==`time' `if'
local surv=`r(min)'
di "surv at `at' (same as `time') is `surv'"
return scalar at=`at'
return scalar t=`time'
return scalar survival=`surv'
end
Yours, Jan Brogger, postdoc University of Bergen
*
* 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/