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()
No description has been provided for this image
In [ ]: