Sunteți pe pagina 1din 15

1. INTRODUCERE: Cuvantul simulare deriva de la latinescul simulatio care inseamna capacitatea de a reproduce, reprezenta sau imita ceva.

Din cauza ambiguitatilor generate de diversele sensuri ale acestui cuvant in vorbirea obisnuita, este dificil sa se precizeze o semnificatie generala a termenului simulare valabila pentru toate stiintele particulare. Simularea numerica este o tehnica potrivit careia se asociaza sistemului real un model adecvat numit model de simulare care reprezinta (cu ajutorul unui algoritm) toate interactiunile logice ale componentelor sistemului. Astfel, modelul de simulare permite crearea unor experiente artificiale asupra sistemului (exprimate prin numere sau valori logice), iar pe baza prelucrarii acestor experiente, de cele mai multe ori prin procedee ale statisticii matematice, se pot obtine raspunsurile la intrebarile referitoare la sistem. Un model de simulare se realizeaza in mai multe etape. Lucrarea de fata isi propune sa ilustreze fiecare etapa din realizarea unui model de simulare a unei variabile Poisson(), folosind simularea variabilelor Gamma() - notata si Gamma(0, 1, ) si binomiala Binom(n, p). Vom stabili obiectivele prin definirea problemei, urmata de realizarea unei analize primare a datelor prin colectionarea notiunilor necesare, pe care le vom trata amanuntit din punct de vedere matematic. Odata stabilite reperele teoretice, atat din punct de vedere al definitiilor si teoremelor necesare, cat si din punct de vedere al calculelor corespunzatoare si al demonstratiilor, vom elabora un algoritm de simulare in concordanta cu obiectivele initiale si vom prezenta o varianta de implementare a acestuia in programul statistic R. Scrierea programului va fi urmata de doua metode de validare a datelor, precum si de concluzionarea analizei rezultatelor obtinute in vederea verificarii corectitudinii algoritmului prezentat. Vom continua acum cu prima etapa din realizarea unui model de simulare, ce consta in formularea intrebarilor despre sistem la care trebuie sa se gaseasca raspunsuri (adica formularea problemei). Formularea problemei Construiti un program de simulare a variabilei Poisson() folosind simularea variabilelor gamma si binomiale. 2. DEFINITII SI NOTIUNI NECESARE Definitia variabilei aleatoare discrete simple Numim variabila aleatoare discreta o variabila aleatoare ce poate lua un numar cel mult numarabil de valori (adica fie un numar finit de valori, fie o multime de valori numarabila, ale carei elemente formeaza un sir). Notand cu valorile posibile ale variabilei aleatoare X si cu , i = 1, 2, ... , probabilitatile corespunzatoare, reprezentam variabila aleatoare discreta X sub forma:

Cum variabila aleatoare X ia numai valorile rezulta ca avem:

cu probabilitatile

si

Graficul functiei de distributie FX a unei variabile aleatoare discrete X este o functie in scara, ce are discontinuitati la dreapta in punctele xi (salturi egale cu pi in aceste puncte). In continuare, vom prezenta cateva caracteristici numerice ale unei variabile aleatoare discrete: Media : este suma valorilor luate de variabila aleatoare inmultite cu probabilitatile corespunzatoare:

daca aceasta serie este absolut convergenta (in caz contrar, seria fie nu este convergenta, fie valoarea sumei se poate schimba daca se rearanjeaza termenii intr-o alta ordine). Momentul de ordin r ( media variabilei aleatoare Xr ):

Momentul centrat de ordin r (media variabilei aleatoare ( X M(X))r ):

Dispersia ( momentul centrat de ordin 2 ):

Media de ordin r:

Generarea variabilelor discrete legate de probe Exista experimente pentru care sunt posibile numai doua tipuri de rezultate, pe care le vom numi succese (notate prin 1) sau esecuri (insuccese, notate prin 0).

Notam cu p = P(X = 1) probabilitatea unui succes intr-o experienta si q = 1 p = P(X = 0) probabilitatea de esec intr-o experienta. Presupunem ca experientele sunt independente stochastic iar p, 0 p 1, este o constanta. Astfel de experiente se numesc experiente Bernoulli sau probe Bernoulli. Simulare unei probe Bernoulli revine la a simula un eveniment aleator de probabilitate constanta p. Un astfel de eveniment este de exemplu { U < p } unde U este o variabila aleatoare uniforma pe (0,1). Evenimentul contrar { U p } este un esec. Cu alte cuvinte, generarea unei probe Bernoulli revine la generarea variabilei aleatoare asociate:

. Media si dispersia corespunzatoare acestei variabile sunt:

respectiv

Functia de repartitie a lui X este:

In aplicatiile practice (biologie, controlul statistic al calitatii etc.) joaca un rol important o serie de variabile aleatoare care se exprima ca numarul succeselor/esecurilor intrun sir de experiente Bernoulli. In continuare ne vom ocupa de generarea unei astfel de variabile aleatoare, si anume, variabila binomiala. Definitia repartitiei binomiale O variabila aleatoare X reprezentand numarul de succese obtinute in n repetari independente ale unui experiment Bernoulli in care probabilitatea succesului este p, se numeste variabila aleatoare binomiala cu parametrii n si p si are forma:

unde este probabilitatea obtinerii a i succese (si a n i insuccese), i = 0,1,..., n, iar P(X = i) este termenul general al dezvoltarii binomului , de unde deriva si denumirea de repartitie binomiala. Observam ca are loc urmatoarea relatie:

Media si dispersia sunt date de:

si respectiv

de unde putem deduce ca

, Pentru generarea variabilei binomiale se observa ca daca Bi, 1 i n sunt variabile aleatoare de forma :

asociate la n probe Bernoulli independente, atunci variabila binomiala este de forma:

pentru care functia caracteristica este:

Cu functia caracteristica obtinuta in aceasta forma, putem deduce usor urmatoarele formule pentru medie si dispersie (observam corectitudinea acestora din faptul ca rezultatele coincid cu cele obtinute mai sus):

Repartitia binomiala are diverse aplicatii practice, in special in controlul statistic al calitatii unde X reprezinta numarul de piese corespunzatoare in n probe (aici p este probabilitatea ca extragand la intamplare o piesa dintr-un lot de volum mare, aceasta sa fie corespunzatoare). Variabila Binom(n, p) are si o interpretare in termeni de experiment cu o urna. Astfel, sa presupunem ca intr-o urna avem A bile albe si B bile negre, A + B = N. Presupunem ca se realizeaza extractii succesive din urna si dupa fiecare extractie se introduce bila extrasa la loc in urna (experienta cu bila intoarsa). Fie p = A/N probabilitatea de a extrage o bila alba intr-o extractie. De aici rezulta ca X = numarul

de bile albe in n extractii succesive cu intoarcere este o variabila binomiala Binom(n, p). Definitia repartitiei Poisson Variabila aleatoare discreta X, unde , are o repartitie Poisson() (adica de parametru , unde > 0) daca functia sa de frecventa este urmatoarea:

Functia caracteristica a variabilei Poisson() este :

de unde deducem ca: . Repartitia Poisson() este repartitia evenimentelor rare. Mai precis, X reprezinta numarul de evenimente rare (de exemplu, de veniri la un sistem de asteptare) care apar pe unitatea de timp. Evenimentele sunt independente si se produc la intervale aleatoare de timp astfel incat un eveniment se produce pe intervalul de timp cu probabilitatea unde:

( este neglijabila in raport cu ) iar probabilitatea ca pe acelasi interval sa se produca mai mult de un eveniment (conditia de raritate) este (adica este neglijabila). Numarul de evenimente rare ce se produc pe unitatea de timp reprezinta o variabila aleatoare Poisson(), unde parametrul este intensitatea cu care se produc aceste evenimente. Se poate arata ca intervalul de timp dintre aparitiile consecutive a doua astfel de evenimente este o variabila exponentiala negativa de parametru . Deci pentru a genera variabila X trebuie sa generam intervale de timp de venire astfel incat suma lor sa acopere intervalul de timp egal cu unitatea. Numarul j al acestor variabile va fi o valoare de selectie a variabilei Poisson. In concluzie, j satisface conditia:

Daca tinem seama de formula de generare prin inversare a variabilei exponentiale de parametru , si anume:

unde Ui sunt uniforme (0, 1), deducem ca j satisface conditia:

sau Pe baza ultimei relatii de mai sus se poate construi cu usurinta un algoritm pentru simularea lui X, iar cu rezultatele calculelor pentru momentele de ordinul 1 si 2, precum si al dispersiei se poate realiza validarea acestui algoritm, asupra caruia insa nu ne vom opri aici. Definitia repartitiei Gamma O variabila aleatoare Y este de tipul gamma, notata cu sa de repartitie este de forma , daca densitatea

unde sunt respectiv parametri de locatie, de scala si de forma ai variabilei. Functia gamma este definita de urmatoarea relatie:

Daca notam cu X variabila urmatoarea:

atunci se constata ca legatura intre X si Y este

adica generarea lui Y se reduce la generarea lui X. In consecinta, ne vom ocupa numai de generarea variabilei X. Observam ca:

unde

este coeficientul de variatie al lui X.

De asemenea, cand = 1, X este variabila exponentiala negativa Exp(1). Inainte de a considera in detalii problema generarii variabilei X - adica a variabilei de tipul - sa observam ca repartitia este un caz particular al repartitiei gamma generalizate , > 0, care are densitatea de repartitie:

adica . Repartitia gamma generalizata se reduce in cazuri particulare la o serie de repartitii clasice cunoscute, asupra carora insa nu vom insista aici. Generarea unei variabile aleatoare Z care are repartitia se reduce la generarea variabilei X care are repartitia , si anume, .

In concluzie, generarea oricaror variabile de tip gamma sau gamma generalizat se reduce la generarea variabilei aleatoare X de tipul . In generarea variabilei aleatoare X vor fi considerate separat cazurile si (cazul corespunde repartitiei Exp(1)), pe care insa nu le vom discuta aici, deoarece ele nu fac subiectul lucrarii de fata. 2. TRATAREA MATEMATICA Lucrarea curenta isi propune sa prezinte una din multiplele modalitati de generare a unei variablie Poisson. Astfel, un procedeu interesant de generarea a acestor variabile se bazeaza pe variabile gamma si binomiale. Urmatoarea teorema pune in evidenta acest lucru. Teorema: Fie Y o variabila Poisson() si > 0 un intreg. Fie variabila X aleatoare gamma(0, 1, ), Z variabila binomiala binom( - 1, / X ) si W variabila Poisson( X), cand X . Atunci: a. Y = Z daca X > ; b. Y = W + daca X . Demonstratie: Teorema de mai sus argumenteaza ca exista o legatura intre valorile parametrului si cele ale unei variabile aleatoare gamma. Pe baza aceste legaturi putem simula o variabila Poisson in functie de o variabila binomiala sau in functie de o alta variabila Poisson dependenta de parametrul variabilei gamma mentionata mai sus. Continuam acum cu demonstratia punctului a. Astfel, daca atunci

Prelucram functia gamma definita mai sus si o aducem la o forma prietenoasa, astfel incat sa o putem folosi in calculul probabilitatii pk.

Daca , atunci ultima suma ar coincide cu dezvoltarea in serie Taylor a lui ex , dar conform ipotezei stim ca este un parametru de forma finit, de unde deducem ca suma

Atunci functia gamma devine:

Revenim la calcului probabilitatii si obtinem:

Utilizand substitutia x - = t, x = + t, dx = dt, pk devine:

rezultat ce corespunde valorii functiei de frecventa a unei variabile aleatoare repartizate Poisson(). Continuam acum cu demonstratia punctului b. Astfel, daca atunci

unde B(, k - + 1) este functia beta, iar este functia gamma definita si calculata mai sus. Observam ca si in acest caz, rezultatul obtinut corespunde valorii functiei de frecventa a unei variabile aleatoare repartizate Poisson() Teorema este astfel demonstrata. 3. DESCRIEREA ALGORITMULUI Pentru a construi un algoritm bazat pe teorema precedenta trebuie ales mai intai un convenabil. Daca se ia :

atunci pentru mare, cazul a. din teorema se intalneste cu o probabilitate mica, deci pentru a obtine o valoare de selectie Poisson() este suficient sa avem un bun generator de variabile binomiale. (Constanta d = 7/8 a fost determinata experimental) Pentru generarea variabilei Poisson() din cazul b. este indicat sa folosim un algoritm

de generare a variabilei Poisson prin metoda multiplicarii (pe care insa nu il vom prezenta aici pentru ca nu ne este necesar in algoritmul utilizat), care insa este eficient cand - X este mic (mai mic decat o limita c, care este dedusa din consideratii experimentale ca fiind c = 16). Cum aceasta conditie ( - X < c) nu este intotdeauna indeplinita, trebuie introdusa o iteratie in plus care sa considere o selectie asupra variabilei Gamma(), unde

(a se vedea pasii 6 si 7 din algoritmul urmator). Algoritmul bazat pe teorema enuntata mai sus este deci urmatorul: PORVGB (generarea variabilei Poisson prin reducere la variabile gamma si binomiale) Pasul 0. Intrare , c, d. Pasul 1. Initializari: k = 0, T = . Pasul 2. Daca T c, transfer la 6. Pasul 3. (cazul b. din teorema) Ia p = 1 si calculeaza . Pasul 4. Genereaza U si ia . Daca p < L, transfer la Pasul 5. Ia si transfer la 4. 11. Pasul 6. (se alege si se genereaza variabila X din teorema). Ia Genereaza X avand repartitia Gamma(). Daca X > T, transfer la 8. Pasul 7. Ia si transfer la 2. Pasul 8. (cazul a. din teorema) Ia . Pasul 9. Genereaza U. Daca U < p, ia . Pasul 10. Ia . Daca > 1, transfer la 9. Pasul 11. Y = k . Datele de intrare corespunzatoare algoritmului de mai sus sunt: - parametrul al variabilei Poisson - constantele c si d, ale caror valori au fost determinate experimental ca fiind c = 16, respectiv d = 7/8 Datele de iesire corespunzatoare algoritmului de mai sus sunt: - variabila aleatoare Y, repartizata Poisson in functie de variabile aleatoare gamma si binomiale 4. VALIDAREA ALGORITMULUI Pentru validare, vom folosi doua metode specifice de validare a algoritmilor de simulare asupra multimilor generate, si anume: verificarea aproximarii mediei si dispersiei pentru seturile generate si aproximarea graficului densitatii de probabilitate folosind histograme construite clasic.

Verificarea mediei si a dispersiei Observam ca dimensiunea multimii de selectie influenteaza rezultatele mediei si dispersiei aferente setului de date, in sensul ca le apropie foarte mult de valorile teoretice corespunzatoare tipului de date din multimea de selectie (o consecinta a legii numerelor mari). Astfel, in tabelul urmator vom exprima rezultatele obtinute pentru diferite dimensiuni ale multimii de selectie in comparatie cu valorile teoretice corespunzatoare.

Nr. Crt. 1 2 3 4 5 6 7 8 9 10

Volum de selectie 10 100 1000 5000 10000 50000 100000 200000 500000 1000000

Media obtinuta 12 10,07 10,006 10,0124 10,0717 10,01588 10,00374 10,00005 10,00087 9,999331

Media teoretica

Eroare -2 -0,07 -0,006 -0,0124

Dispersia obtinuta 18,22222 8,409192 8,924889 10,12547 10,39140 9,955027 10,00567 9,973445 9,999605 10,01992

Dispersia teoretica

Eroare -8,22222 1,590808 1,075111 -0,12547

10

-0,0717 -0,01588 -0,00374 -0,00005 -0,00087 0,000669

10

-0,3914 0,044973 -0,00567 0,02656 0,000395 -0,01992

Rezultatul acestor experimente confirma faptul ca media si dispersia se apropie de media si dispersia teoretica pe masura ce volumul de selectie creste. Aproximarea densitatii de repartitie O alta metoda de a verifica acuratetea rezultatelor obtinute in urma unui algoritm de generare a unui set de date este de a analiza in ce masura histograma asociata setului de date obtinut aproximeaza densitatea de repartitie a variabilelor generate. Imaginea de mai jos reprezinta histograma si densitatea de repartitie in urma generarii unui set de date de dimensiune 1000000 pentru o variabila Poisson(10).

Din acest grafic se observa faptul ca algoritmul prezentat produce rezultate ce aproximeaza corect densitatea de probabilitate a tipului de variabila prezentat.

5. CODUL SURSA. Implementarea algoritmului PORVGB ( pentru o singura valoare de selectie )


function (v_lambda, v_c, v_d) { lambda = v_lambda cc = v_c dd = v_d k = 0 tt = lambda repeat { if ( tt >= cc ) { miu = floor(d*tt) x = rgamma(1, miu) if ( x > tt ) { p = tt/x repeat { u = runif(1,0,1) if ( u < p ) { k = k + 1 } miu = miu - 1 if ( miu <= 1 ) { break } } break } else { k = k + miu tt = tt - x } } else { p = 1 ll = exp(-tt) repeat { u = runif(1,0,1) p = p * u if ( p < ll ) { break } else { k = k + 1 } } break } } y = k print(y) }

Implementarea algoritmului PORVGB ( pentru mai multe valori de selectie )


function (v_lambda, v_c, v_d) { lambda = v_lambda cc = v_c dd = v_d y = 0 for ( i in 1:100000 ) { k = 0 tt = lambda repeat { if ( tt >= cc ) { miu = floor(d*tt) x = rgamma(1, miu) if ( x > tt ) { p = tt/x repeat { u = runif(1,0,1) if ( u < p ) { k = k + 1 } miu = miu - 1 if ( miu <= 1 ) { break } } break } else { k = k + miu tt = tt - x } } else { p = 1 ll = exp(-tt) repeat { u = runif(1,0,1) p = p * u if ( p < ll ) { break } else { k = k + 1 } } break } } if ( y[1] == 0 ) { y = k } else { y = c(y, k) } } print(mean(y)) print(var(y)) print(summary(y))

par(mfrow = c(1,2)) vectorx = seq(0, 100, 1) vectory = dpois(vectorx, lambda) plot(vectorx, vectory, 'l') hist(y) }

S-ar putea să vă placă și