tlakova_zkouska_podklad

Vyhodnocení tlakové zkoušky na betonových krychlích

In [ ]:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from scipy import stats
In [ ]:
%matplotlib notebook

Načtení dat

Načtení předem připravených dat

In [ ]:
df = pd.read_csv('http://ws-cheetah.stm.fce.vutbr.cz/vyuka/CD004/priklady/tlakova_zkouska/data.txt', 
                 sep=';', header=None)
df
In [ ]:
f_cube_data = df.values.flatten()
f_cube_data

Načtení z dat křivek

In [ ]:
f_cube = []
for i in range(100):
    f = pd.read_csv('http://ws-cheetah.stm.fce.vutbr.cz/vyuka/CD004/priklady/tlakova_zkouska/ld_curves/krivka_{:02d}.txt'.format(i),
                    sep=';', header=None, usecols=(1,), skiprows=2)
    f_cube.append(f.values.max())
f_cube = np.array(f_cube)
f_cube

Stanovení charakteristik souboru naměřených hodnot

In [ ]:
n = len(f_cube)
n
In [ ]:
min_ = f_cube.min()
min_
In [ ]:
max_ = f_cube.max()
max_
In [ ]:
mu = f_cube.mean()
mu
In [ ]:
std = f_cube.std()
std
In [ ]:
std = f_cube.std(ddof=1)
std
In [ ]:
skew = stats.skew(f_cube)
skew
In [ ]:
skew = stats.skew(f_cube, bias=False)
skew
In [ ]:
kurt = stats.kurtosis(f_cube)
kurt
In [ ]:
CoV = std / mu
CoV

Aproximace pomocí známých hustot pravděpodobnosti

Aproximace pomocí normálního rozdělení

In [ ]:
params = stats.norm.fit(f_cube)
rv_norm = stats.norm(*params)
print('params =', params)
print('mu, std =', rv_norm.mean(), rv_norm.std())

Aproximace pomocí lognormálního rozdělení

In [ ]:
params = stats.lognorm.fit(f_cube, floc=0)
rv_lognorm = stats.lognorm(*params)
print('params =', params)
print('mu, std =', rv_lognorm.mean(), rv_lognorm.std())

Aproximace pomocí weibullova rozdělení

In [ ]:
params = stats.weibull_min.fit(f_cube, floc=0)
rv_weib = stats.weibull_min(*params)
print('params =', params)
print('mu, std =', rv_weib.mean(), rv_weib.std())

Grafické zobrazení hustot

In [ ]:
fig, ax = plt.subplots(figsize=(6,3), tight_layout=True)
ax.hist(f_cube);
In [ ]:
fig, ax = plt.subplots(figsize=(6,3), tight_layout=True)
ax.hist(f_cube, bins='sqrt', edgecolor='k', normed=True, label='data', alpha=.5);
In [ ]:
fig, ax = plt.subplots(figsize=(6,3), tight_layout=True)
ax.hist(f_cube, bins='sqrt', ec='k', normed=True, label='data', alpha=.5)

x = np.linspace(20, 45, 100)
ax.plot(x, rv_norm.pdf(x), label='norm')

ax.plot(x, rv_lognorm.pdf(x), label='lognorm')

ax.plot(x, rv_weib.pdf(x), label='weibull')

ax.legend();

Grafické zobrazení distribučních funkcí

In [ ]:
fig, ax = plt.subplots(figsize=(6,3), tight_layout=True)
ax.hist(f_cube, bins='sqrt', ec='k', normed=True, label='data', 
        alpha=.5, cumulative=True)

x = np.linspace(20, 45, 100)
ax.plot(x, rv_norm.cdf(x), label='norm')

ax.plot(x, rv_lognorm.cdf(x), label='lognorm')

ax.plot(x, rv_weib.cdf(x), label='weibull')

ax.legend();

Výpočet kvantilů

In [ ]:
def print_quantils(rv, name):
    print(name)
    print('\tf_0.05  =', rv.ppf(0.05))
    print('\tf_0.95  =', rv.ppf(0.95))
    print('\tf_0.001 =', rv.ppf(0.001))
In [ ]:
print_quantils(rv_norm, 'rv_norm')
In [ ]:
print_quantils(rv_lognorm, 'rv_lognorm')
In [ ]:
print_quantils(rv_weib, 'rv_weib')