Jak scalać dane miesięczne, dzienne i tygodniowe?

11

Trendy Google zwracają cotygodniowe dane, dlatego muszę znaleźć sposób na połączenie ich z danymi dziennymi / miesięcznymi.

Do tej pory zrobiłem podział każdej serii na codzienne dane, na przykład:

od:

2013-03-03 - 2013-03-09 37

do:

2013-03-03 37 2013-03-04 37 2013-03-05 37 2013-03-06 37 2013-03-07 37 2013-03-08 37 2013-03-09 37

Ale to sprawia, że ​​mój problem jest bardzo skomplikowany. Próbowałem przewidzieć wyszukiwania w Google na podstawie wartości z ostatnich 6 miesięcy lub 6 wartości w danych miesięcznych. Codzienne dane oznaczałyby pracę nad 180 przeszłymi wartościami. (Mam 10 lat danych, więc 120 punktów w danych miesięcznych / 500+ w danych tygodniowych / 3500+ w danych dziennych)

Innym podejściem byłoby „łączenie” danych dziennych z danymi tygodniowymi / miesięcznymi. Ale z tego procesu wynikają pewne pytania. Niektóre dane można uśrednić, ponieważ ich suma coś reprezentuje. Na przykład opady deszczu, ilość deszczu w danym tygodniu będzie sumą kwot na każdy dzień składający się na tygodnie.

W moim przypadku mam do czynienia z cenami, stawkami finansowymi i innymi rzeczami. W przypadku cen powszechne w mojej dziedzinie jest uwzględnianie wielkości wymiany, tak więc tygodniowe dane byłyby średnią ważoną. W przypadku stawek finansowych jest to nieco bardziej skomplikowane, ponieważ niektóre formuły wymagają budowania stawek tygodniowych na podstawie stawek dziennych. W przypadku innych rzeczy nie znam podstawowych właściwości. Myślę, że te właściwości są ważne, aby uniknąć bezsensownych wskaźników (na przykład średnia stóp fianialnych byłaby niecelowa).

Więc trzy pytania:

W przypadku znanych i nieznanych właściwości, jak przejść od danych dziennych do tygodniowych / miesięcznych?

Czuję, że dzielenie danych tygodniowych / miesięcznych na dane dzienne, tak jak zrobiłem, jest nieco błędne, ponieważ wprowadzam ilości, które nie mają sensu w prawdziwym życiu. Więc prawie to samo pytanie:

W przypadku znanych i nieznanych właściwości, jak przejść od danych tygodniowych / miesięcznych do dziennych?

I na koniec : gdy otrzymamy dwa szeregi czasowe z różnymi przedziałami czasowymi, co jest lepsze: stosowanie najniższego lub największego przedziału czasowego? Myślę, że jest to kompromis między liczbą danych a złożonością modelu, ale nie widzę żadnego mocnego argumentu do wyboru między tymi opcjami.

Edycja: jeśli znasz narzędzie (w R Python, a nawet Excel), aby zrobić to łatwo, byłoby bardzo mile widziane.

lcrmorin
źródło
w przypadku Pythona standardowym narzędziem są pandy. Został specjalnie zaprojektowany do obsługi szeregów czasowych danych finansowych. pandy czasowe
seanv507
Chcesz rozszerzyć nieco pojęcie „nieznana własność”?
TheGrimmScientist

Odpowiedzi:

8

w przypadku dwóch szeregów czasowych z różnymi przedziałami czasowymi, co jest lepsze: stosowanie najniższego lub największego przedziału czasowego?

W przypadku analizy szeregów czasowych należy wykonać obie czynności: uzyskać najwyższy możliwy poziom szczegółowości z codziennym zestawem danych, a także powtórzyć analizę z zestawem miesięcznym. Dzięki miesięcznemu zestawowi danych masz 120 punktów danych, co wystarcza do uzyskania modelu szeregów czasowych nawet przy sezonowości danych.

W przypadku znanych i nieznanych właściwości, jak przejść od danych dziennych do tygodniowych / miesięcznych?

Aby uzyskać powiedzmy dane tygodniowe lub miesięczne z danych dziennych, możesz użyć funkcji wygładzania. W przypadku danych finansowych możesz użyć średniej ruchomej lub wygładzania wykładniczego, ale jeśli te nie działają dla twoich danych, możesz użyć funkcji wygładzania splajnu „smooth.spline” w R: https://stat.ethz.ch/R -manual / R-łatane / library / stats / html / smooth.spline.html

Zwrócony model będzie miał mniej hałasu niż oryginalny dzienny zestaw danych i można uzyskać wartości dla żądanych punktów czasowych. Wreszcie te punkty danych można wykorzystać w analizie szeregów czasowych.

W przypadku znanych i nieznanych właściwości, jak przejść od danych tygodniowych / miesięcznych do dziennych?

Aby uzyskać dane dzienne, gdy masz dane miesięczne lub tygodniowe, możesz użyć interpolacji. Po pierwsze, należy znaleźć równanie opisujące dane. W tym celu należy wykreślić dane (np. Cenę w czasie). Kiedy czynniki są znane, na to równanie powinny mieć wpływ te czynniki. Gdy czynniki nie są znane, możesz użyć równania najlepszego dopasowania. Najprostsza byłaby funkcja liniowa lub częściowa funkcja liniowa, ale w przypadku danych finansowych nie zadziała to dobrze. W takim przypadku należy rozważyć częściową interpolację splajnu sześciennego. Ten link zawiera bardziej szczegółowe informacje na temat możliwych funkcji interpolacji: http://people.math.gatech.edu/~meyer/MA6635/chap2.pdf .

W R istnieje metoda wykonywania interpolacji danych szeregów czasowych. Tutaj utworzysz wektor z powiedzonymi wartościami tygodniowymi i NA w przerwach dla wartości dziennych, a następnie użyjesz funkcji „interpNA”, aby uzyskać interpolowane wartości dla NA. Jednak ta funkcja używa funkcji „przybliżonej”, aby uzyskać interpolowane wartości, która stosuje interpolację liniową lub stałą. Aby wykonać interpolację splajnu sześciennego w R, należy zamiast tego użyć funkcji „splinefun”.

Należy pamiętać, że modele szeregów czasowych zwykle dokonują pewnego rodzaju uśrednienia, aby prognozować przyszłe wartości, niezależnie od tego, czy chodzi między innymi o wygładzanie wykładnicze lub metody zintegrowanej średniej ruchomej z automatyczną regresją (ARIMA). Tak więc model przedziałów czasowych do prognozowania wartości dziennych może nie być najlepszym wyborem, ale modele tygodniowe lub miesięczne mogą być lepsze.

gchaks
źródło
Wydaje się być praktyczną odpowiedzią. Nie jestem pewien, czy ma to zastosowanie do finansowych szeregów czasowych z powodu arbitrażu.
lcrmorin
Myślę, że odpowiedzi na twoje pytania są nadal aktualne. W przypadku modelu timeseries warto przyjrzeć się modelom ARCH (AutoRegressive Conditional Heteroskedasticity).
gchaks
interpolując przy użyciu np. splajnu sześciennego, w finansowych szeregach czasowych, czy nie wprowadzałbyś uprzedzeń dotyczących przyszłości? myślę, że może to być szczególnie ważne, jeśli wdrażasz model uczenia maszynowego?
tsando
5

Nie jestem ekspertem w tej dziedzinie, ale wierzę, że twoje pytanie dotyczy agregacji i dezagregacji szeregów czasowych . Jeśli tak, oto niektóre, miejmy nadzieję, istotne zasoby, które mogą być pomocne w rozwiązaniu problemu (pierwsze pięć elementów jest główne, ale reprezentatywne, a ostatnie dwa uzupełniają się):

Aleksandr Blekh
źródło
2

To nie będzie bardzo satysfakcjonująca odpowiedź, ale oto moje zdanie ...

W przypadku znanych i nieznanych właściwości, jak przejść od danych dziennych do tygodniowych / miesięcznych?

W przypadku znanych i nieznanych właściwości, jak przejść od danych tygodniowych / miesięcznych do dziennych?

Ta sama odpowiedź dla obu: nie możesz tego zrobić dla nieznanych właściwości, a dla znanych właściwości będzie to zależeć od sposobu obliczenia wartości.

Jak wspomniałeś:

(na przykład średnia stóp fiancial byłaby niecelowa)

Nie ma jednej transformacji, która byłaby odpowiednia we wszystkich przypadkach, niezależnie od tego, czy właściwości / wartości są znane, czy nieznane. Nawet przy znanych właściwościach prawdopodobnie będziesz potrzebować unikalnej transformacji dla każdego typu: średnia, mediana, tryb, min, maks, boolean itp.

w przypadku dwóch szeregów czasowych z różnymi przedziałami czasowymi, co jest lepsze: stosowanie najniższego lub największego przedziału czasowego?

O ile to możliwe, staraj się zachować pełną szczegółowość najmniejszego możliwego kroku. Zakładając, że wiesz, jak przekształcić wartości, zawsze możesz zrolować kroki (np. Z dnia na miesiąc, z miesiąca na rok) ... ale niekoniecznie będziesz w stanie odtworzyć mniejsze kroki z większych po stratnej konwersji .

Charlie Greenbacker
źródło
2

W przypadku znanych i nieznanych właściwości, jak przejść od danych dziennych do tygodniowych / miesięcznych?

Zbiór.

Na przykład masz liczbę wyszukiwań „widżetów” każdego dnia. Zsumuj dzienne sumy za miesiąc, aby uzyskać sumy miesięczne. Chciałbym zobaczyć więcej szczegółów na temat rzeczywistych danych gromadzonych przy każdej szczegółowości, aby uzyskać bardziej kompletną wersję.

W przypadku znanych i nieznanych właściwości, jak przejść od danych tygodniowych / miesięcznych do dziennych?

Nie możesz

W fizyce porównywalnym pomysłem jest częstotliwość Nyquista . Ogólna idea jest taka, że ​​nie można dodać więcej informacji niż to, co już masz w swoich danych, bez wniesienia większej ilości danych. Biorąc pod uwagę dzień, w którym ktoś uruchomił kwerendę, w jaki sposób można określić, o której godzinie zapytanie zostało uruchomione? Możesz być w stanie wyciągnąć pewne wnioski, ale jedynym sposobem na odpowiedź na pytanie jest bezpośrednie lub pośrednie wprowadzenie większej ilości informacji do systemu. Są rzeczy, które możesz zrobić, aby podejmować świadome domysły na temat dziennego stanu zmiennych miesięcznych (jak wspomniano w gchakach, interpolacja), ale twoje dane są zasadniczo zasadniczo miesięczne, tak aby wyglądały codziennie.

W przypadku dwóch szeregów czasowych z różnymi przedziałami czasowymi, co jest lepsze: stosowanie najniższego lub największego przedziału czasowego?

To całkowicie zależy od tego, na co próbujesz odpowiedzieć.

Mniejsza ziarnistość będzie bardziej wrażliwa na hałas i inne anomalie. Lager będzie mógł bardziej pewnie odpowiadać na pytania, ale utraci część swojej przydatności. Na przykład, jeśli chcesz zobaczyć, kiedy ludzie zaczynają szukać miejsc do weekendowych planów, aby wiedzieć, kiedy rozpocząć kampanie marketingowe dla nowego klubu nocnego, powinieneś przyjrzeć się codziennym danym, jeśli nie mniejszym. Jeśli patrzysz na ogólną popularność klubów nocnych, aby dowiedzieć się, w kogo chcesz zainwestować, wtedy miesięcznie prawdopodobnie byłby lepszy.

TheGrimmScientist
źródło
2

Możliwość agregowania danych w oparciu o segmenty daty jest dziecinnie proste przy użyciu oprogramowania Tableau. Wystarczy podłączyć dane do narzędzia, a następnie przeciągnąć i upuścić wymiary metryki i daty do obszaru treści raportu. Tableau natychmiast przygotuje na bieżąco zbiorcze wizualizacje i / lub szczegółowe tabele danych. Możesz grupować / sumować według roku, kwartału, miesiąca, tygodnia, dnia, godziny itd. (Standardowa, wbudowana, gotowa do użycia funkcja oferowana przez narzędzie)

Ponadto, jeśli chcesz dołączyć dodatkowe dane później (co zakładam, co masz na myśli przez „nieznane właściwości”), możesz zaimportować inny zestaw danych i łatwo dołączyć go do pierwszego, pod warunkiem, że zawiera także daty.

Polecam sprawdzenie darmowej wersji, która moim zdaniem nazywa się Tableau Public.

Deepraj Kunnath
źródło