In [1]:
import numpy as np
import matplotlib.pyplot as plt
Načteme data ze souboru data_linearni_regrese.txt,
který obsahuje 3 sloupce:
nezávislá proměnná (x), závislá proměnná (y), chyba závislé proměnné (ey)
In [3]:
data=np.loadtxt('data_linearni_regrese.txt')
x=data[:,0]
y=data[:,1]
ey=data[:,2]
lineární regrese pomocí funkce np.polyfit
w = ey znamená, že jako váhy budou v $\chi^2$ použity převrácené hodnoty kvadrátu chyb $1/\sigma^2$
parametr cov='unscaled' způsobí, že se do pole cov uloží kovarianční matice
In [5]:
par,cov=np.polyfit(x,y,1,w=1/ey,cov='unscaled')
print(par) #hodnoty parametrů
print(cov) #kovarianční matice
[ 4.97887127 -71.33033383] [[ 0.00152441 -0.02784932] [-0.02784932 0.81669339]]
výpos nafitovaných parametrů přímky $y=ax+b$ a jejich chyb (odmocniny z diagonálních prvků kovarianční matice)
In [7]:
print(f"a = {par[0]}+/-{np.sqrt(cov[0,0])}")
print(f"b = {par[1]}+/-{np.sqrt(cov[1,1])}")
a = 4.978871274906799+/-0.039043705693327206 b = -71.33033382558972+/-0.9037109001688683
Vykreslení grafu: experimentální hodnoty a nafitovaná přímka
In [9]:
plt.errorbar(x,y,ey,lw=0,elinewidth=1.5,marker='o',capsize=5,label='data')
plt.plot(x,np.polyval(par,x),c='red',label='fit')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()
In [ ]: