¿Cómo calcular la probabilidad de ocurrencias en Python?

Estoy trabajando con tres conjuntos de datos simples y por razones de reproducibilidad, estoy compartiendo el conjunto de datos 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", "Data-R": "data_r.csv", "Data-C": "data_c.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() plt.plot(quotient_times, quotient, ".", label=protname, color="blue") plt.ylim(0, 1.0001) plt.title(protname) plt.xlabel("quotient_times") plt.ylabel("quotient") plt.legend() plt.show() 

A partir de esta observación, quiero medir su probabilidad (ocurrencia) en diferentes quotient_times . Aquí está mi enfoque

 occurrence_count_data_v = 0 possibility_count_data_v = 0 occurrence_count_data_r = 0 possibility_count_data_r = 0 occurrence_count_data_c = 0 possibility_count_data_c = 0 if "data_v".lower() in fname: for index_v in range(len(quotient)): if quotient_times[index_v]  0.5: occurrence_count_data_v += 1 probability_data_v = float(occurrence_count_data_v) / possibility_count_data_v print(fname, "=",probability_data_v) elif "data_r".lower() in fname: for index_r in range(len(quotient)): if quotient_times[index_r] < 3: possibility_count_data_r += 1 if quotient[index_r] == 0.5: occurrence_count_data_r += 1 probability_data_r = float(occurrence_count_data_r) / possibility_count_data_r print(fname, "=", probability_data_r) elif "data_c".lower() in fname: for index_c in range(len(quotient)): if quotient_times[index_c] < 3: possibility_count_data_c += 1 if quotient[index_c] == 0.7: occurrence_count_data_c += 1 probability_data_c = float(occurrence_count_data_c) / possibility_count_data_c print(fname, "=",probability_data_c) 

Salida

data_v.csv = 1.0 data_r.csv = 1.0 data_c.csv = 1.0

Esto significa que el 100% de cada conjunto de datos donde quotient_times es menor que 3 también tiene un quotient de cada dato como se especificó anteriormente. Sin embargo, esto considera cada dato de forma independiente. ¿Cómo podemos medir la ocurrencia de quotient para cada dato contra el otro? Por ejemplo, cuando quotient_times es mayor que 3, tanto Data-V como Data-R comparten el mismo valor de quotient de 5. ¿Cómo podemos medir esta ocurrencia? Cualquier ayuda debe ser apreciada.