<jupyter_start><jupyter_text>a.0) **Wygeneruj 10 000 liczb z rozkładu jednostajnego na odcinku [-1, 1]. Sporządź ich histogram z 100 przedziałami. Porównaj histogram z wykresem funkcji gęstości.**<jupyter_code>def TaskA(N):
    l, r = -1, 1
    samples = np.random.uniform(l, r, N)
    count, bins, ignored = plt.hist(samples, bins=100, density=True)
    plt.plot(bins, np.ones_like(bins) / 2, linewidth=2, color='r')
    plt.show()
    
TaskA(10000)<jupyter_output><empty_output><jupyter_text>a.1) **Powtórz obliczenia dla 100 000 liczb**<jupyter_code>TaskA(100000)<jupyter_output><empty_output><jupyter_text>b.0) **Wygeneruj 10 000 liczb z rozkładu normalnego o średniej 5 i odchyleniu standardowym 3. Sporządź ich histogram z 100 przedziałami. Porównaj histogram z wykresem funkcji gęstości.**<jupyter_code>def TaskB(N):
    mu, sigma = 5, 3
    samples = np.random.normal(mu, sigma, N)
    count, bins, ignored = plt.hist(samples, bins=100, density=True)

    normal_d = multivariate_normal.pdf(bins, mean=mu, cov=sigma*sigma)
    plt.plot(bins, normal_d, linewidth=2, color='r')
    plt.show()
    
TaskB(10000)<jupyter_output><empty_output><jupyter_text>b.1)**Powtórz obliczenia dla 100 000 liczb.**<jupyter_code>TaskB(100000)<jupyter_output><empty_output><jupyter_text>c.0)**Wygeneruj 10 000 punktów (x, y), których współrzędna x ma rozkład normalny N(2, 5), zaś współrzędna y ma rozkład normalny N(3, 1). Sporządź wykres tych punktów. Porównaj go z wykresem funkcji gęstości.**<jupyter_code>def TaskC(N):
    sigma_x, sigma_y = 5, 1
    mean = (2, 3)
    cov = np.array([[sigma_x ** 2, 0], [0, sigma_y ** 2]])
    bins_no = 100
    X, Y = np.random.multivariate_normal(mean, cov, N).T

    # 2d histogram from random
    
    plt.title('2d histogram random draw')
    count, xedges, yedges, img_mesh = plt.hist2d(X, Y, bins=(bins_no, bins_no), density=True, norm=mcolors.PowerNorm(0.7), cmap=cm.viridis)
    
    xedges, yedges = xedges[:-1], yedges[:-1]
    xedges, yedges = np.meshgrid(xedges, yedges)
    
    F = scipy.stats.multivariate_normal(mean, cov)
    pos = np.empty(xedges.shape + (2,))
    pos[:, :, 0] = xedges
    pos[:, :, 1] = yedges
    
    plt.contour(xedges, yedges, F.pdf(pos), cmap='hot')
    
    
    # 3d from random draw

    fig = plt.figure(figsize=(7, 6))
    fig.suptitle('3d from random draw')
    ax = fig.gca(projection='3d')
    ax.plot_surface(xedges, yedges, count, rstride=3, cstride=3, linewidth=1, antialiased=True, cmap=cm.viridis)
    cset = ax.contourf(xedges, yedges, count, zdir='z', offset=-0.15, cmap=cm.viridis)

    ax.set_zlim(-0.15,0.2)
    ax.set_zticks(np.linspace(0,0.2,5))
    ax.view_init(27, -21)

    plt.show()


    # 2d from PDF

    Z = F.pdf(pos)
    
    plt.imshow(Z, interpolation='none')
    plt.title('2d from PDF')
    
    # 3d from PDF

    fig = plt.figure(figsize=(7, 6))
    fig.suptitle('3d from PDF')
    ax = fig.gca(projection='3d')
    ax.plot_surface(xedges, yedges, Z, rstride=3, cstride=3, linewidth=1, antialiased=True, cmap=cm.viridis)
    cset = ax.contourf(xedges, yedges, Z, zdir='z', offset=-0.15, cmap=cm.viridis)

    ax.set_zlim(-0.15,0.2)
    ax.set_zticks(np.linspace(0,0.2,5))
    ax.view_init(27, -21)

    plt.show()

    
TaskC(10000)<jupyter_output><empty_output><jupyter_text>c.1)**Powtórz obliczenia dla 100 000 punktów.**<jupyter_code>TaskC(100000)<jupyter_output><empty_output><jupyter_text>d) **Używając danych wygenerowanych w poprzednim punkcie oszacuj prawdopodobieństwo, że  X < Y dla zmiennych losowych X z rozkładem normalnym N(2, 5) i Y z rozkładem normalnym N(3, 1). Uzyskaną wartość porównaj z dokładnym prawdopodobieństwem takiego zdarzenia obliczonym w oparciu o rachunek prawdopodobieństwa i statystykę.**<jupyter_code>sigma_x, sigma_y = 5, 1
mean = (2, 3)
cov = np.array([[sigma_x ** 2, 0], [0, sigma_y ** 2]])
    
def getXY(N):
    X, Y = np.random.multivariate_normal(mean, cov, N).T
    return (X, Y)

N = 10000
X, Y = getXY(N)
print(f'For N = {N1} P(X < Y) equals {np.sum(X < Y) / N * 100}%')

N = 100000
X, Y = getXY(N)
print(f'For N = {N} P(X < Y) equals {np.sum(X < Y) / N * 100}%')

'''
P(X < Y) = P(X - Y < 0)
Z = X - Y
Z ~ N(mu_x - mu_y, sigma_x - sigma_y) = N(-1, sqrt(siqma_x ^ 2 + sigma_y ^2))
'''
print(f'Score by hand: {scipy.stats.norm.cdf(0, -1, math.sqrt(sigma_x ** 2 + sigma_y ** 2)) * 100}%')<jupyter_output>For N = 10000 P(X < Y) equals 56.730000000000004%
For N = 100000 P(X < Y) equals 57.69800000000001%
Score by hand: 57.774036626352995%
StarcoderdataJupyterStructuredCleanDedup