Sunteți pe pagina 1din 18

Simularea variabilei Beta(a,b)

Nume student : Potrocea Andreea Livia Nr. Proiect : 20 Grupa : 331

I.

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 unuialgoritm) 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 laintrebarile 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 Beta(a,b), cu ajutorul variabilei Gamma(0,1,v) Vom stabili obiectivele prin definirea problemei, urmata de realizarea unei analize primare a datelor prin colectionarea notiunilor necesare, pecare 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 variant de implementare a acestuia in limbajul C++. 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 doua metode de simulare a variabilei Beta(a, b) pentru cazurile:a, b intregi pozitivi; 1 < a, b > 1.

II. Definitii si notiuni necesare


1. Repartitia Beta :
Variabila X are repartitia Beta(a, b), a > 0, b > 0 daca densitatea sa de repartitie este :

unde

2. Repartitia Gamma
Repartitia Gamma(,,) are densitatea data de formula

unde R, , > 0 sunt respectiv parametri de locatie, de scala si de forma ai variabilei.Functia gamma () este definit de urmatoarea relatie :

Daca notam cu X variabila Gamma(0,1,) atunci se constata ca legatura intre X si Y este data de formulele adica generarea lui Y se reduce la generarea lui X. In consecinta ne vom ocupa numai de generarea variabilei X. Observam ca :

M(X) = , 2(X) = , C[X] =

unde C[X] este coeficintul de variatie a lui X . De asemenea, cand = 1, X este variabila exponentiala negativa Exp(1). In concluzie, generarea oricaror variabile de tip gamma se reduce la generalizarea variabilei aleatoare X de tipul Gamma(0,1,). In generarea variabilei aleatoare X vor fi considerate separta cazurile 0 < < 1 si 1 < < (cazul = 1 corespunde repartitie Exp(1)) . Spun ca este necesar si esential sa construim metode pentru simularea unei repartitii Gamma standard, adica Gamma(0,1, ), R+. Daca = k N+, atunci repartitia gama devine repartitie Erlang. 3. Repartitia Erlang(k) , k N+ este un caz particular al repartitiei Gamma(,,) , ,, R+ care are densitatea de repartitie:

III. Tratarea matematica a problemei


A.Repartitia Beta
Urmatoarea teorema permite simularea variabilei Beta(a,b) : Teorema 1 : Daca X1 Gamma(0, 1, a), X2 Gamma(0, 1, b), a > 0, b > 0,

X1 independent de X2, atunci variabila

este o variabila Beta(a,b) . Demonstratie. Densitatea comuna de repartitie a lui (X1,X2) este

Facand in ultima integrala transformarea

avem

Densitatea de repartitie a variabilei X1/(X1 + X2) este

adica dupa calcule deducem

si teorema este demonstrata .

B. Repartitia Gamma
In continuare prezentam o metoda de respingere pentru simularea variabilei Gamma(0,1,), > 1 , bazata pe infasurarea cu o densitatea Cauchy nonstandard trunchiata pe[0, ] de forma : h(x) =
( ( ))

,x

(1.1)

unde k este o constanta de normare. Teorema 2 Daca infasuram densitatea Gamma(0,1,), > 1, cu densitatea h(x) data de (1.1) atunci pentru c 2 1 avem

Demonstratie: Avem

de unde rezulta ca ecuatia (x) = 0 are Solutia x0 = 1 > 0 iar daca c 2 1 atunci avem

ceea ce demonstreaza teorema. Teorema 3 Daca Zi, 1 variabila i k sunt variabile Exp(1) independente, atunci

(formula 1) este o variabila Erlang(k) . Demonstratie. Vom folosi tehnica functiei caracteristice si vom arata ca functia caracteristica a variabilei X data de formula 1 de mai sus este aceeasi cu functia caracteristica a variabilei Erlang(k) de unde se deduce ca cele doua repartitii coincid. Pentru variabila Erlang(k) functia caracteristica este :

Pe de alta parte functia caracteristica a variabilei X din (formula 1) este :

Dar

Deci

Adica aceesi cu (t), ceea ce demonstreaza teorema.

IV. Descrierea algoritmilor


Pentru a descrie algoritmul dedus din teorema 2 presupunem calculate in prealabil constantele b=1 c=+b s= Algoritmul urmator (Algoritmul GAMCAUCHY) permite simularea variabilei Gamma(0,1,) , > 1 prin infasurarea cu o densitatea Cauchy. Acesta ne permite de asemenea si simularea variabilei Beta(a,b), conform teoremei 1, unde va trbui sa simulam doua variabile Gamma, atunci cand a>1 si b > 1 repeat repeat Genereaza U:= random si ia T = s.tg[(U-0.5)] ; (T este Cauchy standard pe (-,+)); Ia Y = b + T ; (Y este Cauchy non standard pe (-,+)); until Y > 0 ; (Se aplica respingerea pentru a obtine Y-trunchiata); Genereaza U1 := random; until U1 Ia X = Y .
( ) ( )

Observam ca in constructia algoritmului nu intervine constanta k, dar este necesara pentru a calcula pa = . Un calcul simplu arata ca

Mai observam si faptul ca daca descopunem sub forma = k + p , k = [] N+ , p = k [0,1] si consideram variabilele X Gamma(0,1,) , Ek +Erlang(k) , Y Gamma(0,1,p), atunci simularea lui X se realizeaza cu relatia X = Ek + Y, (Ek,Y) - independente Urmatorul algoritm ne va ajuta la simularea unei variabile Erlang(k), k intreg pozitiv conform Teoremei 3, care de asemenea ne va ajuta la simularea variabilei Bet(a,b) conform Teoremei 1. Algoritmul EXRJ de simulare a exponentialei prin metoda respingerii: Initializeaza N := 0; repeat Genereaza U0,U1 uniforme 0 1 si independente; Ia U := U0,K := 1; while U0 U1 do begin K := K + 1, U0 := U1, genereaza U1 uniform 0 1; end; (s-a simulat un subsir descendent); if K mod 2 = 0 then N := N + 1; (se numara subsirurile respinse); until K mod 2 = 1; Ia Z := N + U.

V. Validarea algoritmilor.
1. Verificarea mediei si dispersiei
Observam ca dimensiunea multimii de selectie influenteaza rezultatele mediei sidispersiei aferente setului de date, in sensul ca le apropie foarte mult de valorile teoretice corespunzatoare tipului de date din multimea de selectie (o consecinta alegii numerelor mari) . Astfel, in tabelul urmator vom exprima rezultatele obtinute pentru diferite dimensiuni ale multimii de selectie in comparatie cu valorile teoretice corespunzatoare. Beta(2,5) Nr. Volum Media crt de obtinuta selectie 1 2 3 4 10 50 200 300 0.3160188 0.2735838 0.2747299 0.2809293 Media Eroare Dispersia teoretica obtinuta 0.28 0.28 0.28 0.28 0.036 0.0065 0.0053 0.0009 0.0619768 0.028750 0.0227285 0.02597 Dispersia Eroare teoretica 0,0255 0,0255 0,0255 0,0255 0.036 0.0032 0.0028 0.00047

Rezultatul acestor experimente confirma faptul ca media si dispersia se apropie de media si dispersia teoretica pe masura ce creste volumul de selectie.

2. 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 200 pentru o variabila Beta(2,5).

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

VI. Textul sursa si rezultatele validarilor


#include <iostream> #include <math.h> #include <time.h> #include <stdlib.h> #include <fstream> using namespace std; double a,b; const double PI = 3.14159265358979; const double e = 2.71828183; // generare nr aleatoare intre 0 si 1 double uniform() { return (double)( rand()% 1001) / 1000 ; } // simularea variabilei Gamma(0,1,v) , v>1 prin infasurarea cu //o densitatea Cauchy double GammaCauchy(double v) { double b = v - 1 ; double c = v + b ; double s = sqrt(2 * v - 1) ; double U , T, Y, Umax, Exponent; do { do { U = uniform(); T = s * tan(PI * (U - 0.5)) ; Y=b+T; }

while (Y <= 0); U = uniform(); Exponent = b * log(Y/b) - T + log (1+T*T/c) ; Umax = pow(e,Exponent) ; } while (U > Umax) ; return Y ; } // Exp(1) double Exp1() { int N = 0 ; int K ; double U0,U1,U2; do { U0 = uniform() ; U1 = uniform(); U2 = U0 ; K = 1; while (U0 >= U1) { K++; U0 = U1 ; U1 = uniform() ; } if (K % 2 == 0) N++; } while (K % 2 == 0) ; return N + U2 ; }

//simularea variabilei erlang(caz particular de gamma) unde a este intreg pozitiv double Erlang (int a) { double Z[100],X ; for (int i = 1; i <= a ; i++) { Z[i] = Exp1(); } X=0; for (int i = 1; i <= a ; i++) { X = X + Z[i]; } return X ; }

int main() { srand(time(0)); double a,b; int nr; // volumul de selectie cout << "Dati a: " << endl; cin >> a ; cout << "Dati b: " << endl ; cin >> b ; cout << "Dati nr de valori: " << endl ; cin >> nr ; double v[1000], d, S; fstream f("fis.out", ios::out); S=0;

for (int i = 1 ; i<= nr ; i++) { double X1, X2; //verific daca a si b sunt de tip intreg sau double if (fabs(a-round(a)) < 0.0000001) X1 = Erlang(int(a)); else X1 = GammaCauchy(a); if (fabs(b-round(b)) < 0.0000001) X2 = Erlang(int(b)); else X2 = GammaCauchy(b); v[i] = X1/(X1+X2); //calculez dispersia pt variabilele din v[i] // a/(a+b) este media teoretica a var din v[i] S = S + pow((v[i]-(a/(a+b))),2); d = S / i; f << v[i] << " , " ; } f << "Dispersia este" << d ; f.close(); system("pause"); return 0; }

Bibliografie [1] Vaduva, I. (1977). Modele de simulare cu calculatorul. Editura Tehica, Bucuresti [2] Ion Vaduva, Modele de simulare, Bucuresti, 2004 [3] Enciclopedia Wikipedia, Gamma Distribution http://en.wikipedia.org/wiki/Gamma_distribution [4] Enciclopedia Wikipedia, Beta Distribution http://en.wikipedia.org/wiki/Beta_distribution [5] Enciclopedia Wikipedia, Erlang Distribution http://en.wikipedia.org/wiki/JavaScript