[MUG] Generating a compound poission process in Maple

Search email archive for

[MUG] Generating a compound poission process in Maple
Author: Theo H S Boafo    Posted: Tue, 21 Jan 2003 06:42:03 +0000

>> From: />
Hello,

Can anyone help with generating a compound poisson process in Maple.

Regards

Theo

The HSBC Group's website is at http://www.hsbc.com
_____________________________________________________

HSBC Bank Plc, which is regulated in the UK by FSA, has issued the
information contained in this message (including any attached
documents) for its institutional and professional customers only.
It is not intended for private customers. This message and any
attachments are not an invitation to buy or sell securities or related
financial instruments, are confidential to the named recipient and may
also be privileged. The information should not be reproduced and / or
distributed to any other person. Internet communications are not secure
and HSBC Bank Plc makes no representation and accepts no
responsibility or liability as to the completeness and accuracy of the
information contained in this message. Each page attached hereto
must be read in conjunction with any disclosure which forms part of it.

[MUG] Re: Generating a compound poission process in Maple
Author: Robert Israel    Posted: Thu, 30 Jan 2003 16:26:44 -0800

>> From: Robert Israel />
On Tue, 21 Jan 2003 wrote:

> Hello,
>
> Can anyone help with generating a compound poisson process in Maple.
>
> Regards
>
> Theo

OK, a compound Poisson process is defined by X(t) = sum_{i=1}^N(t) Y_i
for t >= 0, where N(t) is a Poisson process and {Y_i} a family of iid
random variables independent of N(t). I'll suppose you have a procedure
gY that generates independent (pseudo)-random variates with the
distribution for the Y_i. Poisson random variables can be generated
using random in the stats package.

By "generating" the process, I suppose what you want is to generate a
sample from this process, i.e. given 0 < t1 < t2 < ... < tk you want
the values X(t1), X(t2), ..., X(tk) from one simulation of the process.
Suppose the Poisson process N(t) has rate r, so for s < t, N(t) - N(s)
is Poisson with parameter r*(t-s), and X(t) - X(s) is the sum of
that many independent r.v.'s with the distribution for Y_i. Thus
the following procedure will take as input the rate r, the number k
and a list or array L = [t1, t2, ..., t_k], and return an array
[X(t1), X(t2), ..., X(tk)].

> with(stats,random):
compPoisson:= proc(r::numeric, k::posint, L::{list, array, Array})
local S, i, j, t, p, Res;
Res:= array(1..k);
t:= 0; S:= 0;
for j from 1 to k do
p:= r*(L[j]-t);
S:= S + add(gY(), i= 1.. random[poisson[p]](1));
Res[j]:= S;
t:= L[j];
od;
eval(Res)
end;

For example:

> gY:= random[uniform[0,1]]:
compPoisson(3, 5, [1,3,5,7,9]);

[2.073933989, 3.604972042, 6.430861594, 11.44868212, 17.00177618]

Robert Israel /> Department of Mathematics http://www.math.ubc.ca/~israel
University of British Columbia