¿Cómo encajar una distribución beta en Python?

Estoy trabajando con un conjunto de datos simple y por razones de reproducibilidad, lo comparto aquí .

Para aclarar lo que estoy haciendo, de la columna 2, estoy leyendo la fila actual y la comparo con el valor de la fila anterior. Si es mayor, sigo comparando. Si el valor actual es más pequeño que el valor de la fila anterior, quiero dividir el valor actual (más pequeño) por el valor anterior (más grande). En consecuencia, el siguiente código:

import numpy as np import scipy.stats import matplotlib.pyplot as plt import seaborn as sns protocols = {} types = {"data_v": "data_v.csv"} for protname, fname in types.items(): col_time,col_window = np.loadtxt(fname,delimiter=',').T trailing_window = col_window[:-1] # "past" values at a given index leading_window = col_window[1:] # "current values at a given index decreasing_inds = np.where(leading_window < trailing_window)[0] quotient = leading_window[decreasing_inds]/trailing_window[decreasing_inds] quotient_times = col_time[decreasing_inds] protocols[protname] = { "col_time": col_time, "col_window": col_window, "quotient_times": quotient_times, "quotient": quotient, } plt.figure(); plt.clf() diff=quotient_times plt.plot(diff,beta_value, ".", label=protname, color="blue") plt.ylim(0, 1.0001) plt.title(protname) plt.xlabel("quotient_times") plt.ylabel("quotient") plt.legend() plt.show() sns.distplot(quotient, hist=False, label=protname) 

Esto da las siguientes plots.

introduzca la descripción de la imagen aquí

introduzca la descripción de la imagen aquí

Como podemos ver en las plots.

  • Data-V tiene un cociente de 0.8 cuando el quotient_times es menor que 3 y el cociente permanece 0.5 si el quotient_times es mayor que 3.

Basado en esto, ¿cómo podemos encajar estos datos en una distribución tipo beta cuando el quetient_times es menor que 3 y mayor que 3? Intuitivamente, cuando el quetient_times es menor que 3, el pico de distribución se centrará alrededor de 0.8. Cuando el quetient_times es alrededor de 3 o 3.05, el pico estará entre 0.8 y 0.5 (50%, 50%). Sin embargo, cuando el quetient_times es mayor que 3, el pico se centrará solo alrededor de 0.5. ¿Cómo podemos hacer esto en Python?