Documente Academic
Documente Profesional
Documente Cultură
𝑃 (𝑋 ∈ [𝑎, 𝑏])
𝑃 (𝑌 ∈ [𝑐, 𝑑])
1
3.1.1 Trecerea de la variabile la vectori
Aceasta probabilitate o putem scrie si astfel:
(𝑋, 𝑌 ) ∈ [𝑎, 𝑏] × [𝑐, 𝑑] ne spune ca 𝑋 apartine intervalului [𝑎, 𝑏], iar 𝑌 intervalului [𝑐, 𝑑]. Sa
vizualizam acest lucru, desenand cat mai multe puncte (𝑥, 𝑦) pentru care 𝑥 si 𝑦 apartin intervalului
[−0.5, 0.5]!
Nota: Am ales intervalul [−0.5, 0.5] pentru ca este simetric in jurul lui 0, si duce la vizualizari mai
‘frumoase’. Observatiile de mai jos sunt valide pentru orice alte intervale, chiar si diferite.
Nota 2: Codul de mai jos este scris in Python, folosind libraria matplotlib. Nu este necesar sa
il intelegeti pentru a intelege graficele. Graficele seamana cu cele din Matlab, deoarece la inceput
libraria incerca sa emuleze graficele din acest limbaj.
[ ]: import matplotlib.pyplot as plt
import numpy as np
from math import ceil
from scipy.stats import norm
plt.tight_layout()
plt.show()
2
[ ]: plot_uniform_vector((-0.5, 0.5), (-0.5, 0.5), [10, 100, 500, 2500])
Cu cat crestem numarul de puncte, cu atat figura ce apare seamana mai mult cu un patrat!
Observam ca domeniul [−0.5, 0.5]×[−0.5, 0.5] este un patrat. Deci atunci cand spunem ca vectorul
continuu (𝑋, 𝑌 ) ia valori in acest domeniu, ne gandim ca punctele (𝑥, 𝑦) pica intr-un patrat.
Observatie: Daca cele 2 intervale ar fi avut dimensiuni diferite, am fi obtinut dreptunghiuri in loc
de patrate. De exemplu, domeniul [0, 1] × [3, 8] arata astfel:
3
3.2 Concluzie
Deci, in cazul variabilelor continue, in principal ne intereseaza calculul probabilitatii ca variabila
sa ia valori intr-un anumit interval, iar in cazul vectorilor continui, in loc de interval(valori pentru
o singura variabila), suntem interesati de domenii(valori pentru mai multe variabile)!
4
punctele care se afla pe cerc, adica se afla la distanta 𝑟 de punctul (𝑎, 𝑏).
Fie un punct oarecare (𝑥, 𝑦). Distanta de la acest punct la centru este:
Ridicand la patrat:
(𝑥 − 𝑎)2 + (𝑦 − 𝑏)2 = 𝑟2
Aceasta este ecuatia cercului de centru (𝑎, 𝑏) si raza 𝑟. Ea are drept solutii punctele ce se afla pe
cerc.
In cazul vectorilor continui suntem in general interesati de domenii circulare care contin si interiorul
cercului. Interiorul cercului este format de acele puncte care se afla la distanta cel mult 𝑟 de centru,
deci care respecta urmatoarea inegalitate:
(𝑥 − 𝑎)2 + (𝑦 − 𝑏)2 ≤ 𝑟2
Sa vizualizam acest domeniu circular! Mai intai vom vizualiza marginea acestuia, adica graficul
ecuatiei (𝑥 − 𝑎)2 + (𝑦 − 𝑏)2 = 𝑟2 .
Pentru simplitate, vom alege drept centru punctul (0, 0) si 1 drept raza, deci ecuatia devine 𝑥2 +𝑦2 =
1. Primul pas este sa scoatem pe 𝑦 din aceasta ecuatie:
𝑦 2 = 1 − 𝑥2
√
𝑦 = ± 1 − 𝑥2
Observatie: Aceasta ecuatie nu reprezinta o functie, deoarece pentru√un anumit 𝑥, exista√ doar
valori distincte ale lui 𝑦. Ea reprezinta de fapt 2 functii, anume 𝑦 = 1 − 𝑥 , si 𝑦 = − 1 − 𝑥2 .
2
5
Acum vom vizualiza intreg cercul, adica marginea sa(partile rosii si albastre de mai sus), plus
interiorul sau.
[ ]: x = np.linspace(-1, 1, 1000)
y1 = np.sqrt(1 - x*x)
y2 = -np.sqrt(1 - x*x)
plt.fill_between(x, y1, alpha = 0.5)
plt.fill_between(x, y2, alpha = 0.5)
plt.axis('equal')
plt.show()
6
5 Densitatea de probabilitate a unui vector continuu
Pentru orice variabila aleatoare continua sau vector aleator continuu, suntem interesati de prob-
abilitatea ca acestea sa ia valori intr-un anumit interval sau un anumit domeniu. “Marimea” de
baza, care ne este necesara in calculul acestor probabilitati, este functia densitate de probabilitate.
Aceasta functie “defineste” un vector sau o variabila continua.
Pentru cazul unui vector (𝑋, 𝑌 ) de 2 variabile continue, notam aceasta functie cu 𝑓𝑋,𝑌 (𝑥, 𝑦).
Cunoscand aceasta functie, calculam probabilitatea ca vectorul sa ia valori in domeniul [𝑎, 𝑏] × [𝑐, 𝑑]
astfel:
𝑑 𝑏
𝑃 ((𝑋, 𝑌 ) ∈ [𝑎, 𝑏] × [𝑐, 𝑑]) = ∫ ∫ 𝑓𝑋,𝑌 (𝑥, 𝑦)𝑑𝑥𝑑𝑦
𝑐 𝑎
Pentru a intelege mai bine, ne reamintim formula pentru probabilitatea ca variabila 𝑋 sa ia valori
in intervalul [𝑎, 𝑏]. Daca 𝑓𝑋 este densitatea de probabilitate a variabilei 𝑋, atunci:
𝑏
𝑃 (𝑋 ∈ [𝑎, 𝑏]) = ∫ 𝑓𝑋 (𝑥)𝑑𝑥
𝑎
7
Observam ca formula pentru vectori continui contine 2 integrale. Integrala interioara, adica
𝑏
∫𝑎 𝑓𝑋,𝑌 (𝑥, 𝑦)𝑑𝑥, este asemanatoare cu cea din formula pentru variabile continue. Aceasta in-
tegreaza densitatea de probabilitate doar in functie de 𝑥, pe intervalul [𝑎, 𝑏]. Asemanator, cea
𝑑
exterioara, ∫𝑐 𝑑𝑦 integreaza in functie de 𝑦, pe intervalul [𝑐, 𝑑].
∞ ∞
∫ ∫ 𝑓𝑋,𝑌 (𝑥, 𝑦)𝑑𝑥𝑑𝑦 = 1
−∞ −∞
Pe de alta parte, aceasta integrala dubla este o probabilitate, deci nu are sens sa ia valori negative.
Ne putem asigura ca nu va lua niciodata valori negative cerand ca functia 𝑓𝑋,𝑌 sa fie mereu ≥ 0,
deoarece integrala unei functii pozitive va fi mereu pozitiva:
𝑓𝑋,𝑌 ≥ 0
O proprietate in plus pe care trebuie sa o aiba functia densitate de probabilitate este integrabilitatea
pe ℝ2 . Aceasta proprietate inseamna ca doar functiile ale caror integrale “le putem calcula” pot fi
densitati de probabilitate.
Avem deci urmatoarele 3 cerinte pentru ca o functie 𝑓𝑋,𝑌 ∶ ℝ2 → 𝑅 sa fie densitate de probabilitate:
∞ ∞
- 𝑓𝑋,𝑌 ≥ 0 - functia 𝑓𝑋,𝑌 sa fie integrabila pe ℝ2 - ∫−∞ ∫−∞ 𝑓𝑋,𝑌 𝑑𝑥𝑑𝑦 = 1
Altfel spus, daca derivam functia de repartitie in functie de 𝑥, apoi in functie de 𝑦, obtinem functia
de densitate.
8
7 Densitatea de probabilitate a variabilelor ce alcatuiesc un vector
Cunoastem densitatea de probabilitate a unui vector de 2 variabile continue, 𝑓𝑋,𝑌 si dorim sa aflam
densitatile variabilelor 𝑋 si 𝑌 . Ar fi suficient sa stim functia de repartitie, pentru ca functia de
densitate este derivata functiei de repartitie.
Pentru variabila 𝑋 am dori atunci sa gasim o formula pentru:
𝑃 (𝑋 ≤ 𝑥)
Aceasta probabilitate cere ca variabila 𝑋 sa ia o valoare mai mica sau egala cu 𝑥. Nu sunt deci
puse restrictii asupra valorilor lui 𝑌 . Atunci putem considera ca 𝑌 ia orice valoare posibila, deci
𝑌 ∈ (−∞, ∞). Probabilitatea de mai sus devine:
𝑥 ∞
𝑃 (−∞ < 𝑋 ≤ 𝑥, −∞ < 𝑌 < ∞) = ∫ ∫ 𝑓𝑋,𝑌 (𝑡, 𝑠)𝑑𝑠𝑑𝑡
−∞ −∞
Considerand doar integrala din exterior, observam ca limita sa superioara este 𝑥. Teorema fun-
damentala a algebrei ne spune ca daca aplicam derivata in functie de 𝑥 peste aceasta integrala,
integrala dispare:
𝑥 ∞
𝑑 𝑑
𝐹 (𝑥) = ∫ ∫ 𝑓 (𝑡, 𝑠)𝑑𝑠𝑑𝑡
𝑑𝑥 𝑋 𝑑𝑥 −∞ −∞ 𝑋,𝑌
∞
𝑑
𝐹 (𝑥) = ∫ 𝑓𝑋,𝑌 (𝑡, 𝑠)𝑑𝑠
𝑑𝑥 𝑋 −∞
In partea stanga a ecuatiei, avem derivata functiei de repartitie. Prin definite, aceasta este chiar
functia de densitate, deci:
∞
𝑓𝑋 (𝑥) = ∫ 𝑓𝑋,𝑌 (𝑡, 𝑠)𝑑𝑠
−∞
9
7.1 Exemplu: distributia normala bivariata
Ne reamintim distributia normala. Acesta este caracterizata de o medie si o dispersie. Stim ca
probabilitatea ca variabila sa ia o valoare egala cu media este foarte mare, si ca aceasta probabilitate
scade foarte rapid cand ne departam de medie.
Nota: Daca dispersia o notam cu 𝑉 2 , atunci suntem aproape siguri ca valoarea variabilei nu se va
indeparte cu mai mult de 3𝑉 de media acesteia. 𝑉 este cunoscut ca abaterea standard.
Ne putem intreba daca exista un analog al distributiei standard si pentru vectori de 2 variabile
aleatoare
Cautam deci o distributie de 2 variabile 𝑋 si 𝑌 , care ne da o probabilitate maxima ca 𝑋 sa ia o
valoare apropiata de o anumita medie 𝑚𝑋 si 𝑌 sa ia o valoare apropiata de o anumita medie 𝑚𝑌 ,
si ca aceasta probilitate scade rapid atunci cand ne departam de aceste medii.
Sa vizualizam mai intai densitatea de probabilitate pentru o singura variabila distribuita normal,
de medie 0 si disperise 1. Ne reamintim ca distributia normala are urmatoarea functie de densitate:
1 1 2
𝑓𝑋 (𝑥) = √ 𝑒− 2 𝑥
2𝜋
Constanta √12𝜋 este necesara pentru ca integrala de la −∞ la ∞ sa fie egala cu 1. Mai jos vom
folosi direct formula functiei de densitate:
[ ]: x = np.linspace(-5, 5, 1000)
y = 1/np.sqrt(2*np.pi)*np.exp(-1/2*x**2)
plt.plot(x, y)
plt.show()
10
In libraria Python scipy, exista functia scipy.stats.norm.pdf care este fix functia de densitate a
distributiei normale. Putem folosi si aceasta functie pentru a realiza graficul functiei de densitate:
[ ]: y = norm.pdf(x, 0, 1)
plt.plot(x, y)
plt.show()
11
Stim ca probabilitatea ca variabila distribuita normal sa ia valori sub 𝑥 este egala cu aria de sub
graful functiei de densitate de la −∞ pana la 𝑥.
[ ]: plt.plot(x, y)
x1 = np.linspace(-5, 0, 1000)
y1 = norm.pdf(x1, 0, 1)
plt.fill_between(x1, y1, step = "pre", alpha = 0.5)
plt.show()
12
In figura de mai sus, partea colorata cu albastru deschis are aria egala cu 𝑃 (𝑋 ≤ 0). Putem observa
ca aceasta figura este fix jumatate din intreaga figura, adica jumatatea din dreapta lui 0 este egala,
ca arie, cu cea din stanga sa.
∞
Stim ca aria totala este 1(din definitia densitatii de probabilitate, stim ca ∫−∞ 𝑓𝑋 (𝑥)𝑑𝑥 = 1, adica
aria totala de sub grafic este egala cu 1). Atunci rezulta ca aria colorata mai sus este egala cu 0.5,
deci 𝑃 (𝑋 ≤ 0) = 0.5.
Deci o valoare a variabilei 𝑋 este la fel de probabil sa fie in stanga mediei, sau in dreapta mediei.
Se observa de asemenea ca, in partea stanga a lui −2, aria este mica:
[ ]: plt.plot(x, y)
x1 = np.linspace(-5, -2, 1000)
y1 = norm.pdf(x1, 0, 1)
plt.fill_between(x1, y1, step = "pre", alpha = 0.5)
plt.show()
13
Pe de alta parte, aria dintre −2 si −1 este mult mai mare:
[ ]: plt.plot(x, y)
x1 = np.linspace(-2, -1, 1000)
y1 = norm.pdf(x1, 0, 1)
plt.fill_between(x1, y1, step = "pre", alpha = 0.5)
plt.show()
14
Iar aria dintre −1 si 0 este mult mai mare decat cea dintre −2 si −1. Altfel spus, observam ca,
atunci cand ne apropiem de medie, 0, aria de sub grafic creste foarte rapid, si deci si probabilitatea
va creste foarte rapid.
Putem sa reprezentam grafic si aceasta probabilitate, adica 𝑃 (𝑋 ≤ 𝑥). Prin definitie, aceasta
probabilitate este egala cu:
𝑥 𝑥
1 1 2
∫ 𝑓𝑋 (𝑠)𝑑𝑠 = ∫ √ 𝑒− 2 𝑠 𝑑𝑠
−∞ −∞ 2𝜋
Integrala din partea dreapta nu are o forma elementara, adica nu o putem exprima cu functiile
obisnuite(functii trigonometrice, ridicare la putere, etc). Deci nu vom putea gasi o formula de tipul
𝑔(𝑥) care sa contina doar functiile elementare, si care sa ne dea valoarea lui 𝑃 (𝑋 ≤ 𝑥).
Putem insa aproxima valoarea acestei integrala pentru o valoare fixa a lui 𝑥, de exemplu putem
calcula aproximari ale lui 𝑃 (𝑋 ≤ 0.5).
Functia scipy.stats.norm.cdf implementeaza o asemenea aproximare.
[ ]: y = norm.cdf(x, 0, 1)
plt.plot(x, y)
plt.show()
15
Observam ca pana la aproximativ 𝑥 = −2, probabilitatea ramane mica, deci 𝑃 (𝑋 ≤ −2) este mica.
Dupa 𝑥 = −2, functia creste rapid, de la aproximativ 0 la 𝑥 = −2 pana la 0.5 la 𝑥 = 0. Atunci
cand trecem de 𝑥 = 2, probabilitatea nu mai creste atat de rapid.
Pentru a vedea mai bine ce se intampla in zona lui 𝑥 = 2, vom reprezenta grafic functia 𝑓(𝑥) =
𝑃 (𝑥 − 0.1 ≤ 𝑋 ≤ 𝑥 + 0.1), adica probabilitatea ca variabila sa ia o valoare in jurul lui 𝑥, la o
diferenta de cel mult 0.1:
[ ]: y = norm.cdf(x + 0.1, 0, 1) - norm.cdf(x - 0.1, 0, 1)
plt.plot(x, y)
plt.show()
16
Observam clar ca probabilitatea este maxima pentru 𝑥 = 0, si scade cand ne indepartam de acest
punct.
17
si varsta, la greutate), si presupunem implicit ca acest model este bun, adica in medie predictiile
modelului nostru sunt egale cu realitatea.
Predictiile noastre nu sunt insa exact corecte, adica exista o oarecare diferenta intre realitate si
ceea ce am prezis noi. Acest fapt il modelam prin dispersie(in engleza, variance).
Astfel, presupunerea este ca, in medie, ceea ce modelul nostru de Inteligenta Artificiala ne spune,
este in medie de acord cu realitatea, dar exista si o oarecare diferenta intre realitate si ce am prezis
noi.
Notam cu 𝑦 valoarea reala, si cu 𝑦 ̂ valoarea prezisa de modelul nostru. Aici, 𝑦 si 𝑦 ̂ sunt greutati.
Atunci vom considera ca in medie valoarea prezisa este egala cu cea reala, si ca exista o anumita
diferenta(speram noi ca mica) intre cele 2 marimi, pe care o notam ca 𝑉 2 .
Nota: In romana, aceasta “diferenta” este numita dispersie, iar in engleza este cunoscuta drept
variance. In ambele cazuri poate fi notata ca 𝜎2 , dar in engleza este notata si ca 𝑉 2 .
Atunci cand cunoastem media si dispersia unei variabile, sau a unui vector, cel mai natural este sa
presupunem ca variabila este distribuita normal.
Nota: Se poate demonstra ca, dintr-un anumit punct de vedere, daca stim media si dispersia unui
set de date, atunci distributia normala face cele mai putine presupuneri asupra acestui set de date.
Presupunem deci ca 𝑦 ̂ ≈ 𝑁 (𝑦, 𝑉 2 ). Din aceasta presupunere vom putea obtine modele de Inteligenta
Artificiala foarte puternice, asa cum veti vedea in anul 3 la materia BIA.
𝑦 ̂ de mai sus este o singura variabila. Vom vedea mai jos o posibile aplicatia a vectorilor con-
tinui(adica a unui set de mai multe variabile continuie).
Revenind la exemplu anterior, unde aveam drept date cunoscute inaltimea si varsta. Sa presupunem
ca stim si lungimea mainilor persoanelor. Pentru a putea aplica algoritmi de Machine Learning pe
astfel de date, este foarte foarte important sa avem foarte foarte foarte multe date, adica sa avem
foarte multe persoane ale caror inaltime, varsta, si lungime a mainilor le cunoastem.
Ce se intampla insa daca pentru o anumita persoana cunoastem doar varsta, iar greutatea si
lungimea mainilor nu le cunoastem(sau le cunoastem, dar realizam ca ceea ce stim nu este corect,
de exemplu avem o greutate de 999 de KG, ceea ce inseamna ca, intr-un mod sau altul, am ajuns
sa avem date incorecte)?
Modelele de Machine Learnig nu pot, in general, sa lucreze cu date incomplete, deci avem 2 variante:
- ignoram persoana pentru care stim doar varsta - asignam acestei persoane o greutate si o lungime
a mainilor care sa fie cat mai plauzibile
Deoarece in Machine Learning avem nevoie de cat mai multe date, preferam a 2-a varianta, desi
intuitiv ceea ce vom obtine nu va fi la fel de bun ca datele reale.
Pentru a gasi marimile necunoscute, adica greutatea si lungimea mainilor, consideram un vector
continuu de tipul (𝑋, 𝑌 , 𝑍), unde 𝑋 este varsta, 𝑌 este greutatea si 𝑍 este lungimea mainilor.
Cunoastem doar varsta, deci stim valoarea pe care o ia variabila 𝑋, si suntem interesati de valorile
pe care le iau variabilele 𝑌 si 𝑍, adica am dori sa cunoastem urmatoarea probabilitate:
𝑃 (𝑌 ∈ 𝐼, 𝑍 ∈ 𝐽 |𝑋 = 𝑥)
Ne intereseaza deci probabilitatea ca 𝑌 si 𝑍 sa ia valori in anumite intervale, stiind deja valoarea
pe care a luat-o 𝑋.
18
8 Vectori aleatori continui uniform distribuiti
Consideram un domeniu 𝐷 ⊂ ℝ2 . Acesta poate fi un dreptunghi, un cerc, sau orice alt tip de dome-
niu. Analog variabilelor aleatoare distribuite uniform, exista si vectori aleatori continui, distribuiti
uniform.
Densitatea de probabilitate a unui astfel de vector este urmatoarea:
1
aria(D) , daca 𝑥, 𝑦 ∈ 𝐷
𝑓𝑋,𝑌 (𝑥, 𝑦) = {
0, altfel
Dorim sa aflam daca faptul ca vectorul (𝑋, 𝑌 ) este uniform distribuit pe dreptunghiul [𝑎, 𝑏] × [𝑐, 𝑑]
ne poate spune ceva despre distributiile variabilelor 𝑋 si 𝑌 .
Am aratat mai sus ca functia de densitate a variabilei 𝑋 are urmatoarea formula:
∞
𝑓𝑋 (𝑥) = ∫ 𝑓𝑋,𝑌 (𝑥, 𝑦)𝑑𝑦
−∞
Integram in functie de 𝑦, deci vom sparge intervalul de integrare in intervalele (−∞, 𝑐), (𝑐, 𝑑) si
(𝑑, ∞):
𝑐 𝑑 ∞
𝑓𝑋 (𝑥) = ∫ 𝑓𝑋,𝑌 (𝑥, 𝑦)𝑑𝑦 + ∫ 𝑓𝑋,𝑌 (𝑥, 𝑦)𝑑𝑦 + ∫ 𝑓𝑋,𝑌 (𝑥, 𝑦)𝑑𝑦
−∞ 𝑐 𝑑
Stim ca 𝑓𝑋,𝑌 (𝑥, 𝑦) este 0 atunci cand 𝑥, 𝑦 nu apartine domeniului 𝐷. Daca (𝑥, 𝑦) apartine dome-
niului 𝐷, atunci 𝑥 apartine intervalului (𝑎, 𝑏) si 𝑦 intervalului (𝑐, 𝑑). Deci daca 𝑦 nu apartine
intervalului (𝑐, 𝑑), atunci 𝑓𝑋,𝑌 (𝑥, 𝑦) este egal cu 0.
Observam atunci ca prima si ultima integrala sunt egale cu 0, deci:
𝑑
𝑓𝑋 (𝑥) = ∫ 𝑓𝑋,𝑌 (𝑥, 𝑦)𝑑𝑦
𝑐
Similar discutiei de mai sus, daca 𝑥 nu apartine intervalului (𝑎, 𝑏), atunci 𝑓𝑋,𝑌 (𝑥, 𝑦) este 0, deci:
19
Mai ramane cazul cand 𝑥 apartine intervalului (𝑎, 𝑏). Cum intervalul de integrare este (𝑐, 𝑑),
inseamna ca 𝑦 apartine intervalului (𝑐, 𝑑), deci din formula lui 𝑓𝑋,𝑌 (𝑥, 𝑦) rezulta:
𝑑
1
𝑓𝑋 (𝑥) = ∫ 𝑑𝑦
𝑐 (𝑑 − 𝑐)(𝑏 − 𝑎)
1
= 𝑦|𝑦=𝑑
𝑦=𝑐
(𝑑 − 𝑐)(𝑏 − 𝑎)
1 1
= ⋅𝑑− ⋅𝑐
(𝑑 − 𝑐)(𝑏 − 𝑎) (𝑑 − 𝑐)(𝑏 − 𝑎)
1 1
= (𝑑 − 𝑐) =
(𝑑 − 𝑐)(𝑏 − 𝑎) 𝑏−𝑎
20
x = urand() * (b - a) + a;
Stiind ca a simula vectorul (𝑋, 𝑌 ) distribuit uniform pe domeniul [𝑎, 𝑏] × [𝑐, 𝑑] este echivalent cu a
simula variabila 𝑋 pe intervalul [𝑎, 𝑏] si variabila 𝑌 pe intervalul [𝑐, 𝑑], rezulta urmatorul pseudocod
pentru simularea vectorului:
x = urand() * (b - a) + a;
y = urand() * (c - d) + c;
Sa transformam acest pseudocod in cod Python, pe care il putem rula. Vom folosi libraria numpy
pentru a avea acces la o functie de tip urand:
[ ]: import numpy as np
Functia ce ne intereseaza este np.random.rand, care returneaza o valoare distribuita uniform din
intervalul [0, 1).
Vom defini functia sim_unif_vector(a, b, c, d), care va simula un vector distribuit uniform pe
domeniul [𝑎, 𝑏] × [𝑐, 𝑑]:
[ ]: sim_unif_vector(-1, 1, 0, 2)
[ ]: [-0.5981059843688885, 0.1759753027214015]
Observam ca valorile returnate apartin domeniului dorit. Facem aceasta simulare de 1000 de ori,
salvand valorile returnate:
[ ]: samples = [] # o lista goala in care vom introduce observatiile
for i in range(0, 1000): # for de la 0 la 999, pentru a face cele 1000 de␣
↪simulari
21
Observam ca toate punctele sunt situate in dreptunghiul [𝑎, 𝑏] × [𝑐, 𝑑], si ca nu exista zone ale
acestui dreptunghiu in care sa se afle mult mai multe puncte decat in alte zone, adica punctele sunt
distribuite uniform pe acest dreptunghi.
Observatie: Codul Python scris mai sus este ineficient, deoarece reprezentam observatie cu obser-
vatie. Puteam reprezenta toate observatiile dintr-un singur apel al functiei plot.scatter, dar am
ales codul cel mai simplu pentru a fi inteles mai usor.
22
Dorim sa simulam un vector (𝑋, 𝑌 ) distribuit uniform pe acest cerc. Stim sa simulam vectori
distribuiti uniform pe dreptunghiuri.
Cautam un dreptunghi ce contine intreg cercul. Vizual, observam ca dreptunghiul [−2, 2] × [−2, 2]
contine intreg cercul.
[ ]: rectangle = plot.Rectangle((-2, -1), 4, 4, color="r", alpha=0.5)
circle = plot.Circle((0, 1), 1, clip_on = False)
fig, ax = plot.subplots()
ax.add_patch(circle)
ax.add_patch(rectangle)
plot.axis((-3, 3, -3, 3))
ax.set_aspect('equal', adjustable='box')
plot.show()
23
Pentru a simula uniform puncte din interiorul cercului, vom simula puncte din dreptunghi pana
gasim unul care se afla si in cerc.
Altfel spus, simulam un punct din dreptunghi. Daca punctul se afla si in cerc, atunci acesta este
punctul ce ne intereseaza. Altfel, simulam un alt punct, pana cand gasim unul ce se afla si in cerc.
Pseudocodul arata astfel:
do{
genereaza un punct (x, y) din dreptunghi;
} while(punctul generat nu se afla si in cerc);
Generarea punctului din dreptunghi se realizeaza ca mai sus, anume:
x = urand() * (b - a) + a;
y = urand() * (d - c) + c;
Cercul de centru (0, 1) si raza 1 are ecuatia:
(𝑥 − 0)2 + (𝑦 − 1)2 = 12
Discul corespunzator acestui cerc contine si punctele din interiorul cercului, deci are aceasta ecuatie:
(𝑥 − 0)2 + (𝑦 − 1)2 ≤ 12
24
Pentru a obtine punctele ce nu se afla in acest disc, este suficient sa negam ecuatia de mai sus, ceea
ce se poate face matematic prin inlocuirea semnului ≤ cu >:
(𝑥 − 0)2 + (𝑦 − 1)2 > 12
while x*x + (y - 1)*(y - 1) > 1: # atata timp cat punctul generat nu se afla in␣
↪cerc
Aceasta metoda de simulare a vectorilor aleatori continui este cunoscuta drept metoda respin-
gerii, deoarece generam puncte dintr-un dreptunghi si le respingem pe cele care nu se afla si in
domeniul ce ne intereseaza.
Metoda respingerii functioneaza pentru orice tip de domeniu, nu numai unul circular. Este suficient
sa gasim un dreptunghi care sa acopere intregul domeniu de interes!
Notand cu 𝐺 domeniul in care vrem sa simulam, si cu 𝐷 domeniul dreptunghiular care il include
pe 𝐺, se poate demonstra ca probabilitatea ca un punct simulat in domeniul 𝐷 sa se afle si in
domeniul 𝐺 este:
aria(𝐺)
aria(𝐷)
Putem folosi orice dreptunghi 𝐷 care include 𝐺, dar ne dorim sa alegem unul care duce la un
algoritm cat mai rapid. Algoritmul este cu atat mai rapid cu cat probabilitatea de mai sus creste.
Pentru ca probabilitatea sa creasca, trebuie sa aria(𝐷) sa scada, deci ne dorim un dreptunghi de
arie minima. Acest fapt se observa si din grafic, deoarece un dreptunghi de arie mai mica se afla
mai aproape de cerc.
Revenind la cercul de mai sus, observam ca dreptunghiul [−1, 1] × [0, 2] este dreptunghiul de arie
minima ce acopera complet cercul!
[ ]: rectangle = plot.Rectangle((-1, 0), 2, 2, color="r", alpha=0.5)
circle = plot.Circle((0, 1), 1, clip_on = False)
fig, ax = plot.subplots()
ax.add_patch(circle)
ax.add_patch(rectangle)
plot.axis((-3, 3, -3, 3))
ax.set_aspect('equal', adjustable='box')
plot.show()
25
11 Extra
Intuitie:
De ce suntem nevoiti sa calculam probabilitatea ca o variabila continua sa ia valori intr-un anumit
interval, si nu calculam probabilitatea ca acea variabila sa ia o anumita valoare fixa?
Sa consideram o variabila 𝑋 care ia valori in intervalul [0, 1], si sa luam 0.5 drept valoarea fixa.
Ne amintim formula pentru probabilitati din liceu:
Numarul de cazuri favorabile
𝑃 (𝑋 = 0.5) = Numarul de cazuri posibile
26
Un short-video despre numarul de elemente din [0, 1]: https://www.youtube.com/shorts/Xs0mbQUy9qg
27