Я работаю с простым набором данных и из соображений воспроизводимости делюсь им здесь.
Чтобы было понятно, что я делаю - из столбца 2 я читаю текущую строку и сравниваю ее со значением предыдущей строки. Если он больше, я продолжаю сравнивать. Если текущее значение меньше значения предыдущей строки, я хочу разделить текущее значение (меньшее) на предыдущее значение (большее). Соответственно следующий код:
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)
Это дает следующие графики.
Как мы видим из графиков
quotient_times меньше 3, и частное остается равным 0,5, если quotient_times
больше 3.Исходя из этого, как мы можем поместить эти данные в beta-подобное распределение, когда quetient_times меньше 3 и больше 3? Интуитивно понятно, что когда quetient_times меньше 3, пик распределения будет сосредоточен вокруг 0,8. Когда quetient_times составляет около 3 или 3,05, пик будет между 0,8 и 0,5 (50%, 50%). Однако, когда quetient_times больше 3, пик будет сосредоточен только около 0,5. Как мы можем сделать это в Python?
Я видел это некоторое время назад, но не так сильно помогает. Я был бы признателен, если бы вы могли дать ему попробовать и спасибо.
Можете ли вы упростить свои примерные данные только до данных, которые вы пытаетесь подогнать для распределения, как более простую версию вопроса. Похоже, ваш код уже работает для того, что вы хотите сделать с необработанными данными.
Я никогда не слышал о бета-распределениях, но, возможно, stats.stackexchange.com/questions/68983/… будет чем-то полезен.
У меня нет доступа к данным. Можете ли вы как-то предоставить доступ к данным?






Попробуйте посмотреть здесь, так как на это, кажется, ответили. stats.stackexchange.com/questions/68983/…