In short:
Somewhat, yes. A player in the minority has a +35% increased chance of being voted out at the next tribal council than someone in the majority. However, this depends on other tribe/game-play factors that can’t be included. While this is a positive effect, it isn’t that significant.
Intuitively, you’d say, “yeah, of course they are on the chopping block”. But you can also hypothesise reasons where being on the bottom can be an advantage – ultimately, you’re an extra vote for someone.
I’m interested in measuring the chances of being voted out after a swap. There are a bunch of variables to control for that can change someone’s position, but it’s really hard to account for them all.
The variables I will control for:
- The number of players in the swapped tribe. Depending on when it occurs, how many players are still left in the game, whether they reduce to two tribes or split into three, the number of players in the swapped tribe is key to understanding the chances of being a target.
- The number of players in the minority. This is determined by observing who is in the new tribe and where they came from. Those with the fewest members from their original tribe are in the minority.
Variables I can’t/haven’t controlled for:
- Original tribe dynamics: Those in the majority may have been waiting for an opportunity to vote out someone on their side, and now they have new players they can bring into the vote.
- Advantages: There is always suspicion that the new players may have idols or other advantages. That can influence someone’s vote. Super hard to control for, so instead that’s captured by the variance.
Model
I’ll use my standard model for this. Each observation is the first tribal council after the first tribe swap. Also, each tribal council must have at least one person in the minority. Equal splits are not counted (e.g. 3 from one tribe and 3 from another) because everything is balanced out.
![Rendered by QuickLaTeX.com \[\begin{array}{rl}\beta & \sim \text{Normal}(0, 1.5) \\\lambda & = \text{log}\left(\frac{p}{1-p}\right) + \beta\\\kappa & = \frac{1}{1+e^{-\lambda}} \\y & \sim \text{Bernoulli}(\kappa)\end{equation}\]](http://gradientdescending.com/wp-content/ql-cache/quicklatex.com-23669437b97f4c0cd0b84544c850158f_l3.png)
Where
is the chance of being voted out based on equal chance
is the log odds of base probability plus an effect parameter
.
If
is above 0 then there is a positive effect, in this case higher chance of being voted out.
Results
The median of
is above 0, showing that the minority are more likely to be voted out, but not by that much to be honest. The distribution is fairly wide and the 0 sits right on the lower 25%.

The first takeaway is that, yeah, the an increased chance of being voted out but it is a very complex thing; who gets voted out depends on a lot of other things as well. They aren’t controlled for here, so those effects end up in the variance.
The probabilities
Let’s continue and look at the actual probabilities based on the different scenarios. The probability of someone in the minority will be voted out depends on the size of the tribe and number in the minority.
I’ve estimated the increased chances of being voted for each scenario from a tribe of 5-10 and those in the minority from 1-4. This chart lays it out pretty well.

If the tribe after the swap has 7 people in it (which we’re about to see in season 50), and there are 2 people in the minority, those people have a 23% higher chance of being voted out than equal chance.
Honestly, doesn’t seem that high. Here’s the posterior probability distribution of this scenario which shows you what we’re dealing with. Equal prob (1/7, 14%) is pretty comfortably within the distribution.

Still better to be in the majority, though.
Perhaps a better way to look at this is relative to others in the majority. We actually don’t need to look at the full grid of scenarios because it’s relatively the same across all scenarios. Why? Maths.
A player in the minority has a +35% increased chance of being voted out at the next tribal council than someone in the majority.
Final thoughts
The minority is not the best position to be in after a swap, but also not guaranteed to be detrimental to their game. Other things are actually more detrimental, like not being on the right side of the vote or being over 40.
Code bits
# are those in the minority after a swap more likely to be voted out?
df_base <- survivoR::boot_mapping |>
filter_us() |>
filter(str_detect(tribe_status, "Swap")) |>
group_by(version_season, tribe_status) |>
slice_min(sog_id) |>
rename(tribe_after_swap = tribe) |>
add_tribe()
df_select_swap <- df_base |>
group_by(version_season, tribe_status, sog_id) |>
summarise(n = sum(tribe != tribe_after_swap)) |>
filter(n >= 2) |>
group_by(version_season) |>
slice_min(sog_id)
df_swap_counts <- df_base |>
semi_join(df_select_swap, join_by(version_season, sog_id)) |>
group_by(version_season, tribe_after_swap) |>
summarise(
n = n(),
n_swapped = sum(tribe != tribe_after_swap),
n_not_swapped = n-n_swapped
)
df <- df_base |>
semi_join(df_select_swap, join_by(version_season, sog_id)) |>
left_join(df_swap_counts, join_by(version_season, tribe_after_swap)) |>
mutate(
swapped = ifelse(tribe != tribe_after_swap, 1, 0),
not_swapped = ifelse(tribe == tribe_after_swap, 1, 0),
minority = n_swapped < n_not_swapped & swapped == 1 | n_swapped > n_not_swapped & swapped == 0
) |>
ungroup() |>
left_join(
survivoR::vote_history |>
distinct(version_season, episode, voted_out, sog_id, tribe_at_tc = tribe),
join_by(version_season, episode, sog_id)
) |>
mutate(
next_boot = castaway == voted_out
) |>
select(-version, -season, -episode, -order, -n_boots, -final_n, -tribe_status, -game_status)
df |>
filter_us(45) |>
group_by(version_season, tribe_after_swap) |>
mutate(
n_from_same = map_dbl(tribe, ~sum(tribe == .x)),
min = min(n_from_same),
minority = n_from_same == min
)
df <- df_base |>
semi_join(df_select_swap, join_by(version_season, sog_id)) |>
left_join(df_swap_counts, join_by(version_season, tribe_after_swap)) |>
group_by(version_season, tribe_after_swap) |>
mutate(
n_from_same = map_dbl(tribe, ~sum(tribe == .x)),
min = min(n_from_same),
minority = n_from_same == min
) |>
ungroup() |>
filter(min/n < 0.5) |>
left_join(
survivoR::vote_history |>
distinct(version_season, episode, voted_out, sog_id, tribe_at_tc = tribe),
join_by(version_season, episode, sog_id)
) |>
mutate(
next_boot = castaway == voted_out
) |>
select(-version, -season, -episode, -order, -n_boots, -final_n, -tribe_status, -game_status)
# expected vs observed
df |>
filter(tribe_after_swap == tribe_at_tc) |>
group_by(version_season) |>
summarise(
n = n(),
minority_voted_out = sum(next_boot & minority),
minority = sum(minority)
) |>
ungroup() |>
summarise(
obs = sum(minority_voted_out),
exp = sum(minority/n),
n = n()
)
# bayesian model ----------------------------------------------------------
df_count <- df |>
filter(tribe_after_swap == tribe_at_tc) |>
group_by(version_season) |>
summarise(
n = n(),
minority_voted_out = sum(next_boot & minority),
minority = sum(minority)
) |>
mutate(
p = minority/n,
log_odds = log_odds(p)
) |>
filter(p < 0.5)
stan_code <- "data {
int<lower=0> N;
array[N] int<lower=0, upper=1> y;
array[N] real log_odds;
real mu0;
}
parameters {
real beta;
}
transformed parameters {
array[N] real<lower=0, upper=1> kappa;
for(k in 1:N) {
kappa[k] = 1/(1+exp(-(log_odds[k] + beta)));
}
}
model {
beta ~ normal(mu0, 1.5);
y ~ bernoulli(kappa);
}"
# setup data list for stan
stan_dat <- df_count |>
rename(
y = minority_voted_out
) |>
as.list()
stan_dat$N <- length(stan_dat$version_season)
stan_dat$mu0 <- 0
mod_stan <- stan(
model_code = stan_code,
data = stan_dat
)
beta <- rstan::extract(mod_stan, "beta")$beta
# all scenarios -----------------------------------------------------------
df_scenarios <- expand_grid(
n_minority = 1:4,
n_tribe = 5:10
) |>
filter(n_minority/n_tribe < 0.5) |>
mutate(
p0 = n_minority/n_tribe
)
p_all_scenarios <- NULL
df_quant <- NULL
df_x <- NULL
p_list <- list()
for(k in 1:nrow(df_scenarios)) {
p0 <- df_scenarios$p0[k]
n_minority <- df_scenarios$n_minority[k]
n_tribe <- df_scenarios$n_tribe[k]
z <- log_odds_inv(log_odds(p0) + beta)
p_all_scenarios <- c(p_all_scenarios, z)
p_list[[k]] <- z
# prob quants
df_quant <- bind_rows(
df_quant,
tibble(z = z) |>
summarise_quantiles(z)
)
p_minority <- z/n_minority
p_majority <- (1-z)/(n_tribe-n_minority)
# x <- p_minority*n_tribe
x <- p_minority/p_majority
df_x <- bind_rows(
df_x,
tibble(x = x) |>
summarise_quantiles(x)
)
}

