Как получить численность населения вместо человеко-лет при использовании stsplit и strate в Stata?

Как получить количество человек в группе вместо человеко-лет при использовании стратегии в Stata?

Используя когортные данные, я создал набор данных о выживании в Stata следующим образом:

stset end, id(person) failure(event==1) scale(365.25) enter(time start) origin(time dob)
            
stsplit ageband, at(0 (1) 5) after(time=dob) 
stsplit year, after(time=mdy(1,1,1960)) at(40 (1) 45) 
replace year = 1960 + year
            
strate ageband year sex, per(100000) output("rates.dta", replace) 

где каждый person рождается dob, поступает в исследование start числа и покидает его end числа. Если в этот период у person есть event (event == 1), то они уходят в день события.

stset создает данные выживания. stsplit набор данных разбивается на возрастные группы (0–5 лет) и календарный год (2000–2005).

strate вычисляет ставки по каждому отдельному значению ageband year sex и сохраняет сводные данные в Rates.dta. Эти сводные результаты показывают, что для каждой комбинации ageband year sex: _D для количества событий и _Y для человеко-лет, которые будут соответственно числителем и знаменателем при расчете коэффициентов.

Я хочу рассчитать долю событий _D от общего количества людей в каждой группе.

Есть ли способ, чтобы _Y было общим количеством людей в этой группе, например. возрастная группа = 0, год = 2000, пол = 1?

Как еще я могу получить количество человек в группе?


person FullMetalScientist    schedule 13.05.2021    source источник


Ответы (1)


Мое решение:

* ADD before stset to get total number of people in the dataset
egen tag = tag(person)
egen N_total = total(tag)
drop tag

stset end, id(person) failure(event==1) scale(365.25) enter(time start) origin(time dob)
            
stsplit ageband, at(0 (1) 5) after(time=dob) 
stsplit year, after(time=mdy(1,1,1960)) at(40 (1) 45) 
replace year = 1960 + year

* ADD for each variable / group that you want to find the number of people in
egen tag = tag(person ageband)
egen N_ageband = total(tag), by(ageband)
drop tag

egen tag = tag(person year)
egen N_year = total(tag), by(year)
drop tag

egen tag = tag(person sex)
egen N_sex = total(tag), by(sex)
drop tag

* KEEP variables of interest
keep person event ageband year sex N_total N_ageband N_year N_sex

collapse (mean) N_total N_ageband N_year N_sex, by(ageband sex year person) 
            
* SAVE
save "proportions.dta", replace


strate ageband year sex, per(100000) output("rates.dta", replace) 

Затем позже для каждой группы (всего, возрастной группы, года, пола) объедините файл rates.dta с файлом proportions.dta:

foreach var in total ageband year sex {
    use "rates.dta", clear
    merge m:1 person sex ageband year using "proportions.dta", keep(match) nogen
    if `var'==total collapse (sum) _D N_`var'
    else collapse (sum) _D N_`var', by(`var')

    * do any other processing with the results

    save "proportions_by_`var'.dta", replace
}
person FullMetalScientist    schedule 19.05.2021