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
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
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')