联系方式

您当前位置:首页 >> Python编程Python编程

日期:2024-05-10 08:52

COMPSCI369 - S1 2024

Assignment 3

Due date: See Canvas

Instructions

This assignment is worth 7.5% of the final grade. It is marked out of 75 points.

Provide a solution as a Python notebook and html with output. Your solution should include well

documented code with the calls to reproduce your results.

Include markdown cells with explanation of the results for each question.

Submit the ipynb and html to Canvas:

• the .ipynb file with outputs from the executed code

• a .html version of the notebook with all outputs of executed code showing. (To get this

format, export from the notebook viewer or use nbconvert.)

Within the notebook, set the random seed to some integer of your choosing (using random.seed)

so that the marker can recreate the same output that you get. You can reset the seed before each

question if you like.

Question 1: Simulating random variables and exploring relationships between distributions (20 Points)

(a) Using the inversion sampling technique described in Section 9.2 of the workbook, write a method rand exp that takes a rate parameter λ as input and

produces as output an exponentially distributed random variable with rate parameter λ. Use random.random() to generate uniform random numbers. (4

marks)

(b) Demonstrate your rand exp is correct by comparing the mean and variance

of the output to theoretical values, and also by comparing the output of your

method to a library method. (4 marks)

(c) Use rand exp to write a method rand poiss that takes a parameter λ as input

and produces as output a Poisson distributed random variable with parameter

λ. (4 marks)

(d) Use rand exp to write a method rand gamma that takes an integer parameter

k and rate parameter θ as input and produces as output a gamma distributed

random variable with parameters k and θ. (4 marks)

(e) Explain why your rand gamma method lacks the generality you would typically

want for simulating gamma distributed random variables. (4 marks)

1

Question 2: Simulating outbreaks (55 Points)

A standard model in epidemiology is the SIR model of infectious disease spread. It

has a population of N hosts being divided into 3 compartments, so is known as a

compartmental model:

• the S compartment of those who are susceptible to the disease

• the I compartment of those who are infectious with the disease

• the R compartment of those who are recovered from the disease and now immune (or, more generally, those who are removed from the epidemic through

recovery with immunity, or isolation, or death, etc).

We assume that S + I + R = N.

The model can be deterministic or stochastic. We consider the stochastic version

here. Times between all events are exponentially distributed with the following rates

which depend on the current state of the outbreak, assumed to be (S, I, R):

• the rate of transmissions is βSI/N and the new state is (S − 1, I + 1, R), and

• the rate of recoveries is γI and the new state is (S, I − 1, R + 1).

You can use any functions from the random module that you like for this question.

Probably the only one you need is random.expovariate.

(a) At what point will the epidemic finish? (2 marks)

(b) Write method sim SIR that takes as inputs N, I0, β, γ and produces as output

a list of the event times and the number susceptible, infected and recovered at

each time point. All outbreaks start at time t = 0 with S0 = N −I0. (8 marks)

(c) Run a simulation with N = 1000, I0 = 10, β = 3, γ = 2 and plot the number

infected through time. (4 marks)

(d) Run an experiment and report the results to approximate the probability that

a large outbreak occurs using the same parameters as above but with only one

initial infected. What has usually happened if there is no large outbreak? (6

marks)

(e) The reproduction number R0 = β/γ of the epidemic is the mean number of

transmissions by a single infected in an otherwise susceptible population (Note

there is a bit of a notation clash: we are not referring to the number of recovered

individuals at time 0 in this case.) Using the same parameters as in part (c)

but allowing β to vary, select five values of R0 above and below 1 to explore

whether or not you get an outbreak. Report and explain your results. (6

marks)

(f) Suppose now that the infectious period is fixed, so that hosts are infectious

for exactly 1 time unit. Is the process still Markov? How would you go about

writing code to simulate such an epidemic? (You do not have to actually write

the code here.) (4 marks)

2

(g) Another common model breaks the infectious period up into m sub-periods,

I1, I2, . . . , Im so is an SI1I2 . . . ImR model. Assuming the amount of time each

individual spends in compartment Ij

is exponential with rate γ, what is the

distribution of the total time spent in I1 to Im? (4 marks)

(h) Drawing on what you know about infections, explain why neither a fixed length

nor an exponential distributed infectious period is a great model and why the

m sub-period model may be preferable. What computational advantage does

this formalism have that makes it easier to work with than some arbitrary

distribution for the infection period? (6 marks)

(i) Consider another compartmental model where there is no immunity to an infection so individuals recover straight back into a susceptible state and can get

infected again. This is know as birth death or SIS process. If we look at only

the type of events and ignore the waiting times between them, this process can

be described as a simple Markov chain. If the population size were fixed at

N = 5, and using transition rates (S, I) → (S − 1, I + 1) at rate βSI/N and

(S, I) → (S + 1, I − 1) at rate γI, write down the transition matrix for the

chain. (5 marks)

(j) Implement an SIS process which takes inputs N, I0, β, γ, t, where t is the number

of iterations (i.e., infection or recovery events) the simulation runs for. (6

marks)

(k) Run a simulation study using the SIS simulator with N = 1000, I0 = 10, β =

3, γ = 2 to determine the long term behaviour of this process. Discuss your

results. (4 marks)

3


版权所有:留学生编程辅导网 2020 All Rights Reserved 联系方式:QQ:821613408 微信:horysk8 电子信箱:[email protected]
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:horysk8