The DHS Program User Forum
Discussions regarding The DHS Program data and results
Home » Topics » Fertility » Using tfr2 to Calculate age specific marital fertility rate
Using tfr2 to Calculate age specific marital fertility rate Fri, 17 November 2017 00:31
 Michaelo Messages: 15Registered: October 2017 Member
I am using tfr2 for the first time and I find it much more flexible and user friendly for a novice stata user. Thanks Bruno
I will be most grateful if you could kindly describe how I can use tfr2 to calculate Age-Specific Marital Fertility Rate(ASFMR) Which refers to number of marital births per 1,000 married women of a specific age group. This will require the computation of Number of marital births for each age group of the married women. Similarly Age-Specific non Marital Fertility Rate(ASFMR)is expected to be calculated using the number of non-marital births in the specified age group.

By convention, I have observed from some publications that the Age-Specific Marital Fertility Rate (ASMFR) could be derived by dividing the age-specific fertility rates by the proportion of women currently married in each age group. However, I guess this may be more valid in societies where births occur mostly within marriages. How do we account for the contribution of the never married as compared to the ever married? Your help needed.
In using the tfr2, the command "by v502, sort: tfr2, awf(awfactt)" gives the TFR as per marital status, this I guess should be different from ASMFR.

Thanks
Michaelo

MO
Re: Using tfr2 to Calculate age specific marital fertility rate [message #13558 is a reply to message #13538] Sat, 18 November 2017 09:35
 Michaelo Messages: 15Registered: October 2017 Member
Dear dhs users, I observed the command
tfr2,entry(v509)
gives the marital fertility rates, but how do one get the non-marital fertility rate or the fertility rate for the never married?,
your kind response will be appreciated
Thanks

MO
Re: Using tfr2 to Calculate age specific marital fertility rate [message #13559 is a reply to message #13538] Sat, 18 November 2017 15:31
 schoumaker Messages: 65Registered: May 2013 Location: Belgium Senior Member
Hello,

For marital fertility rates, when you use

tfr2, entry(v509)

only births occuring after first marriage and exposure after first marriage are used in the computation of fertility rates. This is equal to marital fertility rates if people remain married from that time. This is usually fine at low ages, but less at higher ages, since some people are no longer in union at the time of the survey.

you could select a subsample (for instance people married or living together at the time of the survey) - that should lead to slightly higher rates.

tfr2, entry(v509), if v501==1 | v501==2

There is no direct way to compute non marital fertility rates with tfr2 - but with a simple trick you should be able to get them:

Here is what I would do:

* you create a variable dates that is equal to the date of first marriage if marriage occured, and the date of survey if the marriage has not occured. So you will only keep observtions before that date (before marriage, and until the survey if the person married).

gene dates=cond(v509!=., v509, v008)

* you create a date of entry that is equal to the date of the survey(v008) minus the number of months (36 if you want to compute rates over the last 3 years)

gene entry=v008-36

* next, you compute the rates between the start of the period (entry) and the dates variable (date of marriage or date of survey if not married).

tfr2, entry(entry) dates(dates)

I tested it in a few countries and it looks fine. But I would be glad to have your feedback.

Hope this helps.

Best,

Bruno

Bruno Schoumaker
Centre for Demographic Research
Université catholique de Louvain
Re: Using tfr2 to Calculate age specific marital fertility rate [message #13561 is a reply to message #13538] Sat, 18 November 2017 21:18
 Michaelo Messages: 15Registered: October 2017 Member
Many thanks Bruno for the prompt response.
I am using the Ghana dataset. For The marital fertility rate using, . tfr2, entry(v509), if v501==1 | v501==2 was higher than the tfr2,entry(v509) . eg using the 2008 dataset GHIR5HFL.DTA", gives 6.195775 as compared to 5.850916. Thanks so much.

However, trying the non-marital fertility rate with "GHIR5HFL.DTA", gives this error message
Maximum number of iterations exceeded.
r(498);
Besides, I observed, the period covered to have been 10 years earlier, that is 12/1995 to 11/1998 is instead of 2005-2008
I used:

gene dates=cond(v509!=., v509, v008)
gene entry=v008-36
tfr2, entry(entry) dates(dates)

This worked for the 2003 Ghana dataset but again, the period was 10 years ahead. 1990-1993, instead of 2000-2003
The output obtained was:

tfr2, entry(entry) dates(dates)
weight variable is v005
Preparing table of events and exposure for 3 year(s) preceding the survey
Period covered: 5/1990 to 4/1993
Central date is 1991.8359
Number of cases (women): 1851
Number of person-years (weighted): 3925.2241
Number of events (weighted): 80.825775

ASFRs - TFR

------------------------------------------------------------ ------------------
events | Coef. Std. Err. z P>|z| [95% Conf. Interval]
-------------+---------------------------------------------- ------------------
Rate_1519 | .0178312 .002676 6.66 0.000 .0125864 .0230761
Rate_2024 | .0328445 .0056704 5.79 0.000 .0217306 .0439583
Rate_2529 | .004697 .0041574 1.13 0.259 -.0034514 .0128454
Rate_3034 | .0071107 .0087363 0.81 0.416 -.0100121 .0242335
Rate_3539 | .024647 .0254917 0.97 0.334 -.0253158 .0746099
Rate_4044 | 2.40e-09 . . . . .
Rate_4549 | 7.74e-09 . . . . .
TFR | .4356522 .1398883 3.11 0.002 .1614763 .7098282
------------------------------------------------------------ ------------------
I would be grateful if you could kindly advise
Thanks so much
Michael

MO
Re: Using tfr2 to Calculate age specific marital fertility rate [message #13562 is a reply to message #13561] Sun, 19 November 2017 02:36
 schoumaker Messages: 65Registered: May 2013 Location: Belgium Senior Member
Thanks for your feedback,

for non-marital fertility rates:

You are right, the reported time period is not correct.

You should specify that the rates are to be estimated only if dates>entry. You will get the same rates, but the time period will be correct. I had not anticipated this use of tfr2 - and I will correct it in a further version.

tfr2 if dates>entry, entry(entry) dates(dates)

If you get the message "maximum number of iterations exceded", this is probably because there are no events in some age groups. tfr2 uses Poisson regression and will run into this kind of problems with small samples.

You could use tabexp

tabexp if dates>entry, entry(entry) dates(dates) rates

You will get the number of events, exposure, and rates in each age groups (computed by dividing events by exposure).

if you find the number of events is 0 in th upper age groups, you could restrict you analyses with tfr2 to a smaller age range (for instance 15-39).

For instance

tfr2 if dates>entry, entry(entry) dates(dates) mina(15) maxa(39)

For marital fertility rates, When you select v501==1 | v502==2, check if these categories refer to women in union.

Best,

Bruno

Bruno Schoumaker
Centre for Demographic Research
Université catholique de Louvain
Re: Using tfr2 to Calculate age specific marital fertility rate [message #13570 is a reply to message #13562] Tue, 21 November 2017 03:14
 Michaelo Messages: 15Registered: October 2017 Member

Thank you Bruno for the feedback. It has been so helpful.
Michael

MO
Re: Using tfr2 to Calculate age specific marital fertility rate [message #18047 is a reply to message #13570] Tue, 27 August 2019 08:58
 Mercysh Messages: 35Registered: April 2014 Member
Hi Bruno

Is it possible to calculate the number of cases for age specific fertility rates using tfr2?

Mercy

[Updated on: Tue, 27 August 2019 08:59]

Report message to a moderator

Re: Using tfr2 to Calculate age specific marital fertility rate [message #18048 is a reply to message #18047] Tue, 27 August 2019 13:11
 schoumaker Messages: 65Registered: May 2013 Location: Belgium Senior Member
If you use tabexp, you will get the number of births and exposure for each age group and time period.
Best,
Bruno

Bruno Schoumaker
Centre for Demographic Research
Université catholique de Louvain
Re: Using tfr2 to Calculate age specific marital fertility rate [message #18054 is a reply to message #18048] Thu, 29 August 2019 05:34
 Mercysh Messages: 35Registered: April 2014 Member
Thank you

Mercy
Re: Using tfr2 to Calculate age specific marital fertility rate [message #18151 is a reply to message #18048] Mon, 30 September 2019 04:21
 Mercysh Messages: 35Registered: April 2014 Member
Good day

I am trying to decompose ASFR for ages 15-19 years,and one of the steps is to calculate the national ASFR from proportion of adolescents aged 15-19 years and the disaggregated ASFR e.g. urban/rural (v025). Unfortunately the national ASFR I get does not add up to the national one obtained from using tfr2, the same one from the report,

I use tabexp to get cases (women) for (1) current ages 15-19 using:
tabexp if v012 <=19 & v025 ==1
tabexp if v012 <=19 & v025 ==2

and(2)including individuals currently aged 20-24 and contributed to the Person Years using:
tabexp v025, minage(15) maxage(19)

I still do not get consistent results.

Kind regards;

Mercy

Mercy
Re: Using tfr2 to Calculate age specific marital fertility rate [message #18153 is a reply to message #18151] Mon, 30 September 2019 07:26
 schoumaker Messages: 65Registered: May 2013 Location: Belgium Senior Member
Hello,
What is the name of the data file you use?
Best regards,
Bruno

Bruno Schoumaker
Centre for Demographic Research
Université catholique de Louvain
Re: Using tfr2 to Calculate age specific marital fertility rate [message #18160 is a reply to message #18153] Wed, 02 October 2019 04:57
 Mercysh Messages: 35Registered: April 2014 Member
Good day

I am using South Africa 2016 IR file.

Kind regards;

Mercy

[Updated on: Wed, 02 October 2019 05:13]

Report message to a moderator

Re: Using tfr2 to Calculate age specific marital fertility rate [message #18163 is a reply to message #18160] Wed, 02 October 2019 13:04
 schoumaker Messages: 65Registered: May 2013 Location: Belgium Senior Member
Hello,

If I understand correctly what you want to do, you should use

. tabexp v025, rates mina(15) maxa(19)
weight variable is v005
Preparing table of events and exposure for 3 year(s) preceding the survey
Period covered: 8/2013 to 7/2016
Central date is 2015.0982
Number of cases (women): 2335
Number of person-years (weighted): 4482.1265
Number of events (weighted): 318.67191

v025 period ageg events exposure centry rate se_r
urban 0 15 178.119 2852.75 2015.098 .0624375 .0046783
rural 0 15 140.553 1629.376 2015.098 .086262 .0072761

You get the adolescent fertility rate in each place of residence, and you obtain the weighted exposure and weighted number of births.

You can check that the weighted mean of the rates (exposure used as weights) is equal to the rate at the country level : 2852,75*0,0624375+1629,376*0,086262=0,0710984

. tabexp, rates mina(15) maxa(19)
weight variable is v005
Preparing table of events and exposure for 3 year(s) preceding the survey
Period covered: 8/2013 to 7/2016
Central date is 2015.0982
Number of cases (women): 2335
Number of person-years (weighted): 4482.1265
Number of events (weighted): 318.67191

period ageg events exposure centry rate se_r
0 15 318.672 4482.126 2015.098 .0710984 .0039828

*******************

In contrast, if you do

tabexp if v025==1, rates
tabexp if v025==2, rates

or

by v025, sort: tabexp, rates

the rates will be the same, but weighted events and exposure will not be the same as in the previous example, because the weights are normalized so that their sum is equal to the sample size. So, doing it separately by place of residence will not allow you to estimate the share of exposure in each place of residence. If sampling weights were all equal to 1, the two approaches would lead to the same results.

Since you mentioned you tried also the following command, I will briefly comment on this.

. tabexp if v012 <=19 & v025 ==1

Here, you are not computing events and exposure beetween 15-19, but among women aged 15-19 at the time of the survey. By default, the minimum age in tabexp and tfr2 will be 15. So, three years before the survey, you will only get events and exposure among women 15-16. So, if you want to work on a specific age group, use minage and maxage options, but do not select people on the age at the time of the survey.

Best,

Bruno

Bruno Schoumaker
Centre for Demographic Research
Université catholique de Louvain
Re: Using tfr2 to Calculate age specific marital fertility rate [message #18166 is a reply to message #18163] Thu, 03 October 2019 03:47
 Mercysh Messages: 35Registered: April 2014 Member
Thank you for the detailed response. My concerns are addressed.

Mercy
Re: Using tfr2 to Calculate age specific marital fertility rate [message #18168 is a reply to message #18166] Thu, 03 October 2019 07:39
 Mercysh Messages: 35Registered: April 2014 Member
Just to say the following gives me number of events (weighted) - 318.67 not national ASFR:

You can check that the weighted mean of the rates (exposure used as weights) is equal to the rate at the country level : 2852,75*0,0624375+1629,376*0,086262=0,0710984

Thank you

Mercy
Re: Using tfr2 to Calculate age specific marital fertility rate [message #18170 is a reply to message #18168] Thu, 03 October 2019 07:45
 schoumaker Messages: 65Registered: May 2013 Location: Belgium Senior Member
Yes, sorry, you should divide by the total exposure (2852,75+1629,376).
Best, Bruno

Bruno Schoumaker
Centre for Demographic Research
Université catholique de Louvain
Re: Using tfr2 to Calculate age specific marital fertility rate [message #18171 is a reply to message #18170] Thu, 03 October 2019 08:22
 Mercysh Messages: 35Registered: April 2014 Member
Noted, thank you.

Mercy
Re: Using tfr2 to Calculate age specific marital fertility rate [message #18197 is a reply to message #18170] Thu, 10 October 2019 11:03
 Mercysh Messages: 35Registered: April 2014 Member
Dear Bruno

A follow-up question-

How can one decompose ASFR given the following:
1. That the rate refers to mid-point of the 3 years before the survey but all the potential independent variables' reference is at the time of the survey
2. That the denominator here is the PY(exposure) not the total population -although the total cases (number of women) are available using tfr2 but I could not get the numbers disaggregated for each variable.

Your help will be much appreciated.

Kind regards;

Mercy

Mercy
Re: Using tfr2 to Calculate age specific marital fertility rate [message #27271 is a reply to message #13562] Tue, 11 July 2023 05:37
 waqas Messages: 35Registered: June 2015 Location: Islamabad, Pakistan Member
Dear Bruno!

I have used tfr2 package extensively on different rounds of Pakistan Demographic and Health Surveys (PDHS).

Tfr2 uses awfact for different subgroups. In this regards, five major variables of awfact for u/r, regions, education, wealth quintiles and total samples are constructed and provided with IR data file in DHS.

Can I have tfr2 package that accumulates only ever married women samples instead of awfact. It can help to calculated marital age specific fertility rates and marital TFRs.

Secondly, DHS report CS28 "Gora Mboup and Tulshi Saha. 1998. Fertility Levels, Trends and Differentials. DHS Comparative Studies No. 28. Calverton, Maryland: Macro International Inc." page#3 (https://www.dhsprogram.com/pubs/pdf/CS28/CS28.pdf) provides details on how MTFR can be calculated. we also need to have another filter of age 24-29 years marital duration to be incorporated in by definition.

Can you kindly help me on how can i achieve MTFRs!

Your response is import for me to understand fertility trends in Pakistan.

Thank You
Waqas Imran

Waqas Imran
Re: Using tfr2 to Calculate age specific marital fertility rate [message #27277 is a reply to message #27271] Wed, 12 July 2023 07:46
 schoumaker Messages: 65Registered: May 2013 Location: Belgium Senior Member
Hello,

Thank you for your message.

By default, tfr2 uses awfactt to compute ASFRs. However, if you want to compute marital fertility rates, awfactt should not be used.

You can simply create a new all-women factor variable that is constant and equal to 100 (as in surveys with all women), and can compute marital fertility rates among ever married women in the following way.

gene awfac_cons=100
tfr2, entry(v509) awf(awfac_cons)

the DHS report you mention refers to duration-specific marital fertility rates. Unfortunately, the Stata command tfr2 does not allow computing fertility rates by duration of mariage. I could think of including it in a revised version (but probably not very soon).

I hope this helps.

Best regards,

Bruno

Bruno Schoumaker
Centre for Demographic Research
Université catholique de Louvain
Re: Using tfr2 to Calculate age specific marital fertility rate [message #27280 is a reply to message #27277] Thu, 13 July 2023 00:38
 waqas Messages: 35Registered: June 2015 Location: Islamabad, Pakistan Member
Hi Bruno!

Thankyou for your timely response over my query.

I have executed as your suggested. There is problem with age specific rates here. None of figure matches with rates published in final report of Pakistan Demographic and Health survey 2006-07 (FR200 Table 4.3 page 44). Although TMFR deviates slightly by 0.1-0.2 births (It is 6.6 TMFR published vs 6.5 TMFR calculated from you suggested commends).

Also guide me whether should is use selection of v025==1 for urban and v025==2 for urban and rural samples respectively as below:-

tfr2 if (v025==1), entry(v509) awf(awfac_cons)
tfr2 if (v025==2), entry(v509) awf(awfac_cons)

Your expert suggestion is needed here.

Thankyou
Waqas Imran

Waqas Imran
Re: Using tfr2 to Calculate age specific marital fertility rate [message #27281 is a reply to message #27280] Thu, 13 July 2023 03:19
 schoumaker Messages: 65Registered: May 2013 Location: Belgium Senior Member
Hello,

Thank you for your useful feedback. I checked the 2006 Pakistan report to replicate the published results (FR200, Table 4.3).

Here is the code that gives exactly the same results as those published in the report.

gene awfac_cons=100 // creating an artificial all women factor
gene v509c=v509-1 // removing one month from the date of first union
tfr2, entry(v509c) awf(awfac_cons), if v501==1 // for the total
tfr2, entry(v509c) awf(awfac_cons), if v501==1 & v025==2 // in rural areas
tfr2, entry(v509c) awf(awfac_cons), if v501==1 & v025==1 // in urban areas
tfr2, entry(v509c) awf(awfac_cons), if v501==1 & v026==0 // in major city
tfr2, entry(v509c) awf(awfac_cons), if v501==1 & v025==1 & v026!=0 // in other urban

So, the differences with the previous code are that:

1. the rates are computed among currenttly married women (v501==1)
2. the date of marriage is changed to the previous month.

I need to check why in the date of first union needs to be changed for the results to match perfectly. But in this way you will be able to replicate the results, and use the same approach with more recent data to look at trends in marital fertility.

Best regards.

Bruno

Bruno Schoumaker
Centre for Demographic Research
Université catholique de Louvain
Re: Using tfr2 to Calculate age specific marital fertility rate [message #27282 is a reply to message #27281] Thu, 13 July 2023 03:57
 waqas Messages: 35Registered: June 2015 Location: Islamabad, Pakistan Member
Many thanks Bruno,

I have tried and it perfectly matches with report.

I have one more query relevant to it. What change in command will be need to restrict analysis for different number of years preceding the survey. Currently it is producing results for 3 years preceding the survey.

Regards
Waqas Imran

Waqas Imran
Re: Using tfr2 to Calculate age specific marital fertility rate [message #27284 is a reply to message #27282] Thu, 13 July 2023 04:11
 schoumaker Messages: 65Registered: May 2013 Location: Belgium Senior Member
Hello,

You can change the number of years preceding the survey with the 'length' option.

For instance

tfr2, entry(v509c) awf(awfac_cons) len(5), if v501==1 // for the total

will compute rates for the 5 years preceding the survey.

You can also use calendar years instead of years preceding the survey, with the option cy.

tfr2, entry(v509c) awf(awfac_cons) len(5) cy, if v501==1 // for the total

Best regards,

Bruno

Bruno Schoumaker
Centre for Demographic Research
Université catholique de Louvain
Re: Using tfr2 to Calculate age specific marital fertility rate [message #27285 is a reply to message #27284] Thu, 13 July 2023 04:52
 waqas Messages: 35Registered: June 2015 Location: Islamabad, Pakistan Member
Hi!

Now i can confidently move towards other surveys where it is not calculated.

Many thanks for your timely response

Regards
Waqas Imran

Waqas Imran
 Previous Topic: PDHS 2017-18: MEDIAN AGE AT FIRST BIRTH Next Topic: DSMFR Duration-specific marital fertility rates and TMFR
Goto Forum:

Current Time: Wed Jun 12 15:22:07 Coordinated Universal Time 2024