-
1. Data: 2010-08-24 10:12:56
Temat: przewidywanie wartości cyklicznego wykresu
Od: Mark <m...@g...com>
Cześć,
Załóżmy, że mamy dane, które układają się w sposób cykliczny, np.
liczba opadów w danym mieście z kilku lat, czy sprzedaż ołówków w
skali tygodniowej. Jak się zrobi wykres słupkowy, to wyraźnie widać
cykliczną tendecję.
Jednak: Dane mogą być niekompletne. Cykl może się zmieniać - może się
nieco skracać, wydłużać. Wartości na wykresie mogą układać się w
ładne cykle, ale czasami mogą być niespodziewane piki.
Mając taki wykres chciałbym podjąć próbę przewidzenia wartości w
przyszłości. Oczywiście jak każde przewidywanie jest obarczone błędem
i ryzykiem (zdaję sobie z tego sprawę).
Mając taki wykres w miarę intuicyknie można dorysować kolejny cykl
ołówkiem..
Jakiego algorytmu, metody powinienem użyć do przewidywania wartości
cyklicznego wykresu ?
(mając np. 10 cykli wstecz chciałbym przewidzieć jeden do przodu).
Dzięki za pomoc !
-
2. Data: 2010-08-24 10:20:59
Temat: Re: przewidywanie wartości cyklicznego wykresu
Od: Segmentation Fault <c...@o...eu>
On 08/24/2010 12:12 PM, Mark wrote:
> Cześć,
>
> Załóżmy, że mamy dane, które układają się w sposób cykliczny, np.
> liczba opadów w danym mieście z kilku lat, czy sprzedaż ołówków w
> skali tygodniowej. Jak się zrobi wykres słupkowy, to wyraźnie widać
> cykliczną tendecję.
>
> Jednak: Dane mogą być niekompletne. Cykl może się zmieniać - może się
> nieco skracać, wydłużać. Wartości na wykresie mogą układać się w
> ładne cykle, ale czasami mogą być niespodziewane piki.
>
> Mając taki wykres chciałbym podjąć próbę przewidzenia wartości w
> przyszłości. Oczywiście jak każde przewidywanie jest obarczone błędem
> i ryzykiem (zdaję sobie z tego sprawę).
> Mając taki wykres w miarę intuicyknie można dorysować kolejny cykl
> ołówkiem..
>
> Jakiego algorytmu, metody powinienem użyć do przewidywania wartości
> cyklicznego wykresu ?
> (mając np. 10 cykli wstecz chciałbym przewidzieć jeden do przodu).
>
> Dzięki za pomoc !
zacznij od http://en.wikipedia.org/wiki/Fast_Fourier_transform
Ale może się okazać, że tylko Ci się wydaje, że coś jest cykliczne.
Wtedy możesz poeksperymentować z wróżeniem z fusów ala analiza techniczna ;)
-
3. Data: 2010-08-24 10:58:15
Temat: Re: przewidywanie wartości cyklicznego wykresu
Od: Mark <m...@g...com>
On 24 Sie, 12:20, Segmentation Fault <c...@o...eu> wrote:
> On 08/24/2010 12:12 PM, Mark wrote:
[...]
> zacznij odhttp://en.wikipedia.org/wiki/Fast_Fourier_transfor
m
>
> Ale może się okazać, że tylko Ci się wydaje, że coś jest cykliczne.
> Wtedy możesz poeksperymentować z wróżeniem z fusów ala analiza techniczna ;)
Z tego co mi się wydaje, szybka transformata fouriera zakłada, że
sygnał składa się z sinusoid i na takie sinusoidy rozbija sygnał.
Jednak w moim przypadku, okres trwania cyklu może się zmieniać - np. o
15% i nie jestem pewny jak wtedy FFT się zachowa.. ?
Co do analizy technicznej - jaki algorytm/metodę polecacie w takim
przypadku ?
Pozdrawiam
-
4. Data: 2010-08-24 14:33:02
Temat: Re: przewidywanie wartości cyklicznego wykresu
Od: Segmentation Fault <c...@o...eu>
On 08/24/2010 12:58 PM, Mark wrote:
> On 24 Sie, 12:20, Segmentation Fault <c...@o...eu> wrote:
>> On 08/24/2010 12:12 PM, Mark wrote:
> [...]
>> zacznij odhttp://en.wikipedia.org/wiki/Fast_Fourier_transfor
m
>>
>> Ale może się okazać, że tylko Ci się wydaje, że coś jest cykliczne.
>> Wtedy możesz poeksperymentować z wróżeniem z fusów ala analiza techniczna ;)
>
> Z tego co mi się wydaje, szybka transformata fouriera zakłada, że
> sygnał składa się z sinusoid i na takie sinusoidy rozbija sygnał.
> Jednak w moim przypadku, okres trwania cyklu może się zmieniać - np. o
> 15% i nie jestem pewny jak wtedy FFT się zachowa.. ?
FFT daje Ci informację ile jest jakiej składowej w całej próbce. Jeśli
chcesz uchwycić zmiany w czasie, możesz robić FFT na mniejszych wielu
krótszych próbkach ( ale wtedy stracisz "najdłuższe" składowe).
Poczytaj też ogólnie o szeregach czasowych ( w tym o metodach opartych
na falkach). Konkretnej metody Ci nie doradzę, nie znam się na tym.
-
5. Data: 2010-08-24 19:59:39
Temat: Re: przewidywanie wartości cyklicznego wykresu
Od: "slawek" <s...@h...pl>
Użytkownik "Segmentation Fault" <c...@o...eu> napisał w
wiadomości grup dyskusyjnych:4c73d821$0$22796$6...@n...neostrad
a.pl...
> FFT daje Ci informację ile jest jakiej składowej w całej próbce. Jeśli
> chcesz uchwycić zmiany w czasie, możesz robić FFT na mniejszych wielu
> krótszych próbkach ( ale wtedy stracisz "najdłuższe" składowe).
Trochę nie tak. Polecam encyklopedię Popularkisa, nic jej przeczytanie nie
daje, ale można się o nią oprzeć, bo gruba książka (CRC wydało). W Googlach
znajdziecie.
FFT - NIE JEST TRANSFORMACJĄ FOURIERA - WBIJCIE TO SOBIE DO GŁOWY RAZ NA
ZAWSZE.
W Polsce i nie tylko w Polsce są książki, których autorzy nie potrafią tego
zrozumieć. Liczba artykułów naukowych ze źle obliczoną transformacja
Fouriera... jest przerażająca!
Transformacja Fouriera jest transformacją całkową, bardzo przyjemną, nieco
bardziej popularną od transformacji Laplace'a albo Z. Po prostu trzeba
policzyć całkę z iloczynu danej
funkcji oraz czynnika E^(I omega t), gdzie I^2 = -1. Do tego dochodzi
jeszcze czynnik 2 Pi w którymś miejscu, a bywa że zamiast omega jest 2 Pi f
albo jeszcze coś innego. Nietrudno znaleźć definicję, wszędzie pełno
rozmaitych wzorów i twierdzeń.
Jeżeli spróbować liczyć tę całkę - czyli transformację Fouriera - dla
dyskretnych danych - czyli po prostu numerycznie - to wychodzi taki mniej
więcej wzorek:
(coś) Suma[ czegoś(częstotliwość), po czymś]
FFT daje jako wynik, tak już tradycyjnie jest to zrobione, wartości tej
sumy - czyli nie zawiera czynnika "coś" ! (W istocie rzeczy jest to krok z
jakim próbkowane są dane wymnożony przez "2Pi do jakiejś potęgi", ale to
nieistotne na tym poziomie zagłębiania się w FFT.)
W dodatku, tradycyjnie, FFT zwraca wartości w tablicy w porządku
"warp-around", tj. najpierw pół tablicy idzie dla rosnących częstości, a
drugie pół tablicy jest wypełniane od końca dla malejących UJEMNYCH
częstości.
W dodatku aby liczyć FFT poprawnie, trzeba uwzględnić intermodulację (łół,
ładne słowo - oznacza po polsku angielski termin aliasing), trzeba umieć
zastosować funkcję okna. Trzeba pamiętać, iż "zwykły" algorytm FFT wymaga
równomiernie rozmieszczonych danych wejściowych w ilości 2^n itd. itp.
Jeszcze raz - FFT to klocek, przy pomocy którego /można/ obliczyć
transformację Fouriera - ale potrzeba jeszcze: policzyć jak transformują się
odcięte; przeskalować przez "coś"; rozpakować "warp-around". Tymczasem
rozmaici jeniusze potrafią po prostu jako transformację Fouriera rzucić
wynik funkcji fft() z Matlab-a... no bo co im tam...
Aby było ciekawiej - do niektórych zastosowań (np. liczenie splotu) można
ominąć niektóre rzeczy - np. dziwaczne zwarpowanie danych - przy
transformacji odwrotnej samo się odkręci. Dlatego opłaca się aby FFT było
jakie jest. Ale pamiętajcie - to nie jest prawdziwa transformacja Fouriera!
To taki sam półprefabrykat jak pół kilo mięsa z kością z którego robi się
schabowe.
> Poczytaj też ogólnie o szeregach czasowych ( w tym o metodach opartych
> na falkach). Konkretnej metody Ci nie doradzę, nie znam się na tym.
-
Falki są zajebiaszcze. Ale! NAJPIERW PRZECZYTAĆ KSIĄŻECZKĘ pani Ingrid D.
(której - patrz http://www.pacm.princeton.edu/~ingrid/ ), "Ten lectures..."
SIAM.
Dlaczego? Bo cała reszta jest niemal bezwartościowa przy tym. Albo mnóstwo
lania wody, albo - gorzej! - silenie się na "naukowość". Ok, jest jeszcze
parę niezłych autorów, każdy jednak zawsze cytuje Ingrid - więc coś w tym
jest. Ostrzegam! Tam są całki. I nie tylko.
Co da przeczytanie tej książki? Np. byłem sobie raz na pewnej obronie
pewnego doktoratu... komisja łykała niczym młode pelikany opowieści o tym,
jak to po sprawdzeniu że dany sygnał daje się obrabiać falkami jakimiś tam,
sprawdzane było czy da się obrabiać falkami innymi. Tak z tuzin falek
sprawdzano, pół roku, każdymi - zadziwiające - się dało! Pół pracy o tym
było. No cóż, twierdzenie o równoważności wszystkich transformacji falkowych
jest w jednym z pierwszych rozdziałów wspomnianej książki... ale
szczęśliwie, komisja nie czytała, i dobrze jej tak.
Stosunkowo proste jest przerzucenie szeregu czasowego falkami w "scroll
map". To na dzień dobry wystarcza niemal do wszystkiego, jest dużo lepsze
niż FFT. Tak, jest wavelet toolbox w Matlabie. Jaką falkę wybrać? Patrz
wyżej.
A teraz jeszcze jedno. Szeregi czasowe szeregami czasowymi. Jednak wątpię,
czy bez znajomości chaosu da się coś zrobić naprawdę dobrze. Aby wykryć
chaos trzeba albo bawić się w rekonstruowanie atraktorów i takie tam, albo
po prostu - jeżeli to możliwe - policzyć transformację Fouriera (widmo mocy
na ten przykład wyliczyć sobie).
I jeszcze jedno - jeżeli wykres jest generowany przez istoty rozumne i z
wolną wolą - to kupa. Przewidywanie będzie tak dobre, jak gapienie w szklaną
kulę. Polecam lekturę "Tono Bungay", taka książka, tam jest prześlicznie
opisane, co jak i dlaczego. Google wiedzą kto napisał, a nawet podsuną
streszczenie.
slawek
-
6. Data: 2010-08-24 23:10:50
Temat: Re: przewidywanie wartości cyklicznego wykresu
Od: bartekltg <b...@g...com>
On 24 Sie, 21:59, "slawek" <s...@h...pl> wrote:
> (coś) Suma[ czegoś(częstotliwość), po czymś]
>
> FFT daje jako wynik, tak już tradycyjnie jest to zrobione, wartości tej
> sumy - czyli nie zawiera czynnika "coś" ! (W istocie rzeczy jest to krok z
> jakim próbkowane są dane wymnożony przez "2Pi do jakiejś potęgi", ale to
> nieistotne na tym poziomie zagłębiania się w FFT.)
A wiesz, ze to cos w transformacie Fouriera jest rozne
w zaleznosci od 'gatunku' tranfformaty:)
Wydajesz sie tez mieszac transformate fouriera (calkowa)
z dyskretną TF. A od tego nalezalo by chyba zaczac,
jesli zwracasz uwage na neiscislosci w uzyciu i terminologii.
> W dodatku, tradycyjnie, FFT zwraca wartości w tablicy w porządku
> "warp-around", tj. najpierw pół tablicy idzie dla rosnących częstości, a
> drugie pół tablicy jest wypełniane od końca dla malejących UJEMNYCH
> częstości.
No jak to, przeciez liczymy splot z exp(ikn/L) dla wiekszego k;-)
A na serio, to chyba kazdy przytomny to zauwaza.
pozdr
bartekltg
-
7. Data: 2010-08-24 23:16:14
Temat: Re: przewidywanie wartości cyklicznego wykresu
Od: bartekltg <b...@g...com>
On 24 Sie, 21:59, "slawek" <s...@h...pl> wrote:
> FFT - NIE JEST TRANSFORMACJĄ FOURIERA - WBIJCIE TO SOBIE DO GŁOWY RAZ NA
> ZAWSZE.
A jak juz napieramy na terminologie, FFT to konkretny algorytm
realizacji dyskretnej transformty fouriera, ale obie mozna
spokojnie nazwac transformata fouriera, bo _są_ transformatami
fouriera na odpowiedniej przestrzeni (wektorow |C^N).
I to, ze algorytm FFT wymaga 2^n probek tez nie jest prawda,
ale dodaleś przymiotnik 'zwykla' to moze wszedzie jest
zaimplementowana niezwykla:)
pozdrawiam
bartekltg
-
8. Data: 2010-08-25 07:12:36
Temat: Re: przewidywanie wartości cyklicznego wykresu
Od: "slawek" <s...@h...pl>
Użytkownik "bartekltg" <b...@g...com> napisał w wiadomości grup
dyskusyjnych:b1279461-b4dc-4b12-8c03-7b9b1d3b2c68@m1
g2000yqo.googlegroups.com...
> A wiesz, ze to cos w transformacie Fouriera jest rozne
> w zaleznosci od 'gatunku' tranfformaty:)
A czy ty, Bartku-głupku-wioskowy, przeczytałeś już "Transforms and
Applications Handbook" z serii Electrical Engineering Handbook wydawanej
przez CRC?
Pytasz za co? No za to, że nie zgooguglałeś literatury jaką podawałem.
> Wydajesz sie tez mieszac transformate fouriera (calkowa)
> z dyskretną TF. A od tego nalezalo by chyba zaczac,
> jesli zwracasz uwage na neiscislosci w uzyciu i terminologii.
O, jeszcze jeden idiota, który nie ma pojęcia o matematyce - myśli, że są
"dwie" transformacje Fouriera - taka z podręcznika matematyki i taka z
matlabów.
slawek
-
9. Data: 2010-08-25 07:35:42
Temat: Re: przewidywanie wartości cyklicznego wykresu
Od: "slawek" <s...@h...pl>
Użytkownik "bartekltg" <b...@g...com> napisał w wiadomości grup
dyskusyjnych:d4ea9b3b-40aa-415a-8c64-f6f5630588e6@l2
0g2000yqm.googlegroups.com...
> A jak juz napieramy na terminologie, FFT to konkretny algorytm
> realizacji dyskretnej transformty fouriera, ale obie mozna
> spokojnie nazwac transformata fouriera, bo _są_ transformatami
> fouriera na odpowiedniej przestrzeni (wektorow |C^N).
"Spokojnie" to może je tak nazywać idiota-administrator od wymiany papieru w
drukarkach.
Wystarczy prowadzić obliczenia na konkretnych fizycznych zmiennych, z
użyciem jednostek, aby zrozumieć o co biega. No, ale taki "informatyk" to
nigdy tego nie robi - dla niego liczy się tylko to, że ma w bibliotece
procedur coś ze słowem Fourier w środku. Jak to zastosuje do danych
wejściowych - to na wyjściu będzie miał "fouriera".
No, Bartuś, dla ciebie to czy zarabiasz 100 tysięcy euro, 100 tysięcy
dolarów, 100 tysięcy złotych czy 100 tysięcy koron - jest nieważne - prawda?
Może być nawet 100 tysięcy groszy, ważne że cyferki są takie same, no nie?
FFT wypindala wynik bez wymnożenia przez krok, jak zaczniesz zmieniać krok,
to wyniki będą ci jeździć w te i we te. Dokładnie tak samo, jak zmiana
waluty bez zmiany cyferek na kontrakcie.
Pomijając rzecz najoczywistszą - Fourier dawno był martwy, gdy powstawał
FFT.
> I to, ze algorytm FFT wymaga 2^n probek tez nie jest prawda,
> ale dodaleś przymiotnik 'zwykla' to moze wszedzie jest
> zaimplementowana niezwykla:)
Ciekawe. Z tego co pamiętam to algorytm Cooley'a-Turkey'a wymaga jak
najbardziej. Oczywiście, to nie jedyny sposób liczenia - są rozmaite
modyfikacje, ulepszenia itd. itp. Nie zmienia to (dość oczywistego) faktu,
że na wersję 2^n można po prostu trafić - a wersje z np. nieparzystą liczbą
elementów 2 m + 1 niejasno określają jaki znak ma częstotliwość przy
odpowiadający m+1, czyli dokładnie ze środeczka. Nic strasznego, ale kolejna
rzecz o której trzeba pamiętać.
slawek
-
10. Data: 2010-08-25 08:14:05
Temat: Re: przewidywanie wartości cyklicznego wykresu
Od: "marek.hudyma" <m...@g...com>
[.....]
Dziękuję za zainteresowanie i dyskusję na temat Fouriera. Aż wstyd się
przyznać, po skończeniu politechniki, niewiele mi już zostało w głowie
z tego tematu.
Jak każdy inteligentny człowiek, jestem w stanie powtórzyć sobie
gruntownie wiedzę z tego zakresu.
Moje pytanie brzmi, czy powinienem ??
W moim problemie "cykl" próbek może wahać się o kilka procent (oceniam
że raz cykl może być dłuższy raz krótszy do 15-20%). Czasem może
brakować próbek, a czasmi 'piki' mają nie być brane pod uwagę.
Czy w takim przypadku Fourier jest w stanie mi pomóc ?
Dziękuję za podpowiedź