Vyhodnocení tlakové zkoušky na betonových krychlích¶
In [1]:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from scipy import stats
In [2]:
%matplotlib notebook
In [3]:
df = pd.read_csv('http://ws-cheetah.stm.fce.vutbr.cz/vyuka/CD004/priklady/tlakova_zkouska/data.txt',
sep=';', header=None)
f_cube_data = df.values.flatten()
f_cube_data
Out[3]:
Načtení z dat křivek¶
In [4]:
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
Out[4]:
Stanovení charakteristik souboru naměřených hodnot¶
In [5]:
width = 8
print('{:>{width}} = {: d}'.format('n', len(f_cube), width=width))
print('{:>{width}} = {: .1f}'.format('min', f_cube.min(), width=width))
print('{:>{width}} = {: .1f}'.format('max', f_cube.max(), width=width))
print('{:>{width}} = {: .3f}'.format('mu', f_cube.mean(), width=width))
print('{:>{width}} = {: .3f}'.format('std', f_cube.std(ddof=1), width=width))
print('{:>{width}} = {: .6f}'.format('skew', stats.skew(f_cube, bias=False), width=width))
print('{:>{width}} = {: .6f}'.format('kurtosis', stats.kurtosis(f_cube), width=width))
print('{:>{width}} = {: .2f} %'.format('CoV', f_cube.std() / f_cube.mean() * 100, width=width))
Aproximace pomocí známých hustot pravděpodobnosti¶
In [6]:
params = stats.norm.fit(f_cube)
rv_norm = stats.norm(*params)
print('params =', params)
print('mu, std =', rv_norm.mean(), rv_norm.std())
In [7]:
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())
In [8]:
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 [9]:
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 [10]:
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 [11]:
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))
print_quantils(rv_norm, 'rv_norm')
print_quantils(rv_lognorm, 'rv_lognorm')
print_quantils(rv_weib, 'rv_weib')