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.
źródło
Odpowiedzi:
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.
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.
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.
źródło
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ę):
źródło
To nie będzie bardzo satysfakcjonująca odpowiedź, ale oto moje zdanie ...
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ś:
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.
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 .
źródło
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ę.
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.
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.
źródło
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.
źródło