Sunteți pe pagina 1din 27

Vectori aleatori continui

April 20, 2023

1 Vectori aleatori continui


• Ce sunt vectorii aleatori continui?
• Ce putem calcula legat de un vector continuu?
• Densitatea de probabilitate a unui vector continuu
• Exemple
• Simulare a vectorilor continui
• Probleme
• Extra

2 Ce sunt vectorii aleatori continui?


Un vector aleator continuu este o colectie de variabile aleatoare continue.
Exemplu: Consideram variabilele continue 𝑋1 , 𝑋2 , ..., 𝑋𝑛 . Atunci (𝑋1 , 𝑋2 , ..., 𝑋𝑛 ) formeaza un
vector aleator continuu.
Mai departe vom considera doar vectorii de 2 variabile, pentru a exemplifica proprietatile acestora.
Fie (𝑋, 𝑌 ) un astfel de vector.

3 Ce putem calcula legat de un vector continuu?


3.1 Conexiune cu variabile continue
Pentru variabilele continue puteam calcula probabilitatea ca valoarea acestora sa se afle intr-un
anumit interval. De exemplu, pentru cele 2 variabile 𝑋 si 𝑌 din care este format vectorul nostru
putem calcula urmatoarele probabilitati:

𝑃 (𝑋 ∈ [𝑎, 𝑏])

𝑃 (𝑌 ∈ [𝑐, 𝑑])

Consideram acum probabilitatea ca prima variabila sa ia valori in intervalul [𝑎, 𝑏] si a 2a in intervalul


[𝑐, 𝑑]:

𝑃 (𝑋 ∈ [𝑎, 𝑏] ∩ 𝑌 ∈ [𝑐, 𝑑])

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

[ ]: def generate_uniform_vector(interval_x, interval_y, point_count):


x_min, x_max = interval_x
y_min, y_max = interval_y
x = np.random.rand(1, point_count)*(x_max - x_min) + x_min
y = np.random.rand(1, point_count)*(y_max - y_min) + y_min
return x, y

[ ]: def plot_uniform_vector(interval_x, interval_y, point_counts):


plot_count = len(point_counts)
fig, axs = plt.subplots(ceil(plot_count / 2), 2, figsize = (10, 10))

for i, point_count in enumerate(point_counts):


x_min, x_max = interval_x
y_min, y_max = interval_y
plot_min, plot_max = min(x_min, y_min) - 1, max(x_max, y_max) + 1
x, y= generate_uniform_vector(interval_x, interval_y, point_count)
plot = axs[i//2][i%2]
plot.scatter(x, y)
plot.axis((plot_min, plot_max, plot_min, plot_max))
plot.set_xlabel("x")
plot.set_ylabel("y")
plot.set_title(f'{point_count} puncte')

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:

[ ]: plot_uniform_vector((0, 1), (3, 8), [10, 100, 500, 2500, 10000])

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 Alte tipuri de domenii


4.1 Domeniu circular
Un cerc este multimea punctelor care se afla la o anumita distanta de un punct numit centru.
Distanta poarta numele de raza.
Sa alegem drept centru un punct oarecare (𝑎, 𝑏), si sa notam raza cu 𝑟. Dorim sa gasim toate

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:

√(𝑥 − 𝑎)2 + (𝑦 − 𝑏)2

Dorim ca aceasta distanta sa fie egala cu 𝑟, deci:

√(𝑥 − 𝑎)2 + (𝑦 − 𝑏)2 = 𝑟

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

Prima ecuatie reprezinta partea superioara a cercului(partea rosie), si a 2a reprezinta partea sa


inferioara(partea albastra).
Vom reprezenta mai departe pe 𝑦 in functie de 𝑥:
[ ]: x = np.linspace(-1, 1, 1000)
y1 = np.sqrt(1 - x*x)
y2 = -np.sqrt(1 - x*x)
plt.plot(x, y1, color = "red")
plt.plot(x, y2, color = "blue")
plt.axis('equal')
plt.show()

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 [𝑐, 𝑑].

5.1 Proprietati ale densitatii de probabilitate


Consideram formula pentru a afla probabilitatea ca vectorul continuu sa ia valori in domeniul
[𝑎, 𝑏] × [𝑐, 𝑑]. Daca lasam 𝑎 si 𝑐 sa tinda la −∞ si 𝑏, 𝑑 la ∞, obtinem probabilitatea ca vectorului
continuu sa ia valori in domeniul (−∞, ∞) × (−∞, ∞).
Acesta este singurul domeniu in care vectorul poate lua valori, deci suntem siguri ca va lua valori
in acesta. Rezulta ca probabilitatea obtinuta este egala cu 1:

∞ ∞
∫ ∫ 𝑓𝑋,𝑌 (𝑥, 𝑦)𝑑𝑥𝑑𝑦 = 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

6 Functia de repartitie a unui vector aleator


Este definita analog functiei de repartitie a unei variabile aleatoare:
𝑥 𝑦
𝐹𝑋,𝑌 (𝑥, 𝑦) = 𝑃 (𝑋 ≤ 𝑥, 𝑌 ≤ 𝑦) = ∫ ∫ 𝑓𝑋,𝑌 (𝑡, 𝑠)𝑑𝑠𝑑𝑡
−∞ −∞

Am inlocuit 𝑥 si 𝑦 in 𝑓𝑋,𝑌 (𝑥, 𝑦) cu 𝑡 si 𝑠 pentru a nu le confunda cu 𝑥 si 𝑦 din limitele de integrare.


Observatie: In discutia despre densitatea de probabilitate am vazut formula pentru probabilitatea
ca vectorul sa ia valori in domeniul de forma [𝑎, 𝑏] × [𝑐, 𝑑]. Observam ca formula de mai sus ne da
probabilitatea ca vectorul sa ia valori in domeniul (−∞, 𝑥) × (−∞, 𝑦).
Analog cazului variabilelor continue, are loc urmatoarea relatie:
𝜕 𝜕
𝑓𝑋,𝑌 (𝑥, 𝑦) = 𝐹 (𝑥, 𝑦)
𝜕𝑦 𝜕𝑥 𝑋,𝑌

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:

𝑃 (𝑋 ≤ 𝑥, −∞ < 𝑌 < ∞) = 𝑃 (−∞ < 𝑋 ≤ 𝑥, −∞ < 𝑌 < ∞)

Amintindu-ne formula pentru probabilitatea ca un vector aleator sa ia valori intr-un domeniu de


tipul [𝑎, 𝑏] × [𝑐, 𝑑], observam ca:

𝑥 ∞
𝑃 (−∞ < 𝑋 ≤ 𝑥, −∞ < 𝑌 < ∞) = ∫ ∫ 𝑓𝑋,𝑌 (𝑡, 𝑠)𝑑𝑠𝑑𝑡
−∞ −∞

In partea stanga avem chiar functia de repartitie a lui 𝑋, deci:


𝑥 ∞
𝐹𝑋 (𝑥) = ∫ ∫ 𝑓𝑋,𝑌 (𝑡, 𝑠)𝑑𝑠𝑑𝑡
−∞ −∞

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:

𝑓𝑋 (𝑥) = ∫ 𝑓𝑋,𝑌 (𝑡, 𝑠)𝑑𝑠
−∞

Am obtinut deci functia de densitate a variabilei 𝑋. Observam ca in partea dreapta integram pe


𝑓𝑋,𝑌 (𝑡, 𝑠) in functie de 𝑠. 𝑠 tine locul variabilei 𝑦, deci practic am integrat variabila 𝑦 si am ramas
doar cu o functie de 𝑥, ceea ce are sens pentru densitatea variabilei 𝑋!
Exercitiu: Obtineti densitatea variabilei 𝑌 .

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.

7.2 Exemple de vectori aleatori, si unde sunt folositi practic


Vectorii aleatori, variabilele aleatoare si in general, statistica si probabilitatile apar peste tot in
Machine Learning/Inteligenta Artificiala, adica in stiinta care se afla in spatele unor proiecte ca
ChatGPT.
Machine Learniung se ocupa in general cu gasirea de relatii intre date. Altfel spus, modelam ceva
ce nu stim in functie de ceva ce stim.
Un exemplu ar fi, daca stim inaltimea unei persoane si varsta sa, si ne dorim sa aflam greutatea
acelei persoane, putem cauta un model de genul greutate = 𝑓(inaltime, varsta), adica modelam
greutatea in functie de inaltime si de varsta.
Cand facem aceasta modelare, presupunem implicit ca ea “are sens”, adica in medie, greutatea unei
persoane poate fi intr-adevar exprimata in functie de inaltime si de varsta.
Daca in loc de inaltime si de varsta am fi ales culoarea parului si culoarea ochilor, presupunerea
noastra cel mai probabil nu ar fi avut sens, deoarece probabil ca greutatea unei persoane nu depinde
de culoarea parului si a ochilor sai.
Deci, in Machine Learning, avem niste date cunoscute(inaltimea si varsta de mai sus), si dorim sa
aflam o alta valoare(greutatea). Alegem un anumit model(o functie care ne duce de la inaltime

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

Observatie: Ne amintim ca in cazul variabilelor continue, termenul aria(D) era 𝑏 − 𝑎, adica


lungimea unui anumit interval. Ambii termeni sunt o masura a “marimii” intervalului sau dome-
niului pe care variabila/vectorul este uniform distribuit.
Mai departe vom considera un domeniu simplu, dreptunghiular, deci 𝐷 = [𝑎, 𝑏] × [𝑐, 𝑑].
Aria acestui domeniu este produsul laturilor sale, adica lungimea intervalului [a, b] ×
lungimea intervalului [c, d]. Rezulta urmatoarea distributie de probabilitate:
1
, daca 𝑥, 𝑦 ∈ 𝐷
𝑓𝑋,𝑌 (𝑥, 𝑦) = { (b-a)(d-c)
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:

𝑓𝑋 (𝑥) = 0, daca 𝑥 nu apartine (𝑎, 𝑏)

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
= (𝑑 − 𝑐) =
(𝑑 − 𝑐)(𝑏 − 𝑎) 𝑏−𝑎

Observam ca densitatea de probabilitate a variabilei 𝑋 este chiar densitatea de probabilitate a unei


variabile uniform distribuite pe intervalul (𝑎, 𝑏).
Exercitiu: Aratati ca densitatea de probabilitate a variabilei 𝑌 este uniform distribuita pe inter-
valul (𝑐, 𝑑).
Exercitiu: Aratati ca daca vectorul (𝑋, 𝑌 ) este uniform distribuit pe dreptunghiul (𝑎, 𝑏) × (𝑐, 𝑑),
atunci variabilele 𝑋 si 𝑌 sunt independente.

9 Simularea unui vector aleator continuu uniform distribuit pe un


domeniu dreptunghiular
Ce inseamna a simula vectorul (𝑋, 𝑌 )? Vectorul (𝑋, 𝑌 ) este distribuit aleator, adica nu are o
valoare fixa. Stim despre el doar probabilitatea sa ia o valoare intr-un anumit domeniu. A simula
acest vector inseamna a alege o valoare pe care acesta o poate lua, tinand cont de distributia sa.
Am demonstrat mai sus ca daca vectorul (𝑋, 𝑌 ) este uniform distribuit pe dreptunghiul [𝑎, 𝑏]×[𝑐, 𝑑],
atunci variabila 𝑋 este distribuita uniform pe intervalul [𝑎, 𝑏], si variabila 𝑌 este distribuita uniform
pe intervalul [𝑐, 𝑑].
De asemenea, se arata usor ca cele 2 variabile sunt independente. Atunci, putem simula vectorul
(𝑋, 𝑌 ) simuland separat variabilele 𝑋 si 𝑌 .
Variabilele 𝑋 si 𝑌 sunt distribuite uniform pe intervalele [𝑎, 𝑏] si [𝑐, 𝑑], deci stim sa le simulam!
In general, atunci cand simulam, presupunem ca avem la dispozitie o functie care ne genereaza uni-
form numere aleatoare in intervalul [0, 1]. In pseudocod vom numi aceasta functie urand(uniform
random).
Avem la dispozitie functia urand pentru a genera uniform numere aleatoare in intervalul [0, 1].
Cum ajungem sa generam in intervalul [𝑎, 𝑏]?
Primul pas este sa inmultim rezultatul lui urand cu 𝑏 − 𝑎, obtinand un numar in intervalul [0 ⋅ (𝑏 −
𝑎), 1 ⋅ (𝑏 − 𝑎)], adica in intervalul [0, 𝑏 − 𝑎].
Tot ce mai lipseste este sa adunam 𝑎, obtinand [0 + 𝑎, 𝑏 − 𝑎 + 𝑎] = [𝑎, 𝑏].
Pseudocodul pentru a simula variabila 𝑋, uniform distribuita pe intervalul [𝑎, 𝑏] arata atunci astfel:

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 [𝑎, 𝑏] × [𝑐, 𝑑]:

[ ]: def sim_unif_vector(a, b, c, d):


x = np.random.rand()*(b-a)+a
y = np.random.rand()*(d-c)+c
return [x, y]

Sa apelam aceasta functie, alegand domeniul [−1, 1] × [0, 2]:

[ ]: 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

samples.append(sim_unif_vector(-1, 1, 0, 2)) # facem o simulare, si o adaugam␣


↪la lista de observatii

Putem reprezenta aceste observatii grafic cu ajutorul librariei matplotlib:


[ ]: import matplotlib.pyplot as plot

Acum vom reprezenta grafic fiecare dintre cele 1000 de observatii:


[ ]: for i in range(0, 1000):
x = samples[i][0]
y = samples[i][1]
plot.scatter(x, y)

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.

10 Simularea unui vector aleator continuu uniform distribuit pe


domenii nedreptunghiulare
Vom considera drept domeniu discul unitar, adica cercul de centru (0, 1) si raza 1, si interiorul sau.

[ ]: circle = plot.Circle((0, 1), 1, clip_on = False)


fig, ax = plot.subplots()
ax.add_patch(circle)
plot.axis((-3, 3, -3, 3))
ax.set_aspect('equal', adjustable='box')
plot.show()

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

Deci pseudocodul arata astfel:


do{
x = urand() * (b - a) + a;
y = urand() * (d - c) + c;
} while (x^2 + (y-1)^2 > 1)
Acum vom scrie acelasi cod in limbajul Python, folosind functia sim_unif_vector de mai sus.
In acest limbaj nu exista do while, deci va trebuie sa il simulam folosind while:
[ ]: [x, y] = sim_unif_vector(-2, 2, -2, 2) # generam x si y in dreptunghiul [-2, 2]␣
↪x [-2, 2]

while x*x + (y - 1)*(y - 1) > 1: # atata timp cat punctul generat nu se afla in␣
↪cerc

[x, y] = sim_unif_vector(-2, 2, -2, 2) # generam altul

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

Avem un singur caz favorabil, pentru ca avem o singura valoare fixa:


Numarul de cazuri favorabile = 1
Variabila ia insa valori in intreg intervalul [0, 1]. In acest interval se afla o infinitate de valori, deci
numarul de cazuri posibile este infinit: Numarul de cazuri posibile = ∞
Atunci, bazandu-ne(intr-un mod neriguros, dar destul de intuitiv) pe formula din liceu:
1
𝑃 (𝑋 = 0.5) = ∞ =0
Pentru orice valoare fixa, aceasta probabilitate este 0, deci nu are sens sa o calculam. De aceea
calculam probabilitatea ca variabila sa se afle intr-un interval.

26
Un short-video despre numarul de elemente din [0, 1]: https://www.youtube.com/shorts/Xs0mbQUy9qg

27

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