Я пытаюсь захватить значения из дистрибутива ядра, который дает почти 0 и в конце хвоста. Моя попытка состоит в том, чтобы взять значения из функции kernel
, распределенные на временной шкале от -120 до 120, и сделать процентное изменение значений из ядра, так что тогда я могу объявить произвольное правило, что 10 последовательных отрицательных изменений и которые значение ядра почти равно 0, я могу объявить его как начальную точку от конца кривой.
Пример иллюстрации, для какой точки функции ядра я хочу получить.
в этом случае окончательное значение, которое я хотел бы получить, составляет около 300
, как выглядит мой фрейм данных (это не те же примерные значения выше):
df
id event_time
1 2
1 3
1 3
1 5
1 9
1 10
2 1
2 1
2 2
2 2
2 5
2 5
# my try
def find_value(df):
if df.shape[0] == 1:
return df.iloc[0].event_time
kernel = stats.gaussian_kde(df['event_time'])
time = list(range(-120,120))
a = kernel(time)
b = np.diff(a) / a[:-1] * 100
пока что у меня есть a, который представляет ось Y на графике, и b, который представляет изменение в Y. Причина, по которой я сделал это, состоит в том, чтобы сделать logi c, сделанный при попрошайничестве, но не знаю, как закодируйте это. после написания функции я думал об использовании groupby
и apply