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