Vícerozměrné normální rozdělení¶

In [2]:
from scipy import stats
import numpy as np

Vygenerujeme mnoho nezávislých veličin se stand.normálním rozdělením.

In [ ]:
x = stats.norm.rvs(size=1000)
y = stats.norm.rvs(size=1000)

Když dvojice z nich vezmeme jako body, dostaneme dvourozměrné norm.rozdělení.

In [36]:
point2d(zip(x,y))
Out[36]:
No description has been provided for this image

A když je přenormujeme, dostaneme body na kružnici.

In [ ]:
n = np.sqrt(x**2+y**2)

point2d(zip(x/n,y/n))

Uniformní bod na sféře¶

Zopakujeme totéž ve 3d.

Dostaneme body na povrchu koule, rovnoměrně rozmístěné.

In [3]:
x = stats.norm.rvs(size=3000)
y = stats.norm.rvs(size=3000)
z = stats.norm.rvs(size=3000)

point3d(zip(x,y,z))
Out[3]:
In [4]:
n3 = np.sqrt(x**2+y**2+z**2)
point3d(zip(x/n3,y/n3,z/n3))
Out[4]:

Pro srovnání, rozdělení bodů naivním postupem s generováním zem. délky a šírky. Vzorečkem pro sférické souřadnice získáme opět body na sféře. Ale protože bereme všechny zem. šírky se stejnou hustotou pravděpodobnosti, tak se nám body hromadí kolem pólů.

In [49]:
d = stats.uniform.rvs(0,2*pi, size=5000)
s = stats.uniform.rvs(-pi/2, pi, size=5000)

x = cos(s)*cos(d)
y = cos(s)*sin(d)
z = sin(s)

point3d(zip(x,y,z))
Out[49]:
In [ ]: