Who knew this was true?

Interesting. I don't have an intuitive explanation and don't know whether the relationship to a circle is coincidental. Your example can be thought of as the probability of 0.5 successes in 1 trial (save for the missing binomial coefficient), which isn't meaningful for a discrete probability. However, if we proceed formally using the generalized binomial expansion, we can calculate what the "probability density" would be in an abstract, formal way.

Below is a function that calculates the generalized binomial probability for an equal number of successes and failures at a range of theta values (where theta is the probability of success in each trial). The function argument n is the number trials, which is 1 in your example, but would be an even number if we wanted only "real" probabilities.

# Return the probability of an equal number of successes and failures for any 
# number of "trials", where the argument n is the number of trials. n can be 
# any real number (it can even be a complex number in general, but the 
# function isn't set up to work with complex numbers)
generalized.dbinom = function(n) {

  # The parameter for the success probability in the binomial distribution
  theta = seq(0,1,0.001)

  # The generalized binomial coefficient (see link above)
  binom.coef = gamma(n + 1)/(gamma(n/2 + 1)*gamma(n - n/2 + 1))

  # The product of the probability of success in all the trials
  prob = (theta*(1 - theta))^(n/2)

  # Return a data frame with the results
  data.frame(theta, prob=prob*binom.coef)
}

The code below plots the output of the function for your example, and for the real-world case of 1 success in 2 trials. The extra call to geom_line using dbinom is there just to show that the generalized binomial function gives the same result as dbinom in a standard discrete-probability case.

library(tidyverse)
theme_set(theme_classic())

ggplot(map_df(c(1,2) %>% set_names(./2), generalized.dbinom, .id="exponent"), 
       aes(theta, prob)) +
  geom_hline(yintercept = 0.5, colour="grey70") +
  geom_line(data=tibble(theta=seq(0,1,0.01), prob=dbinom(1,2,theta)), 
            linetype="12", size=1) +
  geom_line(aes(colour=exponent)) +
  scale_y_continuous(expand=expand_scale(mult=c(0,0.02)), breaks=seq(0,1,0.1)) +
  coord_equal()

4 Likes