Ocena pików w szeregach czasowych danych sygnałów komórkowych


9

Sprawdzam obecność odpowiedzi w pomiarach sygnałów komórkowych. Najpierw zastosowałem algorytm wygładzania (Hanning) do szeregów czasowych danych, a następnie wykryłem piki. Dostaję to: szereg czasowy odpowiedzi sygnału komórkowego

Gdybym chciał, aby wykrycie odpowiedzi było nieco bardziej obiektywne niż „tak, widzisz wzrost w ciągłym spadku”, jakie byłoby najlepsze podejście? Czy ma to na celu uzyskanie odległości pików od linii podstawowej określonej przez regresję liniową?

(Jestem programistą python i prawie nie rozumiem statystyk)

Dziękuję Ci


4
Nie sądzę, żeby istniało „najlepsze podejście”. Istnieje wiele sposobów analizowania lub raportowania pików w szeregach czasowych. Twoje pytanie nie daje żadnych wskazówek, aby zrozumieć, po co możesz być. Może konsultujesz artykuły w swojej dziedzinie, aby uzyskać wskazówki lub testy porównawcze.
ttnphns

Nie wiem, jakie informacje podać, aby dać ci wskazówki. Zasadniczo masz wykres, który wykazuje tendencję spadkową (z upływem czasu otrzymujesz mniej odpowiedzi z komórki), a gdzieś pośrodku możesz zauważyć wzrost produkcji. To jest to. Czy uważasz, że subiektywnie mówię, że powiedzmy, że wzrost odpowiedzi o 10% = po co mam?
Radek

1
Zakładając, że czasami widzisz takie zachowanie, jak pokazano, a czasem po prostu ciągłe zmniejszanie się (w przybliżeniu), będziesz mieć znacznie większe szanse na uzyskanie rozsądnej odpowiedzi tutaj, jeśli zastąpisz jeden duży wykres 6-10 małymi, gdzie połowa ma ten wzrost, a druga połowa nie.
AVB

Czy może mieć więcej niż jedno lokalne maksimum (nierówność)?
Emre

1
dlaczego nie opublikujesz swoich danych, a ja się tym zajmę. Domniemane filtrowanie, które sugerowaliście ty i inni, ma skutki uboczne. Jeśli chcesz obiektywny sposób poradzenia sobie z tym problemem, mogę dać ci kilka wskazówek. Ale wszystko zaczyna się od danych, a nie od domniemania!
IrishStat

Odpowiedzi:


2

Wygląda więc na to, że z komentarza z 25 października interesuje Cię algorytmiczne znalezienie i scharakteryzowanie dwóch głównych cech: początkowego zaniku odpowiedzi, a następnie cyklu zwiększonej odpowiedzi i kolejnego zaniku. Zakładam, że dane są obserwowane w dyskretnych odstępach czasu.

Oto, co bym spróbował:

  1. Użyj procedury takiej jak numpy.ma.polyfit, aby dopasować, powiedzmy, wielomian czwartego stopnia do twoich danych. To powinno uwzględniać początkowy spadek, po którym następuje wzrost / spadek, ale wygładzić liczne, ale niewielkie fluktuacje. Mamy nadzieję, że ten stopień wielomianu byłby wystarczająco elastyczny, aby dobrze pasował do innych podobnych serii. Myślę, że głównym celem byłoby uzyskanie funkcji uwzględniającej główny wzór, którego szukasz.
  2. Użyj procedur w języku Python do obliczenia pochodnej funkcji wielomianu dopasowanej do danych. Przykładowe procedury to scipy.misc.derivative i numpy.diff. Szukasz wartości czasu, w których 1. pochodna wynosi zero, co wskazuje na możliwe lokalne min. Lub maks. Funkcji. Drugi test pochodne mogą być stosowane do sprawdzania, które wskazują odpowiada min i max. Prawdopodobnie będziesz mieć trzy takie punkty, jeśli pokazany wykres jest reprezentatywny. Zauważ, że projekt mędrca może być tutaj bardzo cenny.
  3. W tym momencie będziesz mieć powiązane wartości czasu

    za. początek początkowego rozkładu

    b. początek wzrostu

    do. początek drugiego rozpadu

Następnie możesz zrobić, co chcesz analitycznie, aby ocenić zmiany.

Najlepiej, jeśli dane mówią same za siebie: w wielu seriach, kiedy zastosujesz tę metodę, jaka jest typowa zmiana rozmiaru podczas wzrostu, kiedy zwykle występuje w okresie zaniku i jak długo to trwa? A jak wygląda dystrybucja tego wzrostu, jeśli chodzi o to, gdzie, jak długo i jak długo? Znając te statystyki, możesz lepiej scharakteryzować konkretny wzrost jako mieszczący się w tolerancji, w odniesieniu do miejsca, w którym występuje, jak również jego wielkość i czas trwania. Z mojego zrozumienia wynika, że ​​łatwo jest zidentyfikować miejsce tych zmian. Reszta tego, co opisałem, jest prosta do obliczenia.


4
Wielomiany nie będą działać z tymi danymi, chyba że zrobisz tak duży stopień, że grożą one wprowadzeniem fałszywych pików.
whuber

Być może powinienem wyjaśnić moją odpowiedź, że nadal musi zastosować funkcję Hanninga, a następnie dopasować wielomian. Okno Hanninga może wymagać zmiany, aby uzyskać bardziej płynną funkcję. A może mówisz, że wielomian niskiego stopnia nie będzie działał dla wygładzonych danych?
Josh Hemann

5
Wielomian niskiego stopnia na pewno nie zadziała, Josh. Musisz lokalnego gładsza - pomyśl o jądro wygładzić lub niektórych rodzajów wypustami - i to musi nie być wielomianem, który ma straszne właściwości. (Wielomiany mogą wprowadzać fałszywe, ogromne szczyty między tym, co w innym przypadku wydaje się być dobrze wychowanymi seriami danych.)
whuber

@ Whuber, chociaż zgadzam się, że dopasowanie wielomianu globalnie byłoby prawdopodobnie złym pomysłem, rozszerzenie funkcji Taylora wokół punktu f(x)=f(x0)+(xx0)f(x0)+(xx0)22!f(x0)+...jest wielomianem niskiego stopnia, a zatem współczynniki z lokalnego dopasowania kwadratowego powinny odpowiadać oszacowaniu pierwszej pochodnej. Czy zatem lokalna regresja kwadratowa nie byłaby najprostszą, jeśli nie „najlepszą” drogą do przejścia?
Sameer

3
Dziękujemy za wyjaśnienie tej kwestii, @Sameer. Zgadzam się, że lokalne dopasowanie wielomianowe niskiego stopnia może być skuteczne i nie chciałem sugerować czegoś przeciwnego w moim poprzednim komentarzu (który chciał, aby „wielomian” był rozumiany jako dopasowanie globalne ). Jeśli chodzi o to, czy jest „najlepsze”, muszę zgodzić się z komentarzem ttnphns do pierwotnego pytania: wszystko zależy. Spodziewałbym się, że lokalne kwadratowe dopasowania z gęstą serią danych dokładnie przybliżą wygładzenia jądra Gaussa, co daje nam jedno podejście. Innym poczuciem „najlepszego” jest BLUP krigingu, który może być podobny do splajnu.
whuber

1

Oto kilka pomysłów, ale od razu z góry myślę, że może działać ...

Pochodne: Jeśli weźmiesz tablicę i odejmiesz elementy od siebie, aby uzyskać tablicę o jeden punkt mniej, ale to pierwsza pochodna. Jeśli wygładzisz to teraz i poszukasz zmiany znaku, może to wykryć twój guz.

Średnie kroczące: Być może użycie 2 opóźnionych (wykładniczych lub okienkowych) średnich kroczących może ujawnić duży guz, ignorując mały. Zasadniczo szerokość średniej ruchomej mniejszego okna musi być większa niż szerokość wypukłości, które chcesz zignorować. Szerszy EMA musi być szerszy, ale nie za szeroki, aby wykryć guz.

Szukasz, kiedy przecinają się i odejmują opóźnienie (okno / 2) i jest to oszacowanie, gdzie jest twój guz. http://www.stockopedia.com/content/trading-the-golden-cross-does-it-really-work-69694/

Modele liniowe: wykonaj serię modeli liniowych o wystarczającej szerokości, które mają kilka małych nierówności szerokości, powiedzmy 100 punktów. Teraz przejdź przez zestaw danych, generując regresje liniowe na zmiennej X. Wystarczy spojrzeć na współczynnik X i zobaczyć, gdzie nastąpiła zmiana dużego znaku. To duży guz.

Powyższe jest tylko przypuszczeniem z mojej strony i są prawdopodobnie lepsze sposoby na zrobienie tego.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.