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
- Gráficas de caja en matplotlib: marcadores y valores atípicos
- Cómo realizar una prueba t de una cola de dos muestras con numpy / scipy
- Pandas: por qué pandas.Series.std () es diferente de numpy.std ()
- Cálculo del promedio móvil por hora y de 2 horas para diferentes eventos en el dataframe de pandas
- Ajuste binomial negativo en python
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.