Průměry a míry rozptylu¶
In [130]:
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import gmean,hmean
In [131]:
data=np.array([1.656,1.589,1.719,1.648,1.636,1.711,1.642,1.597,1.675,1.690]) #naměřená data
zjištění počtu dat
In [132]:
ndata=np.size(data)
print("počet dat:",ndata)
počet dat: 10
Míry polohy
aritmetický průměr:
$\frac{1}{N}\sum_{i=1}^N x_i$
In [133]:
#míry polohy
mean=np.mean(data) #aritmetický průměr
medián $x_m$:
$P(x\le x_m) = P(x\ge x_m)$
In [134]:
median=np.median(data) #medián
geometrický průměr:
$\sqrt[N]{\prod_{i=1}^N x_i}$
In [135]:
gmean=gmean(data) #geometrický průměr
harmonický průměr:
$\left (\frac{1}{N}\sum_{i=1}^N\frac{1}{x_i}\right )^{-1}$
In [136]:
hmean=hmean(data)
root mean square (rms):
$\sqrt{\frac{1}{N}\sum_{i=1}^N x_i^2}$
In [137]:
rms=np.sqrt(np.mean(data**2))
In [138]:
print("míry polohy")
print(f"aritmetický průměr: {mean:8.5f}")
print(f" medián: {median:8.5f}")
print(f"geometrický průměr: {gmean:8.5f}")
print(f" harmonický průměr: {hmean:8.5f}")
print(f" root mean square: {rms:8.5f}")
míry polohy
aritmetický průměr: 1.65630
medián: 1.65200
geometrický průměr: 1.65578
harmonický průměr: 1.65526
root mean square: 1.65682
In [139]:
Fig,ax=plt.subplots()
x=np.arange(ndata)
ax.scatter(x,data,label='data')
ax.plot([0,ndata],[mean,mean],c='red',label='aritmetický průměr')
ax.plot([0,ndata],[median,median],c='green',ls='dashed',label='medián')
ax.set_xlabel("číslo měření")
ax.set_ylabel("y")
ax.legend()
plt.show()
míry rozházenosti
rozsah (maximální chyba):
$x_{max}-x_{min}$
In [140]:
rozsah=np.max(data)-np.min(data)
průměrná odchylka:
$\frac{1}{N}\sum_{i=1}^N (x_i-\overline{x})$
In [141]:
mean_dev=np.mean(data-np.mean(data))
absolutní průměrná odchylka:
$\frac{1}{N}\sum_{i=1}^N\left |(x_i-\overline{x})\right |$
In [142]:
abs_dev=np.mean(abs(data-np.mean(data)))
standardní odchylka:
$\frac{1}{N}\sum_{i=1}^N(x_i-\overline{x})^2$
In [143]:
stdev=np.std(data)
standardní odchylka (nepředpojatý odhad):
$\frac{1}{N-1}\sum_{i=1}^N(x_i-\overline{x})^2$
In [144]:
stdevn=np.std(data,ddof=1)
In [145]:
print("míry rozházenosti")
print(f" rozsah: {rozsah:8.5f}")
print(f" střední odchylka: {mean_dev}")
print(f" absolutní odchylka: {abs_dev:8.5f}")
print(f"standardní odchylka: {stdev:8.5f}")
print(f"standardní odchylka: {stdevn:8.5f} (nepředpojatý odhad)")
míry rozházenosti
rozsah: 0.13000
střední odchylka: -3.552713678800501e-16
absolutní odchylka: 0.03396
standardní odchylka: 0.04140
standardní odchylka: 0.04364 (nepředpojatý odhad)
In [151]:
Fig,ax=plt.subplots()
x=np.arange(ndata)
ax.scatter(x,data,label='data')
ax.plot([0,ndata],[mean,mean],c='red',label='aritmetický průměr')
ax.plot([0,ndata],[mean-stdevn,mean-stdevn],c='pink',ls='dashed',label='aritmetický průměr-stdev')
ax.plot([0,ndata],[mean+stdevn,mean+stdevn],c='pink',ls='dashed',label='aritmetický průměr+stdev')
ax.set_xlabel("číslo měření")
ax.set_ylabel("y")
ax.set_ylim(1.5,1.8)
#ax.legend()
plt.show()
In [ ]: