Skip to content

laser.measles.mixing.stouffer

laser.measles.mixing.stouffer

laser.measles.mixing.stouffer.StoufferMixing(scenario=None, params=None)

Bases: BaseMixing

Stouffer intervening-opportunities migration model.

Long-distance travel is suppressed by the cumulative population of patches between origin and destination (intervening opportunities):

\[M_{i,j} = k \, p_i^{a} \sum_j \left(\frac{p_j}{\sum_{k \in \Omega(i,j)} p_k}\right)^{b}\]

Parameters:

Name Type Description Default
scenario DataFrame | None

Patch data. None when the model will set it automatically.

None
params StoufferParams | None

Model parameters. Uses StoufferParams defaults if None.

None

Example:

1
2
3
4
5
6
7
8
9
```python
from laser.measles.mixing.stouffer import StoufferMixing, StoufferParams
from laser.measles.compartmental import components
from laser.measles import create_component

mixer = StoufferMixing(params=StoufferParams(k=0.01))
infection_params = components.InfectionParams(beta=0.8, mixer=mixer)
model.add_component(create_component(components.InfectionProcess, infection_params))
```

laser.measles.mixing.stouffer.StoufferMixing.get_migration_matrix()

Compute the Stouffer migration matrix.

Returns:

Type Description
ndarray

Migration matrix of shape (N, N).

laser.measles.mixing.stouffer.StoufferParams

Bases: BaseModel

Parameters for the Stouffer migration model.

Parameters:

Name Type Description Default
include_home bool

Whether to include home in the migration matrix

required
k float

Scale parameter (avg trip probability)

required

Example:

1
2
3
4
5
```python
from laser.measles.mixing.stouffer import StoufferParams

params = StoufferParams(k=0.02, include_home=True, a=1.0, b=1.0)
```