fractional retire rate = f(time since hire)

Use this forum to post Vensim related questions.
Post Reply
paulnewton
Junior Member
Posts: 13
Joined: Tue Sep 11, 2007 4:23 am

fractional retire rate = f(time since hire)

Post by paulnewton »

Problem: a predictive model of workforce dynamics.
Given:
1) initial values, at the start of a certain year, of workforce stocks by 5 year age groups from 21 to 75.
2) retire fraction for each 5 year age group over 50
3) hire fractions by 5 year age group, used to replace retirements, resignations, and for business growth additions.
4) resign fractions by year from hire, up to about 15 years from hire when the fraction becomes miniscule. Right now I have one set of data that is the average for the firm, but I expect to discover that such fractions are available by year of hire

I've built a subscripted model to address 1, 2, and 3 above. I chose to use less realistic first order delays of inputs to outputs from each age group rather than realistic fixed delays because the fixed delays don't allow for aging of the initial stocks, and the purpose of the model is to approximatly determine when contraints on hiring will be unable to keep up with the retiring baby boomers (a predictive model, unfortunately), and so the aging of the initial stocks is very important, since this time is close at hand. Later we will hopefully move the model from being in 5 year age groups to 1 year age groups which should improve (but obviously not perfect) model fidelity to reality.

My problem is how to add structure to handle #4 above. One thought I've had is to build a little fifteen year structure on the side whose sole function is to calculate retire rates by year. I was thinking to subscript that little structure by hire year. Somehow (I don't know how yet), these yearly resign flows from the 15 year side model would be summed by age group to calculate the resign rates from the main model. Hire inflows to the 15 year side model would come from the main model (but I don't know how to capture the year). Does anyone have any thoughts on this or other approaches that could would work? Could it somehow be done without using such a side model? Thanks!
LAUJJL
Senior Member
Posts: 1427
Joined: Fri May 23, 2003 10:09 am
Vensim version: DSS

Post by LAUJJL »

Hi Paul

With that kind of problem which has some discreet characteristics, I would experiment with a QUEUE FIFO where you can easily intialise the stocks by age and will be more realistic. It depends on the characteristics of the input flow. If it is very regular with no sudden variations, a first order delay may work, but if the structure of ages is not regular, the first order delay will not take into account this characteristic.
You can use for the output of the Queue fifo any delay you want and in particular a fixed delay.
Regards.
JJ

[Edited on 9-5-2008 by LAUJJL]
bob@vensim.com
Senior Member
Posts: 1107
Joined: Wed Mar 12, 2003 2:46 pm

Post by bob@vensim.com »

It seems like 4 is juse

retirements[cohort] = workers[cohort] * fractional retire rate[cohort]

This should work with 1 or 5 year cohorts.

A general comment. Given what you are trying to do the easiest thing to do is probably use the SHIFT IF TRUE function so that

cohort : cohort0,cohortrest
cohortrest: (cohort1-cohort30)
workers[cohort0] = INTEG(hires-departures[cohort0],init workers[cohort0])
workers[cohortrest] = INTEG(-departures[cohortrest],init workers[cohortrest])
shift control = SHIFT IF TRUE(workers[cohort0],Time = INTEGER(Time), ELMCOUNT(cohort), 1, 0)

This if for annual cohorts - should give you the granularity you need. For 5 year cohorts your current approach is better.
paulnewton
Junior Member
Posts: 13
Joined: Tue Sep 11, 2007 4:23 am

Post by paulnewton »

Bob, you wrote, "It seems like 4 is just

retirements[cohort] = workers[cohort] * fractional retire rate[cohort]"

Actually the retirement rate is a function of age, whereas resignation rate is a function of time since being hired, and hiring takes place into multiple age groups.

I've had no problem with the retirement rate (see attached model - data is fictitious but structure is ok) but figuring out how to add resignation rate to the model is giving me fits.

I have data for fractional resignation rates by year since being hired (up to about 15 years since being hired) but for now would be willing to add the first five years of these fractions to get a five year fraction approximation (and 5-10, and 10-15)
Attachments
Test Models.zip
(4.65 KiB) Downloaded 273 times
bob@vensim.com
Senior Member
Posts: 1107
Joined: Wed Mar 12, 2003 2:46 pm

Post by bob@vensim.com »

In this case you will need to track both age and tenure. You can use a coflow to approximate this or actually use an array of people by age and tenure. In this case the shifting becomes trickier because you will want to effectively cross link - that is

pop[age2,tenure2]

comes from

pop[age1,tenure1]

and so on. One solution is simply to use the shift on tenure and have the age subscript refer to age at hire - age at hire + tenure = current age so that should give you all you need. You can't do this the other way around though so you will probably need to reformulate your model.
paulnewton
Junior Member
Posts: 13
Joined: Tue Sep 11, 2007 4:23 am

Post by paulnewton »

Bob, you wrote, "One solution is simply to use the shift on tenure and have the age subscript refer to age at hire - age at hire + tenure = current age."

This sounds like a great idea and I've started working on modeling the problem this way. But I've been given initial workforce stocks, by five year age groups from ages 21-75 (ie 21-25, 26-30, etc), at the start of 2008. Using the approach you suggest above, I'm having difficulty thinking about how to ensure I match these initial values.

One thought I had was to start the simulation at least 15 years (to cover all retirements using the retirement fractions I have as well) before 2008, say 1990, and then somehow using optimization to solve for what the initial age group values should be at that time to create the 2008 stocks.

Please let me know if I'm asking for too much help here.
bob@vensim.com
Senior Member
Posts: 1107
Joined: Wed Mar 12, 2003 2:46 pm

Post by bob@vensim.com »

If I understand correctly the only issue is distributing the population by age to the fraction in each age at hire cohort. This might be easiest to do in Excel but the sequence is something like

start with pop by age
give these a reasonable tenure distribution (eg age must be > 18 + tenure length)
subtract the tenure length from the age to get age at start
use this to initialize pop by tenure and age at start.

To do this in Vensim seems like it would be messy - but probably doable using VECTOR ELM MAP and IF THEN ELSE. Getting the distribution estimates for tenure from age seems trickier.

Bob Eberlein
Post Reply