```python
import math
import numpy as np
import scipy.stats
import scipy.linalg
```

# Entropie



```python
values =[1/2, 1/4, 1/4] # pravdepodobnosti
res = 0
for x in values:
    res -= x * math.log(x,2)
print(f"Entropie: {res}")
```

    Entropie: 1.5


# Střední délka kódu



```python
ptsLst = [1/2, 1/4, 1/4] # pravdepodobnost kodoveho slova
lenLst = [1, 2, 2] # delka kodoveho slova
res = 0
for p,l in zip(ptsLst, lenLst):
    res += l*p
print(f"Střední délka kódu: {res}")
```

    Střední délka kódu: 1.5


# Test nezávislosti v kontingenčních tabulkách


* [inverse survival function obrazek (uplne dole)](https://www.itl.nist.gov/div898/handbook/eda/section3/eda362.htm)


```python
N = np.array( # kontingencni tabulka
    [
        [15, 85],
        [5, 95]
    ]
)
n = np.sum(N)

teoreticke_cetnosti, namerene_cetnosti = [], []
for i in range(len(N)):
    for j in range(len(N[i])):
        Ni_ = np.sum(N[i, :])
        N_j = np.sum(N[:, j])
        teoreticka_cetnost = (Ni_* N_j) / n
        teoreticke_cetnosti.append(teoreticka_cetnost)
        namerene_cetnosti.append(N[i,j])
        
    

stat, p_val = scipy.stats.chisquare(namerene_cetnosti, teoreticke_cetnosti)
print(f"Testova statistika chi2: {stat:0.2f}")
print(f"p-hodnota: {p_val:0.2f}")

alpha = 0.1
row = N.shape[0]
col = N.shape[1]
pocet_stupnu_volnosti = (row-1)*(col-1)
kriticky_obor = scipy.stats.chi2.isf(alpha, pocet_stupnu_volnosti)
print(f"Kriticky obor {kriticky_obor:0.2f}")
print(f"Nulovou hypotezu na hladine {alpha} zamitame, pokud {stat:0.2f} >= {kriticky_obor:0.2f}: {stat >= kriticky_obor}")
```

    Testova statistika chi2: 5.56
    p-hodnota: 0.14
    Kriticky obor 2.71
    Nulovou hypotezu na hladine 0.1 zamitame, pokud 5.56 >= 2.71: True


# Stacionární rozdělení




```python
P =  np.matrix(# matice prechodu
[
   [1/2, 1/2, 0, 0, 0],
   [1, 0, 0, 0, 0],
   [0, 1/2, 0, 0, 1/2],
   [0, 0, 1, 0, 0], 
   [0, 0, 0, 1, 0], 
])

# stacionární rozdělení
W = np.transpose(P-np.eye(P.shape[0])) 
pi = scipy.linalg.null_space(W)
pi = np.transpose(pi/sum(pi)) # normalizace
print(f"Počet stacionárních rozdělení: {len(pi)}")
for row in pi:
    for col in row:
        print(f"{col:0.2f}", end=" ")
    print()
```

    Počet stacionárních rozdělení: 1
    0.67 0.33 -0.00 -0.00 -0.00 


# Exponenciální funkce


* [dokumentace](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.expon.html)


```python
lambda1 = 30
t = 10
print(f"Distribuční funkce: {1-math.e**(-lambda1*t):0.2f}") # distribuční funkce
print(f"Funkce přežití: {math.e**(-lambda1*t):0.2f}")
```

    Distribuční funkce: 1.00
    Funkce přežití: 0.00


# Párový t-test




```python
X = np.array([39.5, 38, 39, 38, 38.5, 38, 39.5, 38.5])
Y = np.array([38, 38.5, 39.5, 39.5, 37, 38.5, 37, 37])
Z = X - Y
sz = np.sqrt(Z.var(ddof=1)) # POZOR vyberovy rozptyl (n-1) !!!
n = len(Z)
nsq = np.sqrt(n)
T = (Z.mean() / sz ) * nsq
alpha=0.05

kriticky_obor = scipy.stats.t.isf(q=alpha, df=n-1)
print(f"Testova statistika T = {T:0.2f}")
print(f"Kriticky obor -t_{alpha},{n-1} = {-kriticky_obor:0.2f}")
print(f"{T:0.2f} <= {-kriticky_obor:0.2f}", T <= -kriticky_obor)
print("Zamitame H0: ",T <= -kriticky_obor)
```

    Testova statistika T = 1.00
    Kriticky obor -t_0.05,7 = -1.89
    1.00 <= -1.89 False
    Zamitame H0:  False



```python
# independent: https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.ttest_ind.html
# related: https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.ttest_rel.html
scipy.stats.ttest_rel(X, Y)
```




    Ttest_relResult(statistic=1.0, pvalue=0.3506166628202075)



# Rychlé výpočty


```python
import sympy
vyraz = "binomial(5,3)"
sympy.simplify(vyraz)
```




$\displaystyle 10$



8ce6336f0c7ee0e87562e7021eb7b834e2d30fc8
ipynb
Jupyter Notebook
notebook.ipynb
TaIos/ni-vsm-openbook-test-helper
127fd4f68606d751779452a546b139ea3e0eb72c
MIT
notebook.ipynb
TaIos/ni-vsm-openbook-test-helper
127fd4f68606d751779452a546b139ea3e0eb72c
MIT
notebook.ipynb
TaIos/ni-vsm-openbook-test-helper
127fd4f68606d751779452a546b139ea3e0eb72c
MIT
Qwen/Qwen-72B
1. YES
2. YES