egttools.numerical.numerical_.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_strategiescontributes 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:
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] ... )