FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 
 ProfileProfile   PreferencesPreferences   Log in to check your private messagesLog in to check your private messages   Log inLog in 
Forum index » Science and Technology » Math » Probability
Death rate problem
Post new topic   Reply to topic Page 1 of 1 [8 Posts] View previous topic :: View next topic
Author Message
David Carson
science forum beginner


Joined: 05 Jul 2006
Posts: 4

PostPosted: Wed Jul 05, 2006 6:06 pm    Post subject: Death rate problem Reply with quote

Hi, I am not a regular participant of this group, and only stopped in
to ask a question. I hope that's OK.

First, the context: I want to run some simulations to see what effects
different death rates have on a human population. To keep things
simple while I'm developing the code, I'm using a uniform death rate
of 8 per 1,000 per month (which is very high by modern standards, but
not by world historical standards). I'm keeping track of how many
people there are in each age group, and the age groups are broken down
by month. Ultimately, there will be different death rates for
different age groups, genders, etc., but a uniform death rate is
better for purposes of developing and testing the simulation code.

The simplest way to run the simulation would be to multiply the number
of people in each age group by .008, subtract them from the
population, and age the rest by one month. That would also, however,
be very unrealistic. In reality, you would never have exactly 8
deaths per 1,000 in each age group every month. In reality, 8 would
be the modal value, but you'd also get a lot of 7's and 9's, some 6's
and 10's, a few 5's, and 11's, etc. The real distribution would be a
normal probability curve with 8 as the peak.

My working solution uses RND, a random number from the system, where 0
<= RND < 1. If, for a given person, RND is greater than or equal to
..992, the poor creature dies, and if it is less than .992, he or she
lives another month. This method gives a nice result where, on
average, the death rate tends to be 8 per 1000, but it varies
according to normal probability. The problem with this method is the
sheer number of RND fetches, comparisons, and iterations that have to
be performed. Aging a population of 20,000 by 12 months by this method
takes a few seconds. To apply it to a population of hundreds of
millions over 100 years would take hours, or even days.

Can anyone think of a way to run this simulation so that death rates
will result in a normal probability curve, but without iterating over
the entire population person-by-person every month? I will check back
here to see if there are any answers, and thanks in advance.

David Carson
Back to top
Ray Koopman
science forum Guru Wannabe


Joined: 25 Mar 2005
Posts: 216

PostPosted: Wed Jul 05, 2006 8:26 pm    Post subject: Re: Death rate problem Reply with quote

There are several ways to do what you want. From what distributions
other than Uniform(0,1) will your system generate random numbers?

David Carson wrote:
Quote:
Hi, I am not a regular participant of this group, and only stopped in
to ask a question. I hope that's OK.

First, the context: I want to run some simulations to see what effects
different death rates have on a human population. To keep things
simple while I'm developing the code, I'm using a uniform death rate
of 8 per 1,000 per month (which is very high by modern standards, but
not by world historical standards). I'm keeping track of how many
people there are in each age group, and the age groups are broken down
by month. Ultimately, there will be different death rates for
different age groups, genders, etc., but a uniform death rate is
better for purposes of developing and testing the simulation code.

The simplest way to run the simulation would be to multiply the number
of people in each age group by .008, subtract them from the
population, and age the rest by one month. That would also, however,
be very unrealistic. In reality, you would never have exactly 8
deaths per 1,000 in each age group every month. In reality, 8 would
be the modal value, but you'd also get a lot of 7's and 9's, some 6's
and 10's, a few 5's, and 11's, etc. The real distribution would be a
normal probability curve with 8 as the peak.

My working solution uses RND, a random number from the system, where 0
= RND < 1. If, for a given person, RND is greater than or equal to
.992, the poor creature dies, and if it is less than .992, he or she
lives another month. This method gives a nice result where, on
average, the death rate tends to be 8 per 1000, but it varies
according to normal probability. The problem with this method is the
sheer number of RND fetches, comparisons, and iterations that have to
be performed. Aging a population of 20,000 by 12 months by this method
takes a few seconds. To apply it to a population of hundreds of
millions over 100 years would take hours, or even days.

Can anyone think of a way to run this simulation so that death rates
will result in a normal probability curve, but without iterating over
the entire population person-by-person every month? I will check back
here to see if there are any answers, and thanks in advance.

David Carson
Back to top
David Carson
science forum beginner


Joined: 05 Jul 2006
Posts: 4

PostPosted: Wed Jul 05, 2006 9:52 pm    Post subject: Re: Death rate problem Reply with quote

On 5 Jul 2006 13:26:01 -0700, "Ray Koopman" <koopman@sfu.ca> wrote:

Quote:
There are several ways to do what you want. From what distributions
other than Uniform(0,1) will your system generate random numbers?

None ... that's the only one. I'm just using a PC and VBScript.

If there were a way to fetch a number randomly generated from a normal
distribution, all I would have to do is fetch a value for each age
group. I guess another way of phrasing my question would be, is there
a way to randomly generate numbers from a normal distribution, when
your system only generates random numbers from a uniform distribution
and only has the basic arithmetic, logarithmic, and trigonometric
functions built in?

David Carson
Back to top
Ray Koopman
science forum Guru Wannabe


Joined: 25 Mar 2005
Posts: 216

PostPosted: Wed Jul 05, 2006 10:43 pm    Post subject: Re: Death rate problem Reply with quote

A long as n (the number of people in the group) is large -- say > 100
-- and p (the proportion who are expected to die) is small -- say <
..10 -- take your numbers from a Poisson distribution with mean = m =
n*p. Otherwise revert to your original method.

Here is some pseudocode for generating a Poisson variable with mean m:

u = rnd()*exp(m); x = 0; t = 1; s = 1;
while s < u: (x = x+1, t = t*m/x, s = s+t);
use x

David Carson wrote:
Quote:
On 5 Jul 2006 13:26:01 -0700, "Ray Koopman" <koopman@sfu.ca> wrote:

There are several ways to do what you want. From what distributions
other than Uniform(0,1) will your system generate random numbers?

None ... that's the only one. I'm just using a PC and VBScript.

If there were a way to fetch a number randomly generated from a normal
distribution, all I would have to do is fetch a value for each age
group. I guess another way of phrasing my question would be, is there
a way to randomly generate numbers from a normal distribution, when
your system only generates random numbers from a uniform distribution
and only has the basic arithmetic, logarithmic, and trigonometric
functions built in?

David Carson
Back to top
David Carson
science forum beginner


Joined: 05 Jul 2006
Posts: 4

PostPosted: Thu Jul 06, 2006 3:53 am    Post subject: Re: Death rate problem Reply with quote

On 5 Jul 2006 15:43:18 -0700, "Ray Koopman" <koopman@sfu.ca> wrote:

Quote:
A long as n (the number of people in the group) is large -- say > 100
-- and p (the proportion who are expected to die) is small -- say
.10 -- take your numbers from a Poisson distribution with mean = m =
n*p. Otherwise revert to your original method.

Here is some pseudocode for generating a Poisson variable with mean m:

u = rnd()*exp(m); x = 0; t = 1; s = 1;
while s < u: (x = x+1, t = t*m/x, s = s+t);
use x

Interesting. I found some code for a Box-Muller transformation today, but
I like this better, because it gives me a result I can use without any
further manipulation.

By iterating over each member of the population every month, it took 65
seconds on my PC to age a population of 100,000 by 10 years. Using this
Poisson distribution, the same calculation was instantaneous, and aging a
population of 100,000 by 100 years took under 2 seconds. This will work
fine.

One question - at what proportion of deaths in the population group does
this method start to break down? I can see, in some high infant mortality
scenarios, needing to apply a death rate of, say, 8 out of 80. Will that
be a problem? I can revert to the iterative method if necessary, but it
would help to know if and when I have to make the switch, and of course it
would be preferable to have only one method to worry about.

Thanks for your help, Ray.

David Carson
Back to top
Ray Koopman
science forum Guru Wannabe


Joined: 25 Mar 2005
Posts: 216

PostPosted: Thu Jul 06, 2006 6:49 am    Post subject: Re: Death rate problem Reply with quote

David Carson wrote:
Quote:
On 5 Jul 2006 15:43:18 -0700, "Ray Koopman" <koopman@sfu.ca> wrote:

A long as n (the number of people in the group) is large -- say > 100
-- and p (the proportion who are expected to die) is small -- say
.10 -- take your numbers from a Poisson distribution with mean = m =
n*p. Otherwise revert to your original method.

Here is some pseudocode for generating a Poisson variable with mean m:

u = rnd()*exp(m); x = 0; t = 1; s = 1;
while s < u: (x = x+1, t = t*m/x, s = s+t);
use x

Interesting. I found some code for a Box-Muller transformation today, but
I like this better, because it gives me a result I can use without any
further manipulation.

By iterating over each member of the population every month, it took 65
seconds on my PC to age a population of 100,000 by 10 years. Using this
Poisson distribution, the same calculation was instantaneous, and aging a
population of 100,000 by 100 years took under 2 seconds. This will work
fine.

One question - at what proportion of deaths in the population group does
this method start to break down? I can see, in some high infant mortality
scenarios, needing to apply a death rate of, say, 8 out of 80. Will that
be a problem? I can revert to the iterative method if necessary, but it
would help to know if and when I have to make the switch, and of course it
would be preferable to have only one method to worry about.

Thanks for your help, Ray.

David Carson

The Poisson variable is serving as an approximation to a Binomial
variable, which is what your original loop over n gives. There is no
precise general rule that says when the approximation is good enough.
The following recommendation is from
http://www.itl.nist.gov/div898/handbook/pmc/section3/pmc331.htm :
"The sample size n should be equal to or larger than 20 and the
probability of a single success, p, should be smaller than or equal to
..05. If n >= 100, the approximation is excellent if np is also <= 10."
Back to top
Nigel
science forum beginner


Joined: 03 Jun 2005
Posts: 37

PostPosted: Thu Jul 06, 2006 1:18 pm    Post subject: Re: Death rate problem Reply with quote

David Carson wrote:

Quote:
Hi, I am not a regular participant of this group, and only stopped in
to ask a question. I hope that's OK.

First, the context: I want to run some simulations to see what effects
different death rates have on a human population. To keep things
simple while I'm developing the code, I'm using a uniform death rate
of 8 per 1,000 per month (which is very high by modern standards, but
not by world historical standards). I'm keeping track of how many
people there are in each age group, and the age groups are broken down
by month. Ultimately, there will be different death rates for
different age groups, genders, etc., but a uniform death rate is
better for purposes of developing and testing the simulation code.

The simplest way to run the simulation would be to multiply the number
of people in each age group by .008, subtract them from the
population, and age the rest by one month. That would also, however,
be very unrealistic. In reality, you would never have exactly 8
deaths per 1,000 in each age group every month. In reality, 8 would
be the modal value, but you'd also get a lot of 7's and 9's, some 6's
and 10's, a few 5's, and 11's, etc. The real distribution would be a
normal probability curve with 8 as the peak.

My working solution uses RND, a random number from the system, where 0
= RND < 1. If, for a given person, RND is greater than or equal to
.992, the poor creature dies, and if it is less than .992, he or she
lives another month. This method gives a nice result where, on
average, the death rate tends to be 8 per 1000, but it varies
according to normal probability. The problem with this method is the
sheer number of RND fetches, comparisons, and iterations that have to
be performed. Aging a population of 20,000 by 12 months by this method
takes a few seconds. To apply it to a population of hundreds of
millions over 100 years would take hours, or even days.

Can anyone think of a way to run this simulation so that death rates
will result in a normal probability curve, but without iterating over
the entire population person-by-person every month? I will check back
here to see if there are any answers, and thanks in advance.

David Carson

I'm not sure that adding extra detail to your death rates will be an
effective use of your time. As you subsequently point out, infant
mortality rates are higher than average, but so are geriatric mortality
rates etc. There are also conditions that cause spikes in death rates
across the whole population, for example flu epidemics or unusual
weather patterns. To model these would be more or less guesswork.

It might be helpful if we understood why you want to model the effects
of different death rates, then we might be able to make more relevant
suggestions for tuning your model.
Back to top
David Carson
science forum beginner


Joined: 05 Jul 2006
Posts: 4

PostPosted: Thu Jul 06, 2006 11:58 pm    Post subject: Re: Death rate problem Reply with quote

On Thu, 06 Jul 2006 14:18:38 +0100, nigel <useweb@nospam.com> wrote:

Quote:
I'm not sure that adding extra detail to your death rates will be an
effective use of your time. As you subsequently point out, infant
mortality rates are higher than average, but so are geriatric mortality
rates etc. There are also conditions that cause spikes in death rates
across the whole population, for example flu epidemics or unusual
weather patterns. To model these would be more or less guesswork.

It might be helpful if we understood why you want to model the effects
of different death rates, then we might be able to make more relevant
suggestions for tuning your model.

The purpose of the model is to see what happens when factors such as the
ones you mentioned are introduced or changed. I can add as many different
factors as I want, but it's all for naught if it takes a half a day to run
the simulation. I can handle the model; I just needed some help with the
math, to make it run faster. The Poisson distribution Ray pointed me to
did the trick.
Back to top
Google

Back to top
Display posts from previous:   
Post new topic   Reply to topic Page 1 of 1 [8 Posts] View previous topic :: View next topic
The time now is Fri Oct 20, 2017 5:42 pm | All times are GMT
Forum index » Science and Technology » Math » Probability
Jump to:  

Similar Topics
Topic Author Forum Replies Last Post
No new posts help on problem brb003 Math 0 Mon Aug 28, 2006 3:31 am
No new posts fraction problem mikerule Research 0 Thu Aug 24, 2006 5:10 am
No new posts Mod computer problem William Elliot Math 4 Fri Jul 21, 2006 12:07 pm
No new posts Divine apparitions in the tethered goat problem? jpalmour@gmail.com Math 6 Thu Jul 20, 2006 8:26 pm
No new posts possible to use Generalized Method of Moments for this pr... comtech Math 1 Thu Jul 20, 2006 12:49 am

Copyright © 2004-2005 DeniX Solutions SRL
Other DeniX Solutions sites: Electronics forum |  Medicine forum |  Unix/Linux blog |  Unix/Linux documentation |  Unix/Linux forums  |  send newsletters
 


Powered by phpBB © 2001, 2005 phpBB Group
[ Time: 0.1440s ][ Queries: 16 (0.1211s) ][ GZIP on - Debug on ]