Оцінка піків у часових рядах даних сигналу комірок


9

Я вимірюю наявність відповіді в вимірюваннях клітинного сигналу. Я спершу застосував алгоритм згладжування (Ханнінг) до часових рядів даних, а потім виявив піки. Що я отримую, це: часовий ряд відповіді на сигнал клітин

Якби я хотів зробити виявлення відповіді трохи об'єктивнішим, ніж "так, ви бачите підвищення в безперервному падінні", який би був найкращий підхід? Чи потрібно отримати відстань піків від базової лінії, визначене лінійною регресією?

(Я кодер пітона і майже не розумію статистики)

Дякую


4
Я не думаю, що існує "найкращий підхід". Існує багато способів аналізу або звітування про піки у часових рядах. Ваше запитання не дає поняття, щоб зрозуміти, що ви можете бути після. Можливо, ви проконсультуєтесь зі статтями у вашій галузі щодо натяків або орієнтирів.
ttnphns

Я не знаю, яку інформацію надати, щоб дати вам підказки. В основному у вас є графік, який має тенденцію до зменшення (ви отримуєте меншу відповідь від комірки з плином часу), і десь в середині ви можете побачити підвищення обсягу виробництва. Це все. Ви вважаєте, що в основному мені суб'єктивно сказати, що скажіть, на 10% збільшиться відповідь = те, про що я пішов?
Радек

1
Якщо припустити, що іноді ви бачите поведінку так, як показано, а іноді просто безперервно зменшуєтесь (приблизно), ви матимете набагато кращі шанси отримати розумну відповідь тут, якщо заміните один великий графік на 6-10 малих, де одна половина має це збільшення, а інша половина - ні.
AVB

Чи може він мати більше одного локального максимуму (удар)?
Емре

1
чому ти не опублікуєш свої дані, і я зроблю тріщину на цьому. Передбачувана фільтрація, яку ви та інші запропонували, має побічні ефекти. Якщо ви хочете об'єктивного способу впоратися з цим, я, можливо, зможу дати вам кілька покажчиків. Але все починається з даних, а не з презумпції!
IrishStat

Відповіді:


2

Отже, як ви хотіли від коментаря 25 жовтня, вам цікаво алгоритмічно знайти та охарактеризувати дві основні особливості: початковий занепад реакції з подальшим циклом посиленої реакції та подальшого занепаду. Я припускаю, що дані спостерігаються через дискретні часові інтервали.

Ось що б я спробував:

  1. Використовуйте таку процедуру, як numpy.ma.polyfit, щоб ввести , скажімо, поліном 4-го ступеня через ваші дані. Це повинно спричиняти початкове падіння з подальшим підйомом / падінням, але згладжувати численні, але незначні коливання. Сподіваємось, цей ступінь многочлену був би досить гнучким, щоб добре вмістити інші подібні серії. Головною метою, на мою думку, було б отримати функцію, яка відповідає основній схемі, яку ви шукаєте.
  2. Використовуйте підпрограми Python для обчислення похідної поліноміальної функції, придатної до даних. Прикладами підпрограм є scipy.misc. похідні та numpy.diff. Ви шукаєте значення часу, де перша похідна дорівнює нулю, що вказує на можливий локальний хв або макс функції. Другий похідною тест може бути використаний для підтвердження якого точка відповідає за хв або макс. Імовірно, у вас буде три такі точки, якщо графік, який ви показали, є репрезентативним. Зауважте, що проект мудреця тут може бути дуже цінним.
  3. У цей момент у вас з'являться значення часу, пов'язані з

    а. початок початкового занепаду

    б. початок підйому

    c. початок другого занепаду

Потім ви можете робити те, що хочете аналітично, щоб оцінити зміни.

Можливо, найкраще, щоб дані говорили самі за себе: в декількох серіях, коли ви застосовуєте цей метод, яка типова зміна розміру при підйомі, коли це зазвичай відбувається в період розпаду і скільки триває? І як виглядає розподіл цього підйому з точки зору того, де, наскільки великий і як довго? Знаючи ці статистичні дані, ви можете краще охарактеризувати певний підйом як такий, що знаходиться в межах толерантності, з огляду на те, де це відбувається, а також його розмір та тривалість. Ключовим моїм розумінням було б легко визначити, де ці зміни відбуваються. Решта того, що я описав, - це прямо підрахунок.


4
Поліноми не працюватимуть з цими даними, якщо ви не зробите ступінь настільки великим, що вони загрожують введенням помилкових піків.
whuber

Можливо, я повинен уточнити свою відповідь, що йому потрібно все-таки застосувати функцію Ханнінга, а потім виконати поліном. Вікно Hanning, можливо, доведеться змінити, щоб отримати більш гладку функцію. Або ви говорите, що поліном низького ступеня не буде працювати для згладжених даних?
Джош Геманн

5
Поліном низького ступеня, безумовно, не спрацює, Джош. Вам потрібно місцевіше плавніше - подумайте про ядро ​​гладке або певні види сплайнів - і воно не повинно бути поліномом, який має жахливі властивості. (Поліноми можуть ввести помилкові, величезні вершини між тим, що інакше виглядає добре
сприйнятим

@whuber, хоча я погоджуюся, що встановлення полінома в усьому світі було б, мабуть, поганою ідеєю, розширення функції Тейлора навколо точки - поліном низького ступеня, і тому коефіцієнти локальної квадратичної форми повинні відповідати оцінці першої похідної. Отже, чи не може місцева квадратична регресія була найбільш прямим, якщо не «найкращим» шляхом? f(x)=f(x0)+(xx0)f(x0)+(xx0)22!f(x0)+...
Самєр

3
Дякую за роз’яснення цього пункту, @Sameer. Я погоджуюсь, що місцевий примірник поліномів низького ступеня може бути ефективним, і я не мав на увазі протилежного в своєму попередньому коментарі (який мав на увазі "поліном" розуміти як глобальне пристосування). Щодо того, "це найкраще", я маю згоду з коментарем ttnphns до оригінального питання: все залежить. Я б очікував, що локальна квадратична відповідність із щільною серією даних дозволить приблизно наблизити гладкості ядра Гаусса, що дає нам один підхід. Ще одне відчуття "найкращого" - це BLUP кригінгу, який може бути схожим на сплайн.
whuber

1

Ось декілька ідей, але я відвернув голову, що може спрацювати ...

Похідні: якщо ви берете свій масив і віднімаєте елементи один від одного, щоб отримати масив на одну меншу кількість точок, але це перша похідна. Якщо ви тепер згладите це і шукаєте зміни знаку, це може виявити ваш удар.

Рухомі середні значення: Можливо, використання 2 відстаючих (експоненціальних або віконних) рухомих середніх значень може виявити великий удар, ігноруючи малий. По суті, ширина меншої середньої ковзної вікон повинна бути більшою, ніж ширина шишок, які ви хочете ігнорувати. Ширша EMA повинна бути ширшою, але не надто широкою, щоб виявити удар.

Ви шукаєте, коли вони перетинають і віднімають відставання (вікно / 2), і це оцінка, де ваш удар. http://www.stockopedia.com/content/trading-the-golden-cross-does-it-really-work-69694/

Лінійні моделі: зробіть ряд лінійних моделей достатньої ширини, які мають кілька невеликих шишок, скажімо 100 балів. Тепер цикл через набір даних генерує лінійні регресії на змінній X. Просто подивіться на коефіцієнт X і подивіться, де сталася велика зміна знаку. Це великий удар.

Сказане - це лише мою думку, і, мабуть, є кращі способи зробити це.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.