Monday 11 December 2017

Przeprowadzka średnio losowo spacerowa


Modele z ruchomą średnią i wykładniczą wygładzaniem Jako pierwszy krok w wychodzeniu poza modele średnie, modele spacerów losowych i modele trendów liniowych, wzorce i trendy niesezonowe można ekstrapolować za pomocą modelu ruchomego lub wygładzającego. Podstawowym założeniem modeli uśredniania i wygładzania jest to, że szeregi czasowe są lokalnie stacjonarne z wolno zmieniającą się średnią. W związku z tym bierzemy średnią ruchomą (lokalną), aby oszacować aktualną wartość średniej, a następnie wykorzystać ją jako prognozę na najbliższą przyszłość. Można to uznać za kompromis pomiędzy modelem średnim a modelem losowego chodzenia bez dryftu. Ta sama strategia może zostać wykorzystana do oszacowania i ekstrapolacji lokalnego trendu. Średnia ruchoma jest często nazywana wersją quotsmoothedquot oryginalnej serii, ponieważ krótkoterminowe uśrednianie ma wpływ na wygładzenie nierówności w oryginalnej serii. Dostosowując stopień wygładzenia (szerokość średniej ruchomej) możemy mieć nadzieję na uzyskanie optymalnej równowagi między wydajnością modeli średniej i losowej. Najprostszym rodzajem modelu uśredniającego jest. Prosta (równo ważona) Średnia ruchoma: Prognoza wartości Y w czasie t1, która jest dokonywana w czasie t, jest równa prostej średniej z ostatnich obserwacji: (Tu i gdzie indziej będę używał symbolu 8220Y-hat8221, aby stać dla prognozy szeregu czasowego Y dokonanego najwcześniej jak to możliwe wcześniej przez dany model.) Ta średnia jest wyśrodkowana w okresie t - (m1) 2, co oznacza, że ​​oszacowanie średniej lokalnej będzie opóźniać się w stosunku do rzeczywistej wartości wartość średniej lokalnej o około (m1) 2 okresy. Tak więc, mówimy, że średni wiek danych w prostej średniej kroczącej wynosi (m1) 2 w stosunku do okresu, dla którego obliczana jest prognoza: jest to ilość czasu, o którą prognozy będą się opóźniać za punktami zwrotnymi w danych . Na przykład, jeśli uśrednisz 5 ostatnich wartości, prognozy będą o około 3 opóźnienia w odpowiedzi na punkty zwrotne. Zauważ, że jeśli m1, model prostej średniej ruchomej (SMA) jest równoważny modelowi chodzenia swobodnego (bez wzrostu). Jeśli m jest bardzo duże (porównywalne z długością okresu szacowania), model SMA jest równoważny modelowi średniemu. Podobnie jak w przypadku każdego parametru modelu prognostycznego, zwyczajowo koryguje się wartość k, aby uzyskać najlepsze dopasowanie do danych, tj. Średnio najmniejsze błędy prognozy. Oto przykład serii, która wydaje się wykazywać losowe fluktuacje wokół wolno zmieniającej się średniej. Po pierwsze, spróbujmy dopasować go do modelu losowego spaceru, który jest odpowiednikiem prostej średniej kroczącej z 1 słowa: model losowego spaceru bardzo szybko reaguje na zmiany w serii, ale czyniąc to, wybiera dużą część quota w tekście. dane (fluktuacje losowe), a także quotsignalquot (średnia miejscowa). Jeśli zamiast tego spróbujemy prostej średniej kroczącej z 5 terminów, otrzymamy gładszy zestaw prognoz: Pięciokrotna prosta średnia ruchoma daje znacznie mniejsze błędy niż model losowego spaceru w tym przypadku. Średni wiek danych w tej prognozie wynosi 3 ((51) 2), więc ma tendencję do pozostawania w tyle za punktami zwrotnymi o około trzy okresy. (Na przykład, pogorszenie koniunktury zdaje się mieć miejsce w okresie 21, ale prognozy nie zmieniają się aż do kilku kolejnych okresów.) Zwróć uwagę, że długoterminowe prognozy z modelu SMA są prostą poziomą, tak jak w przypadku losowego spaceru Model. Tak więc model SMA zakłada, że ​​nie ma trendu w danych. Jednakże, podczas gdy prognozy z modelu losowego spaceru są po prostu równe ostatniej obserwowanej wartości, prognozy z modelu SMA są równe średniej ważonej ostatnich wartości. Limity ufności obliczone przez Statgraphics dla długoterminowych prognoz prostej średniej kroczącej nie stają się szersze wraz ze wzrostem horyzontu prognozy. To oczywiście nie jest poprawne Niestety, nie istnieje żadna podstawowa teoria statystyczna, która mówi nam, w jaki sposób przedziały ufności powinny poszerzyć się dla tego modelu. Jednak nie jest zbyt trudno obliczyć empiryczne szacunki limitów zaufania dla prognoz o dłuższym horyzoncie. Można na przykład skonfigurować arkusz kalkulacyjny, w którym model SMA byłby używany do prognozowania 2 kroków do przodu, 3 kroków do przodu itp. W próbie danych historycznych. Następnie można obliczyć standardowe odchylenia standardowe błędów w każdym horyzoncie prognozy, a następnie skonstruować przedziały ufności dla prognoz długoterminowych, dodając i odejmując wielokrotności odpowiedniego odchylenia standardowego. Jeśli spróbujemy 9-dniowej prostej średniej kroczącej, otrzymamy jeszcze bardziej wygładzone prognozy i większy efekt opóźniający: Średni wiek to teraz 5 okresów ((91) 2). Jeśli weźmiemy 19-dniową średnią ruchomą, średni wiek wzrośnie do 10: Należy zauważyć, że w rzeczywistości prognozy obecnie pozostają w tyle za punktami zwrotnymi o około 10 okresów. Jaka ilość wygładzania jest najlepsza dla tej serii Oto tabela, która porównuje ich statystyki błędów, w tym także średnią 3-dniową: Model C, 5-punktowa średnia ruchoma, daje najniższą wartość RMSE o niewielki margines w porównaniu z 3 - term i 9-term średnich, a ich inne statystyki są prawie identyczne. Tak więc, wśród modeli z bardzo podobnymi statystykami błędów, możemy wybrać, czy wolelibyśmy nieco większą reakcję, czy nieco większą płynność w prognozach. (Powrót do początku strony.) Browns Simple Exponential Smoothing (wykładniczo ważona średnia ruchoma) Opisany powyżej prosty model średniej ruchomej ma niepożądaną właściwość, że traktuje ostatnie k obserwacji równo i całkowicie ignoruje wszystkie poprzednie obserwacje. Intuicyjnie, przeszłe dane powinny być dyskontowane w bardziej stopniowy sposób - na przykład ostatnia obserwacja powinna mieć nieco większą wagę niż druga ostatnia, a druga ostatnia powinna mieć nieco większą wagę niż trzecia ostatnia; wkrótce. Wykonywany jest prosty model wygładzania wykładniczego (SES). Niech 945 oznacza stałą kwotową (liczbę od 0 do 1). Jednym ze sposobów napisania modelu jest zdefiniowanie serii L, która reprezentuje aktualny poziom (tj. Miejscową średnią wartość) serii oszacowanej na podstawie danych do chwili obecnej. Wartość L w czasie t jest obliczana rekurencyjnie z jego własnej poprzedniej wartości w następujący sposób: Zatem bieżącą wygładzoną wartością jest interpolacja między poprzednią wygładzoną wartością a bieżącą obserwacją, gdzie 945 kontroluje bliskość interpolowanej wartości do najnowszej. obserwacja. Prognoza na następny okres jest po prostu bieżącą wygładzoną wartością: Równoważnie, możemy wyrazić następną prognozę bezpośrednio w odniesieniu do wcześniejszych prognoz i poprzednich obserwacji, w dowolnej z następujących równoważnych wersji. W pierwszej wersji prognozą jest interpolacja między poprzednią prognozą i poprzednią obserwacją: w drugiej wersji następna prognoza jest uzyskiwana przez dostosowanie poprzedniej prognozy w kierunku poprzedniego błędu o wartość 945. jest błąd popełniony przy czas t. W trzeciej wersji prognozą jest ważona ruchoma średnia ważona wykładniczo (tj. Zdyskontowana) ze współczynnikiem dyskontowym 1- 945: Wersja interpolacyjna formuły prognostycznej jest najprostsza do zastosowania, jeśli wdraża się model w arkuszu kalkulacyjnym: pasuje on do pojedyncza komórka i zawiera odwołania do komórek wskazujące poprzednią prognozę, poprzednią obserwację i komórkę, w której przechowywana jest wartość 945. Należy zauważyć, że jeśli model 945 1, model SES jest równoważny modelowi chodzenia swobodnego (bez wzrostu). Jeśli 945 0, model SES jest równoważny modelowi średniemu, przy założeniu, że pierwsza wygładzona wartość jest równa średniej. (Powrót do początku strony.) Średni wiek danych w prognozie wygładzania prostego wykładniczego wynosi 1 945 w stosunku do okresu, dla którego obliczana jest prognoza. (To nie powinno być oczywiste, ale można je łatwo wykazać, oceniając nieskończoną serię.) Dlatego prosta prognoza średniej ruchomej ma tendencję do pozostawania w tyle za punktami zwrotnymi o około 1 945 okresów. Na przykład, gdy 945 0,5 opóźnienie wynosi 2 okresy, gdy 945 ± 0,2 opóźnienie wynosi 5 okresów, gdy 945 ± 0,1 opóźnienie wynosi 10 okresów, i tak dalej. Dla danego średniego wieku (to jest ilości opóźnienia), prosta prognoza wygładzania wykładniczego (SES) jest nieco lepsza od prognozy prostej średniej ruchomej (SMA), ponieważ umieszcza względnie większą wagę w najnowszej obserwacji - ie. jest nieco bardziej obojętny na zmiany zachodzące w niedawnej przeszłości. Na przykład model SMA z 9 terminami i model SES z 945 0.2 mają średnią wieku 5 lat dla danych w swoich prognozach, ale model SES przykłada większą wagę do ostatnich 3 wartości niż model SMA i do w tym samym czasie nie ma on całkowicie 8220forget8222 o wartościach większych niż 9 okresów, jak pokazano na tym wykresie: Kolejną ważną zaletą modelu SES w porównaniu z modelem SMA jest to, że model SES używa parametru wygładzania, który jest nieustannie zmienny, dzięki czemu można go łatwo zoptymalizować za pomocą algorytmu quotsolverquot, aby zminimalizować błąd średniokwadratowy. Optymalna wartość 945 w modelu SES dla tej serii okazuje się być 0,2961, jak pokazano tutaj: Średni wiek danych w tej prognozie wynosi 10,2961 3,4 okresów, co jest podobne do 6-okresowej prostej średniej kroczącej. Prognozy długoterminowe z modelu SES są prostą poziomą. jak w modelu SMA i modelu chodzenia bez wzrostu. Należy jednak zauważyć, że przedziały ufności obliczone przez Statgraphics teraz rozchodzą się w rozsądny sposób, i że są one znacznie węższe niż przedziały ufności dla modelu losowego spaceru. Model SES zakłada, że ​​seria jest w pewnym stopniu przewidywalna, podobnie jak model losowego spaceru. Model SES jest w rzeczywistości szczególnym przypadkiem modelu ARIMA. więc teoria statystyczna modeli ARIMA zapewnia solidną podstawę do obliczania przedziałów ufności dla modelu SES. W szczególności model SES jest modelem ARIMA z jedną niesezonową różnicą, terminem MA (1) i nie ma stałego okresu. inaczej znany jako model DAIMA (0,1,1) bez stałej wartości. Współczynnik MA (1) w modelu ARIMA odpowiada ilości 1-945 w modelu SES. Na przykład, jeśli dopasujesz model ARIMA (0,1,1) bez stałej do analizowanej tutaj serii, szacowany współczynnik MA (1) okaże się równy 0,7029, czyli prawie dokładnie jeden minus 0,2961. Możliwe jest dodanie do modelu SES założenia niezerowego stałego trendu liniowego. Aby to zrobić, po prostu określ model ARIMA z jedną niesezonową różnicą i terminem MA (1) ze stałą, tj. Model ARIMA (0,1,1) ze stałą. Prognozy długoterminowe będą miały tendencję równą średniej tendencji obserwowanej w całym okresie szacowania. Nie można tego zrobić w połączeniu z korektą sezonową, ponieważ opcje korekty sezonowej są wyłączone, gdy typ modelu jest ustawiony na ARIMA. Można jednak dodać stały, długotrwały trend wykładniczy do prostego modelu wygładzania wykładniczego (z korektą sezonową lub bez niego) za pomocą opcji korekty inflacji w procedurze prognozowania. Odpowiednia stopa inflacji (procent wzrostu) na okres może być oszacowana jako współczynnik nachylenia w liniowym modelu trendu dopasowany do danych w połączeniu z logarytmem naturalnym, lub może być oparty na innych, niezależnych informacjach dotyczących długoterminowych perspektyw wzrostu . (Powrót do początku strony.) Browns Linear (tzn. Podwójnie) Exponential Smoothing Modele SMA i modele SES zakładają, że nie ma żadnego trendu w danych (co jest zwykle w porządku lub przynajmniej niezbyt dobre dla 1- prognozy wyprzedzające, gdy dane są stosunkowo hałaśliwe) i mogą być modyfikowane w celu włączenia stałego trendu liniowego, jak pokazano powyżej. A co z trendami krótkoterminowymi Jeśli w serii pojawiają się zmienne stopy wzrostu lub cykliczny wzór, który wyraźnie odróżnia się od hałasu, i jeśli istnieje potrzeba przewidywania z wyprzedzeniem dłuższym niż 1 okres, wówczas można również oszacować trend lokalny. problem. Prosty model wygładzania wykładniczego można uogólnić w celu uzyskania liniowego modelu wygładzania wykładniczego (LES), który oblicza lokalne oszacowania zarówno poziomu, jak i trendu. Najprostszym modelem trendu zmiennym w czasie jest liniowy model wygładzania wykładniczego Browns, który wykorzystuje dwie różne wygładzone serie, które są wyśrodkowane w różnych punktach czasowych. Formuła prognozowania opiera się na ekstrapolacji linii przez dwa ośrodki. (Bardziej wyrafinowana wersja tego modelu, Holt8217s, jest omówiona poniżej.) Algebraiczna postać liniowego modelu wygładzania wykładniczego Brown8217, podobnie jak model prostego wykładniczego wygładzania, może być wyrażana w wielu różnych, ale równoważnych formach. "Norma" w tym modelu jest zwykle wyrażana następująco: Niech S oznacza serie wygładzone pojedynczo, otrzymane przez zastosowanie prostego wygładzania wykładniczego dla szeregu Y. Oznacza to, że wartość S w okresie t jest określona przez: (Przypomnijmy, że w prostym wygładzanie wykładnicze, to byłaby prognoza dla Y w okresie t1.) Następnie pozwól oznaczać podwójnie wygładzoną serię uzyskaną przez zastosowanie prostego wygładzania wykładniczego (używając tego samego 945) do serii S: Na koniec, prognozy dla Y tk. dla każdego kgt1, jest podana przez: To daje e 1 0 (to jest trochę oszukiwać, i niech pierwsza prognoza równa się faktycznej pierwszej obserwacji), i e 2 Y 2 8211 Y 1. po którym prognozy są generowane za pomocą równania powyżej. Daje to takie same dopasowane wartości, jak formuła oparta na S i S, jeśli te ostatnie zostały uruchomione przy użyciu S 1 S 1 Y 1. Ta wersja modelu jest używana na następnej stronie ilustrującej połączenie wygładzania wykładniczego z korektą sezonową. Holt8217s Linear Exponential Smoothing Brown8217s Model LES oblicza lokalne oszacowania poziomu i trendu, wygładzając najnowsze dane, ale fakt, że robi to za pomocą pojedynczego parametru wygładzania, nakłada ograniczenia na wzorce danych, które może dopasować: poziom i trend nie mogą się różnić w niezależnych stawkach. Model LES Holt8217s rozwiązuje ten problem, włączając dwie stałe wygładzania, jedną dla poziomu i drugą dla trendu. W każdej chwili t, jak w modelu Brown8217s, istnieje oszacowanie Lt poziomu lokalnego i oszacowanie T t trendu lokalnego. Tutaj są one obliczane rekurencyjnie od wartości Y obserwowanej w czasie t oraz poprzednich oszacowań poziomu i trendu za pomocą dwóch równań, które oddzielnie stosują wygładzanie wykładnicze. Jeżeli szacowany poziom i tendencja w czasie t-1 to L t82091 i T t-1. odpowiednio, wówczas prognoza dla Y tshy, która zostałaby dokonana w czasie t-1, jest równa L t-1 T t-1. Gdy obserwowana jest wartość rzeczywista, zaktualizowana estymacja poziomu jest obliczana rekurencyjnie poprzez interpolację między Y tshy i jej prognozą L t-1 T t-1, przy użyciu wag o wartości 945 i 1-945. Zmiana szacowanego poziomu, mianowicie L t 8209 L t82091. można interpretować jako hałaśliwy pomiar trendu w czasie t. Zaktualizowane oszacowanie trendu jest następnie obliczane rekursywnie przez interpolację pomiędzy L t 8209 L t82091 a poprzednim oszacowaniem trendu, T t-1. używając ciężarów 946 i 1-946: Interpretacja stałej wygładzania trendu 946 jest analogiczna do stałej wygładzania poziomu 945. Modele o małych wartościach 946 przyjmują, że trend zmienia się bardzo powoli w czasie, natomiast modele z większe 946 zakłada, że ​​zmienia się szybciej. Model z dużym 946 uważa, że ​​odległe jutro jest bardzo niepewne, ponieważ błędy w oszacowaniu trendów stają się dość ważne przy prognozowaniu na więcej niż jeden okres. (Powrót do początku strony.) Stałe wygładzania 945 i 946 można oszacować w zwykły sposób, minimalizując średni błąd kwadratowy prognoz 1-krokowych. Po wykonaniu tej czynności w Statgraphics, szacunkowe wartości wynoszą 945 0,3048 i 946 0,008. Bardzo mała wartość wynosząca 946 oznacza, że ​​model przyjmuje bardzo niewielką zmianę trendu z jednego okresu do drugiego, więc w zasadzie ten model próbuje oszacować długoterminowy trend. Analogicznie do pojęcia średniego wieku danych, które są używane do oszacowania lokalnego poziomu serii, średni wiek danych wykorzystywanych do oszacowania lokalnego trendu jest proporcjonalny do 1 946, chociaż nie jest dokładnie taki sam jak ten. . W tym przypadku okazuje się, że jest to 10.006 125. Nie jest to bardzo dokładna liczba, ponieważ dokładność oszacowania 946 wynosi 2182 tak naprawdę 3 miejsca po przecinku, ale jest tego samego ogólnego rzędu wielkości co wielkość próby 100, więc model ten uśrednia dość długą historię w szacowaniu trendu. Poniższy wykres prognozy pokazuje, że model LES szacuje nieco większy lokalny trend na końcu serii niż stały trend oszacowany w modelu SEStrend. Szacowana wartość 945 jest prawie identyczna z wartością uzyskaną przez dopasowanie modelu SES z trendem lub bez niego, więc jest to prawie ten sam model. Teraz, czy wyglądają one jak rozsądne prognozy dla modelu, który ma oszacować lokalny trend Jeśli wyobrazisz sobie 8220eyeball8221 ten wykres, wygląda na to, że lokalny trend spadł na końcu serii Co się stało Parametry tego modelu zostały oszacowane poprzez zminimalizowanie błędu kwadratów prognoz 1-krok naprzód, a nie prognoz długoterminowych, w którym to przypadku trend doesn8217t robi dużą różnicę. Jeśli wszystko, na co patrzysz, to błędy 1-etapowe, nie widzisz większego obrazu trendów w ciągu (powiedzmy) 10 lub 20 okresów. Aby uzyskać ten model lepiej dopasowany do ekstrapolacji danych przez gałkę oczną, możemy ręcznie dostosować stałą wygładzania trendu, aby wykorzystała krótszą linię podstawową do oszacowania trendu. Na przykład, jeśli zdecydujemy się ustawić 946 0,1, średnia wieku danych wykorzystywanych do oszacowania trendu lokalnego wynosi 10 okresów, co oznacza, że ​​uśredniamy trend w ciągu ostatnich 20 okresów. W tym przypadku wygląda wykres prognozy, jeśli ustawimy 946 0,1, zachowując 945 0,3. Jest to intuicyjnie uzasadnione dla tej serii, chociaż prawdopodobnie ekstrapolowanie tego trendu prawdopodobnie nie będzie dłuższe niż 10 okresów w przyszłości. A co ze statystykami błędów? Oto porównanie modeli dla dwóch modeli pokazanych powyżej oraz trzech modeli SES. Optymalna wartość 945. Dla modelu SES wynosi około 0,3, ale podobne wyniki (z odpowiednio mniejszą lub większą reaktywnością) uzyskuje się przy 0,5 i 0,2. (A) Holts linear exp. wygładzanie z alfa 0,3048 i beta 0,008 (B) Holts linear exp. wygładzanie z alfa 0.3 i beta 0.1 (C) Proste wygładzanie wykładnicze z alfa 0,5 (D) Proste wygładzanie wykładnicze z alfa 0.3 (E) Proste wygładzanie wykładnicze z alfa 0.2 Ich statystyki są prawie identyczne, więc naprawdę nie możemy dokonać wyboru na podstawie błędów prognozy 1-krokowej w ramach próby danych. Musimy odwołać się do innych kwestii. Jeśli mocno wierzymy, że oparcie obecnego szacunku trendu na tym, co wydarzyło się w ciągu ostatnich 20 okresów, ma sens, możemy postawić argumenty za modelem LES z 945 0,3 i 946 0,1. Jeśli chcemy być agnostyczni w kwestii, czy istnieje lokalny trend, to jeden z modeli SES może być łatwiejszy do wyjaśnienia, a także dałby więcej prognoz w połowie drogi na następne 5 lub 10 okresów. (Powrót do początku strony.) Który rodzaj ekstrapolacji trendów jest najlepszy: poziomy lub liniowy Dowody empiryczne sugerują, że jeśli dane zostały już skorygowane (w razie potrzeby) o inflację, może być nieostrożnością ekstrapolować krótkoterminowe liniowe trendy bardzo daleko w przyszłość. Dzisiejsze trendy mogą się w przyszłości zanikać ze względu na różne przyczyny, takie jak starzenie się produktów, zwiększona konkurencja i cykliczne spadki lub wzrosty w branży. Z tego powodu proste wygładzanie wykładnicze często zapewnia lepszą pozapróbkę, niż można by się było tego spodziewać, pomimo cytowania ekwiwalentu trendów poziomych. Tłumione modyfikacje trendów liniowego modelu wygładzania wykładniczego są również często stosowane w praktyce, aby wprowadzić nutę konserwatyzmu do swoich projekcji trendów. Model LES z tłumioną tendencją może być zaimplementowany jako specjalny przypadek modelu ARIMA, w szczególności modelu ARIMA (1,1,2). Możliwe jest obliczenie przedziałów ufności wokół długoterminowych prognoz generowanych przez modele wygładzania wykładniczego, poprzez uznanie ich za szczególne przypadki modeli ARIMA. (Uwaga: nie wszystkie programy poprawnie obliczają przedziały ufności dla tych modeli). Szerokość przedziałów ufności zależy od (i) błędu RMS modelu, (ii) rodzaju wygładzania (prostego lub liniowego) (iii) wartości (s) stałej (ów) wygładzania (-ych) i (iv) liczbę okresów, które prognozujesz. Ogólnie rzecz biorąc, interwały rozkładają się szybciej, gdy 945 staje się większy w modelu SES i rozprzestrzeniają się znacznie szybciej, gdy stosuje się liniowe zamiast prostego wygładzania. Ten temat jest omówiony dalej w sekcji modeli ARIMA notatek. (Powrót do początku strony.) Wprowadzenie do ARIMA: modele niesezonowe Równanie prognostyczne ARIMA (p, d, q): Modele ARIMA są w teorii najbardziej ogólną klasą modeli do prognozowania szeregu czasowego, który może być 8220stacja stacjonarna8221 przez różnicowanie (jeśli to konieczne), być może w połączeniu z nieliniowymi przekształceniami, takimi jak rejestracja lub deflacja (jeśli to konieczne). Zmienna losowa, która jest szeregiem czasowym, jest nieruchoma, jeśli jej właściwości statystyczne są stałe w czasie. Seria stacjonarna nie ma trendu, jej wahania wokół średniej mają stałą amplitudę i poruszają się w spójny sposób. tj. jego krótkoterminowe wzorce czasu losowego zawsze wyglądają tak samo w sensie statystycznym. Ten ostatni warunek oznacza, że ​​jego autokorelacje (korelacje z jego własnymi wcześniejszymi odchyleniami od średniej) pozostają stałe w czasie, lub równoważnie, że jego widmo mocy pozostaje stałe w czasie. Zmienna losowa tej postaci może być oglądana (jak zwykle) jako kombinacja sygnału i szumu, a sygnał (jeśli jest widoczny) może być wzorem szybkiej lub wolnej średniej rewersji, lub sinusoidalnej oscylacji, lub szybkiej przemiany w znaku , a także może mieć składnik sezonowy. Model ARIMA może być postrzegany jako 8220filter8221, który próbuje oddzielić sygnał od szumu, a sygnał jest następnie ekstrapolowany w przyszłość w celu uzyskania prognoz. Równanie prognostyczne ARIMA dla stacjonarnych szeregów czasowych jest równaniem liniowym (to jest typu regresyjnym), w którym predyktory składają się z opóźnień zmiennej zależnej i opóźnień błędów prognoz. Oznacza to: Przewidywaną wartość Y stałej stałej lub ważoną sumę jednej lub więcej ostatnich wartości Y i lub ważoną sumę jednej lub więcej ostatnich wartości błędów. Jeśli predykatory składają się tylko z opóźnionych wartości Y., jest to model czysto autoregresyjny (8220a-regressed8221), który jest tylko szczególnym przypadkiem modelu regresji i który może być wyposażony w standardowe oprogramowanie regresyjne. Na przykład, autoregresyjny model pierwszego rzędu (8220AR (1) 8221) dla Y jest prostym modelem regresji, w którym zmienna niezależna jest po prostu Y opóźniona o jeden okres (LAG (Y, 1) w Statgraphics lub YLAG1 w RegressIt). Jeśli niektóre z predyktorów są opóźnieniami błędów, to model ARIMA NIE jest modelem regresji liniowej, ponieważ nie ma sposobu, aby określić 8220last okres8217s błąd8221 jako zmienną niezależną: błędy muszą być obliczane na podstawie okresu do okresu kiedy model jest dopasowany do danych. Z technicznego punktu widzenia problem z wykorzystaniem opóźnionych błędów jako czynników predykcyjnych polega na tym, że przewidywania model8217 nie są liniowymi funkcjami współczynników. mimo że są liniowymi funkcjami przeszłych danych. Współczynniki w modelach ARIMA, które zawierają opóźnione błędy, muszą być oszacowane przez nieliniowe metody optymalizacji (8220hill-climbing8221), a nie przez samo rozwiązanie układu równań. Akronim ARIMA oznacza Auto-Regressive Integrated Moving Average. Lagi z stacjonarnej serii w równaniu prognostycznym nazywane są "wartościami dodatnimi", opóźnienia błędów prognoz są nazywane "przesunięciem średniej", a szeregi czasowe, które muszą być różnicowane, aby stały się stacjonarne, są uważane za "podzielone" wersje stacjonarnej serii. Modele random-walk i random-tendencja, modele autoregresyjne i modele wygładzania wykładniczego są szczególnymi przypadkami modeli ARIMA. Niesezonowy model ARIMA jest klasyfikowany jako model DAIMIMA (p, d, q), gdzie: p to liczba terminów autoregresyjnych, d to liczba niesezonowych różnic potrzebnych do stacjonarności, a q to liczba opóźnionych błędów prognozy w równanie predykcji. Równanie prognostyczne jest skonstruowane w następujący sposób. Po pierwsze, niech y oznacza różnicę d Y. Oznacza to: Zwróć uwagę, że druga różnica Y (przypadek d2) nie jest różnicą od 2 okresów temu. Jest to raczej różnica między pierwszą a różnicą. który jest dyskretnym analogiem drugiej pochodnej, tj. lokalnym przyspieszeniem szeregu, a nie jego lokalnym trendem. Pod względem y. ogólne równanie prognostyczne jest następujące: Tutaj parametry średniej ruchomej (9528217 s) są zdefiniowane w taki sposób, że ich znaki są ujemne w równaniu, zgodnie z konwencją wprowadzoną przez Boxa i Jenkinsa. Niektórzy autorzy i oprogramowanie (w tym język programowania R) definiują je, aby zamiast tego mieli znaki plus. Kiedy rzeczywiste liczby są podłączone do równania, nie ma dwuznaczności, ale ważne jest, aby wiedzieć, którą konwencję używa twoje oprogramowanie podczas odczytu danych wyjściowych. Często parametry są tam oznaczone przez AR (1), AR (2), 8230 i MA (1), MA (2), 8230 itd. Aby zidentyfikować odpowiedni model ARIMA dla Y. zaczynasz od określenia kolejności różnicowania (d) konieczność stacjonowania serii i usunięcia ogólnych cech sezonowości, być może w połączeniu z transformacją stabilizującą warianty, taką jak rejestracja lub deflacja. Jeśli zatrzymasz się w tym momencie i będziesz przewidywał, że zróżnicowana seria jest stała, dopasowałeś jedynie model losowego spaceru lub losowego trendu. Jednak stacjonarne serie mogą nadal mieć błędy związane z auto - korelacjami, co sugeruje, że w równaniu prognostycznym potrzebna jest również pewna liczba terminów AR (p 8805 1) i kilka warunków MA (q 8805 1). Proces określania wartości p, d i q, które są najlepsze dla danej serii czasowej, zostanie omówiony w późniejszych sekcjach notatek (których linki znajdują się na górze tej strony), ale podgląd niektórych typów nietypowych modeli ARIMA, które są powszechnie spotykane, podano poniżej. ARIMA (1,0,0) Model autoregresyjny pierwszego rzędu: jeśli seria jest stacjonarna i autokorelowana, być może można ją przewidzieć jako wielokrotność jej poprzedniej wartości plus stałą. Równanie prognostyczne w tym przypadku wynosi 8230, co oznacza, że ​​Y cofnął się sam w sobie o jeden okres. Jest to model 8220ARIMA (1,0,0) constant8221. Jeżeli średnia z Y wynosi zero, wówczas nie zostałoby uwzględnione stałe wyrażenie. Jeśli współczynnik nachylenia 981 1 jest dodatni i mniejszy niż 1 w skali (musi być mniejszy niż 1 waga, jeśli Y jest nieruchomy), model opisuje zachowanie polegające na odwróceniu średniej, w którym należy przypisać wartość kolejnego okresu 817 razy 981 razy jako daleko od średniej, jak ta wartość okresu. Jeżeli 981 1 jest ujemny, przewiduje zachowanie średniej odwrócenia z naprzemiennością znaków, tj. Przewiduje również, że Y będzie poniżej średniego następnego okresu, jeśli jest powyżej średniej tego okresu. W modelu autoregresyjnym drugiego rzędu (ARIMA (2,0,0)), po prawej stronie pojawi się również termin Y t-2 i tak dalej. W zależności od znaków i wielkości współczynników, model ARIMA (2,0,0) może opisywać układ, którego średnia rewersja zachodzi w sposób oscylacyjny sinusoidalnie, podobnie jak ruch masy na sprężynie poddanej losowym wstrząsom . Próba losowa ARIMA (0,1,0): Jeśli seria Y nie jest nieruchoma, najprostszym możliwym modelem jest model losowego spaceru, który można uznać za ograniczający przypadek modelu AR (1), w którym autoregresyjny Współczynnik jest równy 1, tzn. szeregowi z nieskończenie powolną średnią rewersją. Równanie predykcji dla tego modelu można zapisać jako: gdzie stałym terminem jest średnia zmiana okresu do okresu (tj. Dryf długoterminowy) w Y. Ten model może być dopasowany jako model regresji bez przechwytywania, w którym pierwsza różnica Y jest zmienną zależną. Ponieważ zawiera on (tylko) niesezonową różnicę i stały termin, jest klasyfikowany jako model DAIMA (0,1,0) ze stałą. Często Model bezładnego spaceru byłby ARIMA (0,1; 0) model bez stałego ARIMA (1,1,0) różny model autoregresyjny pierwszego rzędu: Jeśli błędy modelu losowego spaceru są autokorelowane, być może problem można rozwiązać, dodając jedno opóźnienie zmiennej zależnej do równania predykcji - - to znaczy przez regresję pierwszej różnicy Y, która sama w sobie jest opóźniona o jeden okres. To przyniosłoby następujące równanie predykcji: które można przekształcić w To jest autoregresyjny model pierwszego rzędu z jednym rzędem niesezonowego różnicowania i stałym terminem - tj. model ARIMA (1,1,0). ARIMA (0,1,1) bez stałego prostego wygładzania wykładniczego: Inna strategia korekcji błędów związanych z autokorelacją w modelu losowego spaceru jest zasugerowana przez prosty model wygładzania wykładniczego. Przypomnijmy, że w przypadku niektórych niestacjonarnych szeregów czasowych (na przykład takich, które wykazują głośne wahania wokół wolno zmieniającej się średniej), model spaceru losowego nie działa tak dobrze, jak średnia ruchoma wartości z przeszłości. Innymi słowy, zamiast brać ostatnią obserwację jako prognozę następnej obserwacji, lepiej jest użyć średniej z ostatnich kilku obserwacji w celu odfiltrowania hałasu i dokładniejszego oszacowania średniej lokalnej. Prosty model wygładzania wykładniczego wykorzystuje wykładniczo ważoną średnią ruchomą przeszłych wartości, aby osiągnąć ten efekt. Równanie predykcji dla prostego modelu wygładzania wykładniczego można zapisać w wielu matematycznie równoważnych formach. jedną z nich jest tak zwana forma 8220, korekta zera 8221, w której poprzednia prognoza jest korygowana w kierunku popełnionego błędu: Ponieważ e t-1 Y t-1 - 374 t-1 z definicji, można to przepisać jako : co jest równaniem ARIMA (0,1,1) - bez stałej prognozy z 952 1 1 - 945. Oznacza to, że możesz dopasować proste wygładzanie wykładnicze, określając je jako model ARIMA (0,1,1) bez stała, a szacowany współczynnik MA (1) odpowiada 1-minus-alfa w formule SES. Przypomnijmy, że w modelu SES średni wiek danych w prognozach z wyprzedzeniem 1 roku wynosi 1 945. Oznacza to, że będą one pozostawać w tyle za trendami lub punktami zwrotnymi o około 1 945 okresów. Wynika z tego, że średni wiek danych w prognozach 1-okresowych modelu ARIMA (0,1,1) - bez stałej wynosi 1 (1 - 952 1). Tak więc, na przykład, jeśli 952 1 0.8, średnia wieku wynosi 5. Ponieważ 952 1 zbliża się do 1, ARIMA (0,1,1) - bez stałego modelu staje się bardzo długookresową średnią ruchomą, a jako 952 1 zbliża się do 0, staje się modelem losowego chodzenia bez dryfu. Jaki jest najlepszy sposób korekcji autokorelacji: dodawanie terminów AR lub dodawanie terminów MA W dwóch poprzednich modelach omówionych powyżej, problem związanych z autokorelacją błędów w modelu losowego spaceru został ustalony na dwa różne sposoby: przez dodanie opóźnionej wartości różnej serii do równania lub dodanie opóźnionej wartości błędu prognozy. Które podejście jest najlepsze Zasada praktyczna dla tej sytuacji, która zostanie omówiona bardziej szczegółowo w dalszej części, polega na tym, że pozytywna autokorelacja jest zwykle najlepiej traktowana przez dodanie do modelu warunku AR, a negatywna autokorelacja jest zwykle najlepiej traktowana przez dodanie Termin magisterski. W biznesowych i ekonomicznych szeregach czasowych negatywna autokorelacja często pojawia się jako artefakt różnicowania. (Ogólnie rzecz biorąc, różnicowanie zmniejsza pozytywną autokorelację, a nawet może spowodować przełączenie z autokorelacji dodatniej na ujemną). Tak więc model ARIMA (0,1,1), w którym różnicowanie jest połączone z terminem MA, jest częściej używany niż Model ARIMA (1,1,0). ARIMA (0,1,1) o stałym prostym wygładzaniu wykładniczym ze wzrostem: Dzięki wdrożeniu modelu SES jako modelu ARIMA można uzyskać pewną elastyczność. Po pierwsze, szacowany współczynnik MA (1) może być ujemny. odpowiada to współczynnikowi wygładzania większemu niż 1 w modelu SES, co zwykle nie jest dozwolone w procedurze dopasowania modelu SES. Po drugie, masz możliwość włączenia stałego warunku w modelu ARIMA, jeśli chcesz, aby oszacować średni niezerowy trend. Model ARIMA (0,1,1) ze stałą ma równanie prognozy: prognozy jednokresowe z tego modelu są jakościowo podobne do tych z modelu SES, z tym że trajektoria prognoz długoterminowych jest zwykle linia nachylenia (której nachylenie jest równe mu) zamiast linii poziomej. ARIMA (0,2,1) lub (0,2,2) bez stałego liniowego wygładzania wykładniczego: liniowe modele wygładzania wykładniczego są modelami ARIMA, które wykorzystują dwie niesezonowe różnice w połączeniu z terminami MA. Druga różnica w serii Y nie jest po prostu różnicą między Y a nią opóźnioną o dwa okresy, ale raczej jest pierwszą różnicą pierwszej różnicy - a. e. zmiana w Y w okresie t. Tak więc druga różnica Y w okresie t jest równa (Y t - Y t-1) - (Y t-1 - Y t-2) Y t - 2Y t-1 Y t-2. Druga różnica funkcji dyskretnej jest analogiczna do drugiej pochodnej funkcji ciągłej: mierzy ona przyspieszenie cytadania lub inną krzywiznę w funkcji w danym punkcie czasu. Model ARIMA (0,2,2) bez stałej przewiduje, że druga różnica szeregu równa się funkcji liniowej dwóch ostatnich błędów prognozy: która może być uporządkowana jako: gdzie 952 1 i 952 2 to MA (1) i Współczynniki MA (2). Jest to ogólny liniowy model wygładzania wykładniczego. w zasadzie taki sam jak model Holt8217s, a model Brown8217s to szczególny przypadek. Wykorzystuje wykładniczo ważone średnie ruchome do oszacowania zarówno lokalnego poziomu, jak i lokalnego trendu w serii. Długoterminowe prognozy z tego modelu zbiegają się do linii prostej, której nachylenie zależy od średniej tendencji obserwowanej pod koniec serii. ARIMA (1,1,2) bez stałego liniowego tłumienia wykładniczego. Ten model jest zilustrowany na załączonych slajdach w modelach ARIMA. Ekstrapoluje lokalny trend pod koniec serii, ale spłaszcza go na dłuższych horyzontach prognozy, wprowadzając nutę konserwatyzmu, praktykę, która ma empiryczne wsparcie. Zobacz artykuł na ten temat: "Dlaczego działa Damped Trend" autorstwa Gardnera i McKenziego oraz artykuł "Zgodny z legendą" Armstronga i in. dla szczegółów. Ogólnie zaleca się trzymać modele, w których co najmniej jedno z p i q jest nie większe niż 1, tj. Nie próbować dopasować modelu takiego jak ARIMA (2,1,2), ponieważ może to prowadzić do przeuczenia oraz pytania o współczynniku równomolowym, które omówiono bardziej szczegółowo w uwagach dotyczących struktury matematycznej modeli ARIMA. Implementacja arkusza kalkulacyjnego: modele ARIMA, takie jak opisane powyżej, można łatwo wdrożyć w arkuszu kalkulacyjnym. Równanie predykcyjne jest po prostu równaniem liniowym, które odnosi się do przeszłych wartości pierwotnych szeregów czasowych i przeszłych wartości błędów. W ten sposób można skonfigurować arkusz kalkulacyjny prognozowania ARIMA, przechowując dane w kolumnie A, formułę prognozowania w kolumnie B i błędy (dane minus prognozy) w kolumnie C. Formuła prognozowania w typowej komórce w kolumnie B byłaby po prostu wyrażenie liniowe odnoszące się do wartości w poprzednich wierszach kolumn A i C, pomnożone przez odpowiednie współczynniki AR lub MA przechowywane w komórkach w innym miejscu arkusza kalkulacyjnego. NATURA KODU Natura kodu Wprowadzenie Jestem z naturą. Woody Allen Oto jesteśmy: początek. Cóż, prawie początek. Jeśli minęło trochę czasu, odkąd wykonałeś jakiekolwiek programowanie w przetwarzaniu (lub jakiejkolwiek matematyce, o to chodzi), to wprowadzenie sprawi, że twój umysł wróci do myślenia komputerowego, zanim podejdziemy do trudniejszego i bardziej złożonego materiału. W rozdziale pierwszym zamierzano mówić o koncepcji wektora i o tym, jak będzie on służył jako podstawa do symulowania ruchu w tej książce. Ale zanim zrobimy ten krok, pomyślmy, co to znaczy, aby po prostu poruszać się po ekranie. Zacznijmy od jednej z najbardziej znanych i najprostszych symulacji ruchu losowego spaceru. I.1 Losowe spacery Wyobraź sobie, że stoisz na środku równowagi. Co dziesięć sekund rzucasz monetą. Głowy, zrób krok do przodu. Ogony, cofnij się o krok. Jest to losowa ścieżka walka zdefiniowana jako seria losowych kroków. Odsuwając tę ​​belkę wagi i na podłogę, można wykonać losowy spacer w dwóch wymiarach, dwukrotnie rzucając tę ​​samą monetę o następujące wyniki: Tak, to może wydawać się wyjątkowo niewyszukanym algorytmem. Niemniej jednak, losowe spacery mogą być wykorzystywane do modelowania zjawisk zachodzących w rzeczywistym świecie, od ruchów cząsteczek w gazie po zachowanie hazardzisty spędzającego dzień w kasynie. Jeśli chodzi o nas, zaczynamy tę książkę od studiowania losowego spaceru z trzema celami. Musimy przeanalizować koncepcję programowania, która jest centralnym elementem tego zorientowanego na książki programowania. Losowy spacerowicz będzie służyć jako szablon do tego, jak będziemy używać projektowania zorientowanego obiektowo, aby tworzyć rzeczy poruszające się w oknie przetwarzania. Losowy spacer wywołuje dwa pytania, które będziemy zadawać w kółko w tej książce: Jak zdefiniować reguły rządzące zachowaniem naszych obiektów, a następnie Jak wdrożyć te zasady w przetwarzaniu W całej książce, również okresowo potrzebujemy podstawowe zrozumienie losowości, prawdopodobieństwa i szumu Perlina. Losowy spacer pozwoli nam zademonstrować kilka kluczowych punktów, które przydadzą się później. I.2 Losowe Walker klasy Lets przegląd trochę programowania obiektowego (OOP) najpierw, budując obiekt Walker. To będzie tylko pobieżna recenzja. Jeśli nigdy wcześniej nie pracowałeś z OOP, możesz chcieć czegoś bardziej kompleksowego. Id sugeruje, abyś tu przeniósł się i przejrzał podstawy strony Processing zanim przejdziesz dalej. Obiekt w przetwarzaniu jest jednostką, która ma zarówno dane, jak i funkcjonalność. Chcemy zaprojektować obiekt Walkera, który zarówno śledzi jego dane (tam, gdzie istnieje na ekranie), jak i ma możliwość wykonywania określonych działań (takich jak losowanie lub zrobić krok). Klasa jest szablonem do budowania rzeczywistych instancji obiektów. Pomyśl o klasie jako obcinaczu ciastek obiektami są same ciasteczka. Zacznijmy od zdefiniowania klasy Walker, co oznacza bycie obiektem Walkera. Walker potrzebuje tylko dwóch kawałków danych dla swojej lokalizacji x i jednej dla swojej lokalizacji y. Obiekty mają dane. Ponieważ rysujemy tło tylko raz w setup (). zamiast usuwać ją ciągle za każdym razem przez draw (). widzimy ślad losowego spaceru w naszym oknie przetwarzania. Twoja przeglądarka nie obsługuje tagu canvas. Jest kilka ulepszeń, które moglibyśmy wprowadzić do przypadkowego piechura. Po pierwsze, te kroki Walkera są ograniczone do czterech opcji: w dół, w lewo i w prawo. Ale każdy piksel w oknie ma ośmiu możliwych sąsiadów, a dziewiątą możliwością jest pozostanie w tym samym miejscu. Aby zaimplementować obiekt Walkera, który może przejść do dowolnego sąsiedniego piksela (lub pozostać na miejscu), możemy wybrać liczbę z zakresu od 0 do 8 (dziewięć możliwych wyborów). Jednak skuteczniejszym sposobem napisania kodu byłoby po prostu wybieranie z trzech możliwych kroków wzdłuż osi x (-1, 0 lub 1) i trzech możliwych kroków wzdłuż osi y. Wydajności -1, 0 lub 1 Wszystkie te warianty tradycyjnego losowego spaceru mają jedną wspólną cechę: w każdej chwili prawdopodobieństwo, że Walker zrobi krok w danym kierunku jest równe prawdopodobieństwu, że Walker zrobi krok w dowolnym kierunku. Innymi słowy, jeśli istnieją cztery możliwe kroki, istnieje 1 na 4 (lub 25) szansa, że ​​Walker podejmie dany krok. Przy dziewięciu możliwych krokach jest to szansa 1 na 9 (lub 11,1). Dogodnie tak działa funkcja losowa (). Przetwarzanie generatora liczb losowych (który działa za kulisami) generuje tzw. Równomierny rozkład liczb. Możemy przetestować tę dystrybucję za pomocą szkicu Processing, który zlicza się za każdym razem, gdy wybierana jest losowa liczba i wykreśla ją jako wysokość prostokąta. Twoja przeglądarka nie obsługuje tagu canvas. Przykład I.2: Losowa dystrybucja liczb Tablica do śledzenia, jak często wybierane są losowe liczby Wybierz losową liczbę i zwiększ liczbę. Wykreślanie wyników Powyższy zrzut ekranu pokazuje rezultat działania szkicu przez kilka minut. Zwróć uwagę, że każdy słupek wykresu różni się wysokością. Nasz rozmiar próby (tj. Liczba wybranych losowo liczb) jest raczej niewielki i występują pewne sporadyczne rozbieżności, w których niektóre liczby są wybierane częściej. Z biegiem czasu, dzięki dobremu generatorowi liczb losowych, to się wyrówna. Numery pseudolosowe Numery losowe, które otrzymujemy z funkcji random (), nie są przypadkowe, dlatego są znane jako pseudolosowe. Są one wynikiem matematycznej funkcji symulującej przypadkowość. Ta funkcja dawałaby pewien wzór w czasie, ale ten okres czasu jest tak długi, że dla nas jest równie dobry jak czysta przypadkowość. Ćwicz I.1 Stwórz przypadkowego piechura, który ma skłonność do poruszania się w dół iw prawo. (Zobacz rozwiązanie tego w następnej sekcji). I.3 Prawdopodobieństwa i nierównomierne rozkłady Pamiętaj, kiedy zaczynałeś programowanie w przetwarzaniu Być może chciałeś narysować wiele kółek na ekranie. Więc powiedziałeś do siebie: Och, wiem. Rysuję wszystkie te kręgi w losowych lokalizacjach, z losowymi rozmiarami i losowymi kolorami. W systemie grafiki komputerowej jego często najłatwiejsze jest zalanie systemu losowością. W tej książce starano się jednak zbudować systemy wzorowane na tym, co widzimy w naturze. Niedopuszczalność losowości nie jest szczególnie przemyślanym rozwiązaniem problemu z projektowaniem, w szczególności problemem, który polega na tworzeniu organicznej lub naturalnie wyglądającej symulacji. Za pomocą kilku sztuczek możemy zmienić sposób, w jaki używamy random () do tworzenia nierównomiernych rozkładów liczb losowych. Przyda się to w całej książce, gdy przyjrzymy się kilku różnym scenariuszom. Kiedy na przykład badamy algorytmy genetyczne, potrzebujemy metodologii przeprowadzania selekcji, która powinna zostać wybrana przez członków naszej populacji, aby przekazać ich DNA następnej generacji. Pamiętaj o koncepcji przetrwania najsilniejszych. Powiedzmy, że mamy populację rozwijających się małp. Nie każda małpa będzie miała równe szanse na rozmnożenie. Aby symulować ewolucję Darwina, nie możemy po prostu wybrać dwóch przypadkowych małp, aby być rodzicami. Potrzebujemy bardziej pasujących, aby byli bardziej skłonni do wyboru. Musimy określić prawdopodobieństwo najsilniejszych. Na przykład, szczególnie szybka i silna małpa może mieć 90 szans na prokreację, podczas gdy słabsza ma tylko 10 szans. Zatrzymajmy się tutaj i spójrzmy na podstawowe zasady prawdopodobieństwa. Najpierw zbadaj prawdopodobieństwo pojedynczego zdarzenia, tj. Prawdopodobieństwo wystąpienia danego zdarzenia. Jeśli masz system z pewną liczbą możliwych wyników, prawdopodobieństwo wystąpienia danego zdarzenia jest równe liczbie wyników, które kwalifikują się jako zdarzenie podzielone przez całkowitą liczbę wszystkich możliwych wyników. Rzut monetą jest prostym przykładem ma tylko dwa możliwe wyniki, głowy lub ogony. Jest tylko jeden sposób na odwrócenie głów. Prawdopodobieństwo, że moneta zmieni się w głowę, jest więc podzielone przez dwa: 12 lub 50. Weź talię złożoną z pięćdziesięciu dwóch kart. Prawdopodobieństwo wylosowania asa z tej talii to: liczba asów liczba kart 4 52 0,077 Prawdopodobieństwo dobrania diamentu to: liczba diamentów liczba kart 13 52 0,25 25 Możemy również obliczyć prawdopodobieństwo wystąpienia wielu zdarzeń w sekwencji . Aby to zrobić, po prostu pomnożymy indywidualne prawdopodobieństwa każdego zdarzenia. Prawdopodobieństwo, że monety podniosą głowy trzy razy z rzędu, to: (12) (12) (12) 18 (lub 0,125), co oznacza, że ​​moneta będzie trzy razy pod rząd wyrzucać główki raz na osiem razy (za każdym razem trzy rzuty). Ćwiczenie I.2 Jakie jest prawdopodobieństwo wylosowania dwóch asów w rzędzie z talii złożonej z pięćdziesięciu dwóch kart Istnieje kilka sposobów, w jakie możemy użyć funkcji random () z prawdopodobieństwem w kodzie. Jedną z technik jest wypełnienie tablicy wybranymi liczbami, z których są powtarzane, a następnie wybierz losowe liczby z tej tablicy i wygeneruj zdarzenia na podstawie tych wyborów. 1 jest przechowywany w macierzy dwa razy, co zwiększa prawdopodobieństwo jej pobrania. Ćwiczenie I.3 Stwórz przypadkowego piechura z dynamicznymi prawdopodobieństwami. Na przykład, czy możesz dać mu 50 szansy na poruszanie się w kierunku myszy I.4 A Normalny rozkład liczb losowych Pozwala wrócić do tej populacji symulowanych małp przetwarzania. Twój program generuje tysiące obiektów Małpy, z których każda ma wartość wysokości między 200 a 300 (ponieważ jest to świat małp o wysokości od 200 do 300 pikseli). Czy to dokładnie przedstawia wysokość istot rzeczywistych? Pomyśl o zatłoczonym chodniku w Nowym Jorku. Wybierz dowolną osobę z ulicy i może się wydawać, że jej wysokość jest losowa. Niemniej jednak nie jest to rodzaj losowego, że losowe () produkuje. Wysokości ludzi nie są równomiernie rozłożone, jest o wiele więcej osób o przeciętnym wzroście, niż bardzo wysokich lub bardzo krótkich. Aby symulować naturę, możemy chcieć, aby było bardziej prawdopodobne, że nasze małpy mają średnią wysokość (250 pikseli), a mimo to pozwalają, by były czasami bardzo krótkie lub bardzo wysokie. Rozkład wartości skupionych wokół średniej (określanej jako średnia) jest znany jako rozkład normalny. Jest również nazywany rozkładem Gaussa (nazwanym dla matematyka Carla Friedricha Gaussa) lub, jeśli jesteś Francuzem, dystrybucją Laplacian (nazwaną od Pierre-Simon Laplace). Obaj matematycy pracowali równolegle na początku XIX wieku nad zdefiniowaniem takiego rozkładu. Kiedy wykreślisz rozkład, otrzymasz coś, co wygląda następująco, nieformalnie zwane krzywą dzwonową: Krzywa jest generowana przez funkcję matematyczną, która definiuje prawdopodobieństwo wystąpienia dowolnej wartości jako funkcji średniej (często zapisanej jako, grecka litera mu) i odchylenie standardowe (grecka litera sigma). Średnia jest dość łatwa do zrozumienia. W przypadku naszych wartości wzrostu między 200 a 300, prawdopodobnie masz intuicyjne poczucie średniej (tj. Średniej) jako 250. Co jednak, gdybym powiedział, że odchylenie standardowe wynosi 3 lub 15 Co to oznacza dla liczby Powyższe wykresy powinny dać nam wskazówkę. Wykres po lewej pokazuje nam rozkład o bardzo niskim odchyleniu standardowym, gdzie większość wartości skupia się blisko średniej. Wykres po prawej pokazuje nam wyższe odchylenie standardowe, gdzie wartości są bardziej równomiernie rozłożone od średniej. Liczby działają następująco: Biorąc pod uwagę populację, 68 członków tej populacji będzie miało wartości w zakresie jednego odchylenia standardowego od średniej, 98 w ramach dwóch standardowych odchyleń i 99,7 w ramach trzech odchyleń standardowych. Przy standardowym odchyleniu 5 pikseli, tylko 0,3 wysokości małpy będzie mniejsze niż 235 pikseli (trzy odchylenia standardowe poniżej średniej 250) lub większe niż 265 pikseli (trzy odchylenia standardowe powyżej średniej z 250). Obliczanie średniej i odchylenia standardowego Rozważ klasę dziesięciu uczniów, którzy otrzymają następujące wyniki (na 100) w teście: 85, 82, 88, 86, 85, 93, 98, 40, 73, 83 Odchylenie standardowe jest obliczane jako pierwiastek kwadratowy średniej kwadratów odchyleń wokół średniej. Innymi słowy, weźcie różnicę od średniej dla każdej osoby i wyrównaj ją (wariancję). Obliczyć średnią wszystkich tych wartości i przyjąć pierwiastek kwadratowy jako odchylenie standardowe. Odchylenie standardowe jest pierwiastkiem kwadratowym średniej wariancji: 15.13 Na szczęście, aby użyć rozkładu normalnego liczb losowych w szkicu przetwarzania, nie musimy wykonywać żadnych z tych obliczeń sami. Zamiast tego możemy skorzystać z klasy zwanej Random. które dostajemy za darmo jako część domyślnych bibliotek Java zaimportowanych do przetwarzania (więcej informacji znajduje się w dokumentacji JavaDocs). Aby użyć klasy Random, musimy najpierw zadeklarować zmienną typu Random i utworzyć obiekt losowy w setup (). Używamy generatora nazw zmiennych, ponieważ to, co mamy tutaj, może być traktowane jako generator liczb losowych. Jeśli chcemy wytworzyć losową liczbę o rozkładzie normalnym (lub Gaussowskim) za każdym razem, gdy będziemy przebiegać przez draw (). jego tak proste, jak wywołanie funkcji nextGaussian (). Pytanie o liczbę losową Gaussa. (Uwaga: nextGaussian () zwraca double i musi zostać przekonwertowany na float.) Heres to. Co powinniśmy zrobić z tą wartością Co gdybyśmy chcieli jej użyć, na przykład, aby przypisać pozycję x kształtu, który narysujemy na ekranie Następna funkcja (normalna) Gaussa zwraca rozkład normalny liczb losowych o następujących parametrach: średnia zerowa i odchylenie standardowe jednego. Powiedzmy, że chcemy średnią 320 (środkowy horyzontalny piksel w oknie o szerokości 640) i standardowe odchylenie 60 pikseli. Możemy dostosować wartość do naszych parametrów, mnożąc ją przez odchylenie standardowe i dodając średnią. Twoja przeglądarka nie obsługuje tagu canvas. Przykład I.4: Rozkład Gaussa Zauważ, że nextGaussian () zwraca double. Pomnóż przez odchylenie standardowe i dodaj średnią. Rysując elipsy jedna nad drugą z pewną przezroczystością, możemy zobaczyć rozkład. Najjaśniejsze miejsce znajduje się w pobliżu centrum, gdzie większość wartości skupia się, ale co jakiś czas kręgi są rysowane dalej na prawo lub na lewo od centrum. Ćwiczenie I.4 Rozważ symulację rozpryski farby narysowanej jako zbiór kolorowych kropek. Większość skupisk farby znajduje się w centralnym miejscu, ale niektóre kropki rozbijają się w kierunku krawędzi. Czy możesz użyć rozkładu normalnego liczb losowych do wygenerowania położenia kropek Czy możesz również użyć rozkładu normalnego liczb losowych do wygenerowania palety kolorów Ćwiczenie I.5. Chód losowy Gaussa jest zdefiniowany jako taki, w którym rozmiar kroku (jak daleko obiekt porusza się w danym kierunku) jest generowany z rozkładem normalnym. Zastosuj tę odmianę naszego losowego spaceru. I.5 Niestandardowa dystrybucja liczb losowych Nadejdzie czas w twoim życiu, kiedy nie chcesz jednolitego rozkładu wartości losowych lub gaussowskiego. Wyobraźmy sobie przez chwilę, że jesteś przypadkowym wędrowcem szukającym jedzenia. Poruszanie się losowo wokół przestrzeni wydaje się rozsądną strategią znajdowania czegoś do jedzenia. W końcu nie wiesz, gdzie jest jedzenie, więc możesz równie dobrze wyszukiwać losowo, dopóki go nie znajdziesz. Problemem, jak być może zauważyliście, jest to, że przypadkowi wędrowcy wielokrotnie powracają do wcześniej odwiedzanych miejsc (to się nazywa nadpróbkowanie). Jedną ze strategii unikania takiego problemu jest, co bardzo często, podejmowanie bardzo dużego kroku. Umożliwia to spacerowiczowi losowe losowanie w określonym miejscu, podczas gdy okresowe skoki bardzo daleko, aby zmniejszyć ilość nadpróbkowania. Ta odmiana losowego spaceru (nazywana lotem Lvy) wymaga niestandardowego zestawu prawdopodobieństw. Chociaż nie jest to dokładna implementacja lotu Lvy, możemy określić rozkład prawdopodobieństwa w następujący sposób: im dłuższy krok, tym mniejsze prawdopodobieństwo, że zostanie wybrany krótszy krok, tym bardziej prawdopodobne. Wcześniej w tym prologu zauważyliśmy, że możemy wygenerować niestandardowe rozkłady prawdopodobieństwa, wypełniając tablicę wartościami (niektóre są duplikowane, aby były wybierane częściej) lub testując wynik losowy (). Możemy wprowadzić lot Lvy, mówiąc, że istnieje 1 szansa, że ​​piechur zrobi duży krok. A 1 szansa na wykonanie dużego kroku Jednak zmniejsza to prawdopodobieństwo do określonej liczby opcji. Co by było, gdybyśmy chcieli wprowadzić ogólniejszą regułę, im większa liczba, tym bardziej prawdopodobne jest, że zostanie ona wybrana. 3.145 byłoby bardziej prawdopodobne, że zostanie wybrane niż 3,144, nawet jeśli prawdopodobieństwo to jest tylko odrobinę większe. Innymi słowy, jeśli x jest liczbą losową, możemy odwzorować prawdopodobieństwo na osi y z y x. Jeśli potrafimy wymyślić sposób generowania rozkładu liczb losowych zgodnie z powyższym wykresem, będziemy mogli zastosować tę samą metodologię do dowolnej krzywej, dla której mamy formułę. Jednym rozwiązaniem jest wybranie dwóch liczb losowych zamiast jednego. Pierwsza liczba losowa to po prostu losowa liczba. Drugim jest jednak to, co dobrze nazywamy kwalifikującą się losową wartością. Powie nam, czy użyć pierwszego, czy wyrzucić i wybrać inny. Liczby, które mają łatwiejsze kwalifikacje, będą wybierane częściej, a liczby, które rzadko kwalifikują się, będą wybierane rzadko. Oto kroki (na razie rozważmy tylko losowe wartości od 0 do 1): Wybierz liczbę losową: R1 Oblicz prawdopodobieństwo P, które R1 powinno się zakwalifikować. Spróbujmy: P R1. Wybierz inną liczbę losową: R2 Jeśli R2 jest mniejsze niż P, to znaleźliśmy nasz numerR1 Jeśli R2 nie jest mniejsze niż P, wróć do kroku 1 i zacznij od nowa. Tutaj mówimy, że prawdopodobieństwo, że wartość losowa się kwalifikuje, jest równe samej liczbie losowej. Powiedzmy, że wybieramy 0,1 dla R1. Oznacza to, że R1 będzie miał 10 szans na zakwalifikowanie się. Jeśli wybierzemy 0,83 dla R1, to będzie to 83 szansa na zakwalifikowanie się. Im wyższa liczba, tym większe prawdopodobieństwo, że faktycznie ją wykorzystamy. Oto funkcja (nazwana dla metody Monte Carlo, która została nazwana dla kasyna Monte Carlo), która implementuje powyższy algorytm, zwracając losową wartość między 0 a 1. Robimy to na zawsze, dopóki nie znajdziemy kwalifikującej się losowej wartości. Ćwiczenie I.6 Użyj niestandardowego rozkładu prawdopodobieństwa, aby zmienić rozmiar kroku wykonanego przez przypadkowy chodzik. Wielkość kroku można określić, wpływając na zakres wybranych wartości. Czy możesz mapować prawdopodobieństwo wykładniczo. zrobienie prawdopodobieństwa, że ​​wybrana wartość jest równa wartości podniesionej do kwadratu. Równomierny rozkład rozmiarów stopni. Zmień to (Później zobacz jak to zrobić bardziej efektywnie używając wektorów.) I.6 Perlin Noise (A Smoother Approach) Dobry generator liczb losowych tworzy liczby, które nie mają związku i nie wykazują dostrzegalnego wzorca. Jak zaczynamy widzieć, odrobina przypadkowości może być dobra przy programowaniu organicznych, realistycznych zachowań. Jednak przypadkowość jako jedna zasada przewodnia niekoniecznie jest naturalna. Algorytm znany jako Perlin noise, nazwany od swojego wynalazcy, Kena Perlina, bierze tę koncepcję pod uwagę. Perlin opracował funkcję szumu podczas pracy nad oryginalnym filmem Tron we wczesnych latach 80. zaprojektowano go do tworzenia tekstur proceduralnych dla efektów generowanych komputerowo. W 1997 Perlin zdobył Oscara za osiągnięcia techniczne za tę pracę. Hałasu Perlin można używać do generowania różnych efektów o naturalnych właściwościach, takich jak chmury, krajobrazy i wzorzyste tekstury, takie jak marmur. Szum Perlina ma bardziej organiczny wygląd, ponieważ tworzy naturalnie uporządkowaną (gładką) sekwencję liczb pseudolosowych. Wykres po lewej stronie pokazuje szum Perlina w czasie, a oś X przedstawia notę ​​czasu gładkości krzywej. Wykres po prawej pokazuje liczby losowe z czasem. (Kod do generowania tych wykresów jest dostępny w załączonych książkach do pobrania). Rysunek I.5: Hałas Rysunek I.6: Losowe przetwarzanie ma wbudowaną implementację algorytmu szumu Perlin: funkcja noise (). Funkcja noise () przyjmuje jeden, dwa lub trzy argumenty, ponieważ szum jest obliczany w jednym, dwóch lub trzech wymiarach. Zacznijmy od spojrzenia na jednowymiarowy szum. Detal hałasu Odniesienie do przetwarzania hałasu mówi nam, że szum jest obliczany na kilka oktaw. Wywołanie funkcji noiseDetail () spowoduje zmianę zarówno liczby oktaw, jak i ich znaczenia względem siebie. To z kolei zmienia zachowanie funkcji szumu. Internetowy wykład Ken Perlina pozwala dowiedzieć się więcej o tym, jak działa sam perlit. Rozważ rysowanie okręgu w naszym oknie przetwarzania w losowej lokalizacji x. Losowa lokalizacja x Teraz, zamiast losowej lokalizacji x, chcemy, aby zgrupowanie szumów Perlin było bardziej płynne. Możesz myśleć, że wszystko, co musisz zrobić, to zastąpić random () przez noise (). tj. lokalizacja x szumu Podczas gdy koncepcyjnie jest to dokładnie to, co chcemy, aby obliczyć wartość x, która mieści się w zakresie od 0 do szerokości, zgodnie z Perlin noisethis nie jest poprawną implementacją. Podczas gdy argumenty funkcji random () określają zakres wartości między minimum i maksimum, noise () nie działa w ten sposób. Zamiast tego, zakres wyjściowy jest fixedit zawsze zwraca wartość między 0 a 1. Widzimy za chwilę, że możemy obejść to z łatwością za pomocą funkcji Mapowania (), ale najpierw musimy sprawdzić, co dokładnie szum () oczekuje, że my przekażemy jako argument. Możemy myśleć o jednowymiarowym szumie Perlina jako liniowej sekwencji wartości w czasie. Na przykład: jak szybko zwiększamy t wpływa również na gładkość dźwięku. Jeśli wykonamy duże skoki w czasie, to pomijamy z wyprzedzeniem, a wartości będą bardziej losowe. Spróbuj uruchomić kod kilka razy, zwiększając t o 0,01, 0,02, 0,05, 0,1, 0,0001, a zobaczysz różne wyniki. Hałas mapowania Teraz byli gotowi odpowiedzieć na pytanie, co zrobić z wartością szumu. Gdy mamy wartość z zakresu od 0 do 1, to do nas, aby odwzorować ten zakres do tego, co chcemy. Najłatwiej to zrobić za pomocą funkcji Mapowania (). Funkcja map () przyjmuje pięć argumentów. Najpierw jest wartość, którą chcemy odwzorować, w tym przypadku n. Następnie musimy podać wartości zakres prądu (minimum i maksimum), a następnie nasz pożądany zakres. W tym przypadku wiemy, że hałas ma zakres od 0 do 1, ale śledzie jak narysować nasz okrąg z przedziałem od 0 do szerokości okna. Zwróć uwagę, że powyższy przykład wymaga dodatkowej pary zmiennych: tx i ty. Dzieje się tak, ponieważ musimy śledzić dwie zmienne czasowe, jedną dla lokalizacji x obiektu Walkera i jedną dla lokalizacji y. Ale jest coś dziwnego w tych zmiennych. Dlaczego tx zaczyna się od 0 a ty na 10.000 Chociaż te liczby są dowolnymi wyborami, bardzo dokładnie zainicjowaliśmy nasze dwie zmienne czasowe o różnych wartościach. Dzieje się tak dlatego, że funkcja szumu jest deterministyczna: daje ten sam wynik dla określonego czasu t za każdym razem. Gdybyśmy prosili o wartość szumu w tym samym czasie t zarówno dla x, jak i dla y. wtedy x i y zawsze byłyby równe, co oznacza, że ​​obiekt Walkera poruszałby się tylko po przekątnej. Zamiast tego, po prostu używamy dwóch różnych części przestrzeni szumowej, zaczynając od 0 dla xi 10 000 dla y tak, że x i y mogą wydawać się działać niezależnie od siebie. Tak naprawdę nie ma tu rzeczywistej koncepcji czasu. Jest to użyteczna metafora, która pomaga nam zrozumieć, jak działa funkcja szumu, ale tak naprawdę to, co mamy, to przestrzeń, a nie czas. Powyższy wykres przedstawia liniową sekwencję wartości szumu w jednowymiarowej przestrzeni i możemy poprosić o wartość w określonym miejscu x, kiedy tylko chcemy. W przykładach często widzi się zmienną o nazwie xoff, która wskazuje przesunięcie x wzdłuż wykresu szumu, a nie t dla czasu (jak pokazano na wykresie). Ćwiczenie I.7 W powyższym modelu losowym wynik działania szumu jest mapowany bezpośrednio na lokalizację Walkera. Utwórz przypadkowy chodzik, w którym zamiast odwzorować wynik funkcji noise () na wielkość kroku Walkera. Hałas dwuwymiarowy Ta idea wartości szumów żyjących w jednowymiarowej przestrzeni jest ważna, ponieważ prowadzi nas wprost do dyskusji o przestrzeni dwuwymiarowej. Pomyślmy o tym przez chwilę. W przypadku jednowymiarowego szumu mamy ciąg wartości, w którym dowolna dana wartość jest podobna do sąsiada. Ponieważ wartość jest w jednym wymiarze, ma tylko dwóch sąsiadów: wartość, która pojawia się przed nią (po lewej na wykresie) i taką, która pojawia się po niej (po prawej). Rysunek I.10: Hałas 1D Rysunek I.11: Hałas 2D Hałas dwuwymiarowy działa dokładnie w ten sam sposób koncepcyjnie. Różnica polega na tym, że nie patrzymy na wartości wzdłuż ścieżki liniowej, ale na wartości, które znajdują się na siatce. Pomyśl o kawałku papieru milimetrowego z liczbami zapisanymi w każdej komórce. Podana wartość będzie podobna do wszystkich jej sąsiadów: powyżej, poniżej, po prawej, po lewej i po przekątnej. Jeśli miałbyś wizualizować ten papier milimetrowy z każdą wartością odwzorowaną na jasność koloru, dostałeśby coś, co wygląda jak chmury. Biały znajduje się obok jasnoszarego, który znajduje się obok szarego, który znajduje się obok ciemnoszarego, który znajduje się obok czarnego, który znajduje się obok ciemnoszarego itp. Dlatego właśnie pierwotnie wynaleziono hałas. Zmieniasz trochę parametry lub bawisz się kolorem, aby wynikowy obraz wyglądał bardziej jak marmur, drewno lub jakakolwiek inna organiczna tekstura. Przyjrzyjmy się, jak zaimplementować dwuwymiarowy szum w przetwarzaniu. Jeśli chcesz losowo pokolorować każdy piksel okna, potrzebujesz pętli zagnieżdżonej, która uzyska dostęp do każdego piksela i wybierze losową jasność. Losowa jasność Aby zabarwić każdy piksel zgodnie z funkcją noise (), zrób dokładnie to samo, tylko zamiast wywoływania random () well call noise (). Jasność szumu Perlina Jest to koncepcja ładnego startu, która daje wartość szumu dla każdej (x. Y) lokalizacji w naszej dwuwymiarowej przestrzeni. Problem polega na tym, że nie osiągniemy mętnej jakości, jakiej chcemy. Przeskakiwanie z piksela 200 na piksel 201 jest zbyt dużym skokiem przez szum. Pamiętaj, że kiedy pracowaliśmy z jednowymiarowym szumem, zwiększaliśmy naszą zmienną czasową o 0,01 dla każdej klatki, a nie o 1 Prawidłowym rozwiązaniem tego problemu jest użycie różnych zmiennych dla argumentów szumu. Na przykład możemy zwiększyć wartość zmiennej xoff za każdym razem, gdy poruszamy się w poziomie, oraz zmienną yoff za każdym razem, gdy poruszamy się w pionie przez zagnieżdżone pętle. Przykład I.6: Hałas Perlin 2D Rozpocznij xoff na 0. Dla każdego xoff, zacznij yoff na 0.

No comments:

Post a Comment