egttools.calculate_expected_group_success

calculate_expected_group_success()

Calculate the expected group success eta_G under the stationary distribution.

eta_G = sum_s sd(s) * sum_g P(g|s) * I(sum_{k in contributing_strategies} g[k] >= threshold)

Any strategy whose index appears in contributing_strategies contributes its group count towards the threshold check. This supports games where multiple strategy types each contribute to collective success (e.g. cooperators + altruists).

Parameters:
  • pop_size (int) – Total number of individuals in the population.

  • group_size (int) – Number of individuals sampled per group interaction.

  • nb_strategies (int) – Number of strategies available in the population.

  • stationary_distribution (scipy.sparse.csr_matrix) – Sparse matrix representing the stationary distribution over population states.

  • threshold (int) – Minimum total count of contributing strategies required for the group to succeed.

  • contributing_strategies (list[int]) – Indices of the strategies that count towards the threshold.

Returns:

Expected group success in [0, 1].

Return type:

float

Examples

>>> # CRD: only cooperators (strategy 0) count, threshold = 3
>>> eta_G = calculate_expected_group_success(
...     pop_size, group_size, nb_strategies, sd,
...     threshold=3, contributing_strategies=[0]
... )
>>> # Extended CRD: cooperators (0) and altruists (2) both count
>>> eta_G = calculate_expected_group_success(
...     pop_size, group_size, nb_strategies, sd,
...     threshold=3, contributing_strategies=[0, 2]
... )