Grel kosruowaie pęli Symulacje Moe Carlo (MC) W Grelu, aby przyspieszyć pracę, wykoać iesadardową aalizę (ie do wyklikaia ) możliwe jes użycie pęli. Pęle realizuje komeda loop, kóra przyjmuje zesaw iych komed w sposób blokowy i wykouje je zgodie z zadaą ilością powórzeń. Ogóla składia jes asępująca: loop wyrażeie-korolujące [ --progressive --verbose --quie ] loop body edloop wyrażeie korolujące jes o sposób, w jaki pęla będzie zadawaa. Składia Grela przewiduje pięć główych ypów akich wyrażeń: pęle zliczające, pęle while, pęle ideksowae, pęle foreach i pęle for. Pęle zliczające, o pęle, kóre wykoują się bezpośredio określoą ilość razy. W ym przypadku, wyrażeiem korolującym jes liczba aurala (p. loop 500), bądź eż azwa umeryczej zmieej z bazy daych (loop zmiea). W przypadku zmieej z bazy daych, domyślie Grel spodziewa się, że jes oa skalarem i jej warość usala liczbę powórzeń pęli. Jeśli jedak zmiea jes wekorem warości, o Grel bierze pierwszy jego eleme. Poado, gdy wybraa warość ie jes liczbą całkowią, o jes do akiej zaokrąglaa. Np.: ger a=0 loop 0 a=a+ edloop pri a Pęle while, o pęle, w kórych wyrażeie korolujące przybiera formę ierówości. Lewą sroą ej ierówości powia być zmiea z bazy daych, zaś prawą skalar lub ia zmiea. Przykładowo, pęla: loop essdiff>0.000 będzie się wykoywać, że zmiea essdiff będzie rówa lub miejsza iż liczba 0,000. Pęle ideksowae, o pęle, kórych powórzeia ideksujemy w ramach ych pęli worzoa jes dodakowa zmiea, kóra zawiera iformację o umerze powórzeia. Składia pęli jes asępująca: loop i=a..b gdzie A i B są liczbami auralymi, akimi, że B-A saowi liczbę powórzeń pęli. Zmiea ideksująca przyjmuje więc aurale warości z przedziału <A;B>. Moża zarówo
odwoływać się do warości zmieej ideksującej i, jak i wykorzysywać ją do budowaia zmieych eksowych. Oo przykłady: ope greee4_ loop i=..6 smpl (ui=i) --resric --replace summary 3 4 5 6 edloop oraz: ope greee4_ loop i=..3 smpl (ui=i) --resric --replace ger C$i=C ger Q$i=Q ger PF$i=PF ols C$i cos Q$i PF$i edloop Pęle ideksowae częso zajdują zasosowaie przy operacjach a zmieych saowiących wekory lub macierze. Przykładem (choć będą lepsze) jes wyzaczeie średiej warukowej i odchyleia sadardowego warukowego: ope greee_ /*dyskreyzacja zmieej Z8:*/ discree Z8 /*poiższa formuła, pomimo ego, że powia - ie działa (choć powia działać od wersji.6.): /*v8 = values(z8)*/ /*powia oa zwracać wekor warości zmieej Z8*/ /*o iedociągięcie Grela obejdziemy "ręczie":*/ /*Z8 przyjmuje warości {,,3,4,5}. Swórzmy więc wekor kolumowy zawierający e warości:*/ marix v8={;;3;4;5} = rows(v8) /*ilość warości w v8*/ loop for i=.. scalar xi = v8[$i] smpl (Z8=xi) --resric --replace #ograiczeie próby #usaleie formau wyświeleia saysyk i usaleie samych saysyk: prif "mea(y Z8 = %g) = %8.5f, sd(y Z8 = %g) = %g\", \ xi, mea(y), xi, sd(y) edloop Pęle foreach rówież używają ideksowaia, z ymże zmieymi ideksującymi są koleje eksowe elemey z lisy. Składia jes asępująca: loop foreach i lisa Przykładowo mamy:
ope daa4-7 loop foreach i uemp cig spiris ols chd cos $i #wykoae zosaą 3 regresje sopy umieralości a sałej i #jedej z rzech zmieych objaśiających edloop Pęle for, mają asępującą składię: loop for (r=a ; r (<, >, >=, <=) b ; r (+=, -=) c), gdzie a jes warukiem począkowym dla zmieej korolującej pęlę r, b jes warukiem końcowym, zaś c jes wielkością przyrosu lub zmiejszeia się r. Przykładowo: loop for (rr=-pi ; rr<pi ; rr+=0.) Opcje - -verbose - -quie oraz - -progressive wsawiae po wyrażeiu korolującym pęlę, odpowiedio zmuszają Grela do drukowaia wszyskich sadardowo pojawiających się w wyiku działaia komed komearzy, powsrzymują go od ego, zaś opcja --progressive używaa jes przy symulacjach Moe Carlo i w użyeczy sposób modyfikuje działaie komed ols oraz pri i sore. SYMULACJE MONTE CARLO Symulacje sochasycze, o echiki umerycze polegające a przedsawiaiu zagadień maemayczych za pomocą szeregu realizacji zmieych losowych. Meoda Moe Carlo zaś, polega a umeryczym rozwiązywaiu pewych problemów poprzez przeprowadzaie symulacji sochasyczych. Liczby pseudolosowe: Są o liczby geerowae przez fukcję deermiisyczą, jedak w prakyce ieodróżiale od liczb losowych. Oczywiście, jeśli koś za formułę, o jes w saie przewidzieć koleją warość, ale iezajomość formuły w zasadzie o uiemożliwia. Czy widać w jaki sposób zosały wygeerowae e liczby? -,, 7, 5, A e? 3, 69, 87,, 3, 9, 67, 4,? Okazuje się, że i jede i drugi szereg wygeeroway zosał przy użyciu ściśle deermiisyczej fukcji. Różica polega a ym, że o ile w pierwszym przypadku koleja warość szeregu jes sosukowo ławo przewidywala, o yle w drugim przypadku jes o iezmierie rude zadaie, by usalić fukcję geerującą dae. Część maeriałów w oparciu o Charemza i Deadma Nowa ekoomeria, PWE Warszawa 99
Fukcje e o: i. = 3 i = 0,,,... i. i + i 0 = 3 (mod 00) = 3, gdzie x (mod a ) o resza z dzieleia x przez a. Czyli 7(mod 5) =, bo 7/5= 3, a więc resza o. Mamy więc przykładowo: 5 = 3 (mod00) = 3 3(mod 00) = 69(mod 00) = 69 0 = 3 (mod00) = 3 69(mod 00) = 587(mod 00) = 87 = 3 (mod00) = 3 87(mod 00) = 00(mod 00) = 3 Liczba 3 w drugiej fukcji oraz 0 = 3 azywae są ziarami geeraora (seeds). Waże jes, że od wyboru ziare oraz (mod a ) zależy realizacja orzymaego procesu, kóra może pozosawiać losowości wiele do życzeia: = 7 (mod 0) = 3 daje 3,, 7, 9,, 7, 9,, 7, 9 i+ i 0 /*być może waro pokazać jak sumując zmiee z rozkładu jedosajego moża dosać zmieą z rozkładu ormalego zadaie do przemyśleia w domu*/ Szadarowym już przykładem prosego zasosowaia symulacji Moe Carlo jes wyzaczeie liczby π. Wiadomo, że π = 3,459..., jedak aszym zadaiem jes zaleźć umerycze oszacowaie ej liczby. Doskoale wiadomo, że pole koła moża wyzaczyć ze wzoru: = π r, gdzie r saowi promień ego koła. Widać więc, że jeśli przyjmiemy, że r =, o Pk = π. Jak więc skosruować asz eksperyme? Możemy wpisać o koło w figurę, kórej pole zamy wedy sosuek pola koła do pola ej figury, przemożoy przez pole figury P π powiie być rówy liczbie π ( = a (dla r = ) = a π = ap ). P P Jako figurę ajprościej wybrać kwadra: Pk
Koło jes wpisae w kwadra o boku (promień koła eż jes rówy ). Dodakowo, dla usaleie uwagi, wszysko zaprezeowae jes w układzie współrzędych, kórego środek jes w środku koła. Jak eraz mógłby wyglądać eksperyme? Moglibyśmy losowo wybrać z zaprezeowaego fragmeu układu współrzędych, powiedzmy, 00 puków. Część z ich ależała będzie do koła, część ie. Będziemy jedak w saie swierdzić jaki proce losowo wybraych puków ależał do koła. Te sam proce pola kwadrau powiie przybliżać liczbę π. Oczywise jes, że jakość przybliżeia rosła będzie z ilością wybraych puków zajmijmy się więc od razu zamias seką dziesięcioma ysiącami puków. Skryp w Grelu (wersja.6.0) mógłby wyglądać ak: seed 990 ger suma=0 loop 0000 ger xx=*uiform()- #geerujemy puky ger yy=*uiform()- # *uiform() wygeerowałoby zmieą z rozkładu #jedosajego a przedziale (0;). Odejmujemy jedykę, #że zmieić e przedział a (-;), zgodie z #aszym przypadkiem if (xx^+yy^<=) suma=suma+ edif edloop #zliczaie puków, kóre wpadły do koła ger pi_obl=(suma/0000)*4 #bo pole kwadraa=4 ZADANIE Wiemy, że całka: 3 ( x + x) dx = x + x = 8 + 4 6, 67 3 3 x= 0 0 Sosując meodę Moe Carlo, spróbuj umeryczie scałkować podaą fukcję a podaym przedziale. Sprawdzaie własości MNK za pomocą symulacji MC Sosując symulacje Moe Carlo możemy sprawdzić jak precyzyje są oszacowaia MNK (Meody Najmiejszych Kwadraów). Załóżmy, że wygeerujemy zmiee objaśiające (przyjmijmy, że będą dwie e zmiee - x i x ) z rozkładu jedosajego a jakimś przedziale (dla usaleia uwagi: a przedziale (0;30)). Wygeerujemy jeszcze wekor zaburzeń losowych ε z rozkładu sadardowego ormalego. Późiej swórzmy zmieą objaśiaą, y, zgodie z rówaiem: y = 5 + 0x 3x + ε i =,,..., 00 i i i i Mamy eraz po 00 obserwacji (warości) zmieych y, x, x i błędu losowego.
A eraz załóżmy, że ie wiemy w jaki sposób wygeeroway zosał y. Przeprowadzimy regresję liiową zgodie z rówaiem: y = β + β x + β x + ε i 0 i i i Oszacowaia paramerów ej regresji (azwijmy je b0, b, b ) przy użyciu MNK (mamy warości y, x, x ) powiy być bliskie zaym am warościom rówym odpowiedio 5, 0 i -3. Jedokroe powórzeie akiego eksperymeu może jedak wypaczyć jego wyiki realizacje błędów losowych (ε ) mogą przypadkowo zaburzać rezulay. Powórzmy w akim razie e eksperyme 000 razy, w każdym kroku geerując a owo wekor błędów losowych (ε ) (warości x i x wygeerowae a począku eksperymeu pozosaą iezmieioe w czasie jego rwaia zmiee objaśiające mają być z góry usaloe ), a więc rówież wekor warości zmieej objaśiaej y, gdyż zależy o od realizacji ε. W ramach każdego powórzeia eksperymeu, jako jego wyik pojawiać się będzie zesaw oszacowań b0, b, b, kóry zapisywać będziemy do pliku. Dodakowo zapisujemy do ego samego pliku współczyik deermiacji każdego modelu (saysyk poesymacyjych możemy wygeerować zaczie więcej, ale o ie o o uaj chodzi już sam R zapisywać będziemy iejako dla zaspokojeia ciekawości). Po zakończeiu eksperymeu powiiśmy mieć owy plik z 000 obserwacji dla b0, b, b i R. Eksperyme e realizuje skryp MNK (moża zobaczyć jak wyglądałby przebieg jedego powórzeia pęli: MNK_bezpęli ). Proszę go oworzyć i przeaalizować. W wyiku działaia eksperymeu widzimy, że MNK ie powoduje sysemayczych błędów przy szacowaiu paramerów. Czy jedak oszacowaia są zgode? Przypomijmy defiicję zgodości: Esymaor b (gdzie jes ilością obserwacji w pojedyczym eksperymecie a więc u as =00) parameru β jes zgody, jeśli: ( ) plim b = β Czyli dla dowolie małego ε : lim Pr b β < ε = ( ) Z czego, z kolei wyika, że: var( b ) 0 oraz E( b ) β Więc: BIAS( b ) = E( b β ) 0 [ ] RMSE( b ) = var( b ) + E( b β ) 0 (RMSE = Roo Mea Squared Error) Zajmijmy się dla przykładu esymaorem parameru β. RMSE dla esymaora b możemy dalej wyrazić w aszym przypadku jako: [ ] 000 j ( ) 000 j RMSE( b ) var( ) ( ) ( ) = b + E b β = b j β = b j b BIAS = + = 000 000
j gdzie b ozacza realizację b w j-ym eksperymecie. Obciążeie zapiszemy wedy: 000 j BIAS b β = b β 000 j= Wzory e moża oczywiście ławo zasosować rówież dla esymaorów paramerów β 0 i β, jak rówież uogólić dla przypadku m-eksperymeów (a ie kokreie 000). Na asze porzeby powiy oe jedak w zupełości wysarczyć. Policzmy BIAS oraz RMSE dla aszego przypadku (skryp BIAS_RMSE ). I co? Oszacowaia są zgode? Ciężko a razie powiedzieć, gdyż miały oe zbiegać do pewych warości dla odpowiedio dużego. Przeprowadzeie ej symulacji dodakowo dla =0, =00 oraz =500 pozwala zesawić abelkę: =0 =00 =00 =000 BIAS -0,0057-0,0039-0,00054-0,00053 RMSE 0,075 0,04 0,00803 0,0080 Jak widać, oszacowaia są więc zgode, bo w miarę zwiększaia próby, zbiegają do spodziewaych warości. Przypomieie: proces auoregresyjy (AR) Proces auoregresyjy rzędu p, AR(p), moża zapisać jako: y µ β y β y β y ε = + + +... + p p + Zajmiemy się procesami AR(), a więc: y = µ + β y + ε Co po wykluczeiu z aalizy sałej (zw. dryfu), możemy zapisać jako: y = β y + ε Okazuje się, że w przypadku akiego procesu, jego sacjoarość (co o akiego było?) zależy od warości parameru β. Wyróżiamy przypadki:. β =0 wedy proces y sprowadza się do: y = ε, gdzie ε IID(0, σ ) Proces aki azywamy białym szumem (whie oise). Biały szum jes, oczywiście, sacjoary.. β < wedy proces y eż jes sacjoary
3. β wedy proces y jes iesacjoary. Najciekawszym podprzypadkiem jes zw. proces błądzeia losowego (radom walk), dla kórego β =, a więc: y = y + ε Jak moża by wygeerować proces AR() w Grelu? Owórz skryp AR_ge. Zobacz wykres ego procesu. To samo zrób ze skrypami WhieNoise_ge oraz RadomWalk_ge. Eksperyme Newbold a-davies a Dość powszecha jes wiedza, że ie powio się przeprowadzać regresji MNK dla iesacjoarych zmieych, zaś ie ma akich przeciwwskazań dla zmieych sacjoarych. Czy ie jes o ylko czcze gadaie i dmuchaie a zime? Odpowiedzią a o pyaie może być eksperyme Newbold a- Davies a. Polega o a wykoaiu kilku kroków. Oo oe:. Geerujemy asępujące szeregi: x = x + ε y = y + ε dla =,,, 50 (dla usaleia uwagi T=50) gdzie ε, ε są błędami losowymi (białym szumem). Dla usaleia uwagi, przyjmijmy że ε, ε N(0,). Wyika z ego oczywiście, że szeregi x i y są procesami błądzeia losowego, a więc, jak już wiemy, są iesacjoare.. Przeprowadzamy regresje: ε = β ε + blad a. s b. y = βs x + blad Wyraźie widać, że regresja a jes dla zmieych sacjoarych, zaś b dla iesacjoarych (sąd sosowe subskrypy przy paramerach). UWAGA! Zarówo w regresji a, jak i w regresji b zmiea objaśiająca ie powia mieć żadego wpływu a zmieą objaśiaą! 3. Wyzaczamy saysyki esujące isoość zmieej w modelu dla ych dwóch regresji możemy wyzaczyć odpowiedio ( b s ) i ( b s ). Wyzaczamy rówież saysykę Durbia- Wasoa - DW a i DW ( DW = b T = ( e e ) T = e 4. Kroki -3 powarzamy dużą ilość razy (powiedzmy 000), orzymując w e sposób zmiee ( b s ) i ( b s ) oraz DW a i DW b. ).
Dla zmieych ( b s ) i ( b s ), o kórych z eorii ekoomerii wiemy, że powiy mieć rozkład -Sudea o N-K sopiach swobody (u as N-K, o T-=49) obliczamy saysyki opisowe. Dodakowo obliczamy dla ich perceyl odrzuceń hipoezy zerowej (dla α = 0,05 ), co wiemy, że asępuje w ogoach rozkładu, a więc poiżej,5 i powyżej 97,5 perceyla. Iymi słowy musimy zliczyć ilość przypadków, dla kórych: ( bs ) < 0,05 ( T ) ( bs ) < 0,05 ( T ) oraz ( b ) > ( T ) ( b ) > ( T ) s 0,975 s 0,975 Wiadomo rówież, że 0,05 (49) =,0 (asz przypadek). W końcu, aby zaleźć prawdziwą warość kryyczą, sorujemy rosąco ( b s ) i ( b s ) oraz zajdujemy warość,5 perceyla (czyli dla aszych posorowaych szeregów ( b s ) i ( b s ), kórych długość, zgodie z usaleiami rówa jes 000, perceyl e, o średia z obserwacji r 50 i 5). Eksperyme Newbolda-Davisa oprogramoway jes w skrypcie Newbold-Davies a jego wyiki opracowae w ND_wyiki. Oo wyiki: eoreyczy_eoreyczy (49) eoreyczy_geeroway (49) Regresja 'a' (s) Regresja 'b' (s) średia 0 0,008-0,034 5,47 odch. s.,0,08 9, skośość 0 0,034-0,03 0,564 kuroza 0,5 0,53-0,54,094,5 perceyl -,0 -,00 -,98-0,08 % przypadków w obszarze kryyczym 5% średio 5% (w zależości od seeda) 4,0% 8% DW,96 0,8 Z wyików eksperymeu Newbolda-Daviesa widać, że o ile saysyki esowe w regresji dla zmieych sacjoarych mają spodzieway rozkład, o yle w regresji dla zmieych iesacjoarych ich rozkład będzie zupełie iy, co prowadzi do zaczie częsszego odrzucaia hipoezy zerowej, a więc do uzawaia zmieej objaśiającej za isoą.