4. Далее я ввел функцию для детектирования аномалий. Именно здесь происходит проверка полученного значения. Будет ли последнее считаться отклонением или же соответствовать типичному поведению метрики. Для этого я построил доверительный интервал, границы которого рассчитал с помощью квартилей. Так, само значение межквартильного размаха представляет собой разницу между третьим и первым квартилем (df['iqr'] = df['q75'] - df['q25']). Верхняя граница – третий квартиль плюс межкартильный размах, нижняя граница – первый квартиль минус межквартильный размах. Если значение метрики выпадает за эти пределы, то оно считается аномальным. Стоит отметить, что такие метрики, как количество лайков и просмотров, активность пользователей зачастую отличаются особым поведением в течение суток. Например, поздней ночью их значения могут быть низкими, в то время, как утром и вечером достигать своего пика. Чтобы сгладить этот эффект и избежать ложных срабатываний, я использовал скользящее среднее.