Kalibrační křivka pomocí LibreOffice Calc a Gnuplotu


S tvorbou kalibrační křivky se setkal skoro každý, kdo se dostal do laboratoře, ať už během výuky nebo zaměstnání. V tomto článku bych chtěl ukázat, jak tento úkol zvládnout s využitím LibreOffice Calc a GNUPlotu. Ukázka ručního výpočtu je zde.

Kalibrační křivka

Kalibrační křivka slouží pro stanovení závislosti měřené veličiny na (nejčastěji) koncentraci, ale může jít i o teplotu, vlhkost, atd. My využijeme data ze spektrofotometrie, půjde tedy o závislost absorbance (A) na koncentraci (c).

$$\textrm{A} = f(\textrm{c})$$

Koncentrace [mol.dm-3]Absorbance
0,01,339
0,051,347
0,11,377
0,21,379
0,41,408
0,61,455
0,81,579
1,01,584
1,21,967

Body lze proložit několika metodami, pokud je závislost lineární, používá se nejčastěji metoda nejmenších čtverců.[1]

LibreOffice Calc

LibreOffice je balíček kancelářských aplikací, my využijeme aplikaci Calc.[2] Před delší dobou jsem zde zveřejnil návod na psaní matematických vzorců v tomto programu.

Prvním krokem je vložení dat do tabulky a z této tabulky vytvoříme graf (XY (bodový) → Pouze body).

V grafu klikneme pravým tlačítkem na jeden z bodů a z menu zvolíme položku „Vložit spojnici trendu“. Zde zvolíme lineární regresi, zaškrtneme „Zobrazit rovnici“ a ve spodní části dialogu můžeme pojmenovat proměnné.

Získaná křivka bude vypadat nějak takto:

Rovnici regrese můžeme využít pro výpočet koncentrace neznámého roztoku, u kterého jsme změřili absorbanci, např. pro absorbanci 1,285 získáme koncentraci jednoduchou úpravou rovnice:

$$\textrm{c}\ =\ \frac{\textrm{A}-1,196}{0,407}\ =\ \frac{1,285-1,196}{0,407}=0,22\ \textrm{mol.dm}^{-3}$$

Pokud chceme spočítat směrnici nebo úsek na ose y použijeme funkce SLOPE resp. INTERCEPT, pro náš příklad by byl správný tvar:

Směrnice: =SLOPE(B2:B10;A2:A10)

Úsek na ose y: =INTERCEPT(B2:B10;A2:A10)

Vzorový soubor pro LibreOffice Calc si můžete stáhnout zde.

Gnuplot

O Gnuplotu[3] jsem tady už pár článků zveřejnil, takže bez větších úvodů přejdeme k akci.

Data si připravíme do obyčejného textového souboru, který nazveme kalibracni_krivka.data, hodnoty x a y jsou odděleny mezerami. Měl by vypadat nějak takto:

0.0    1.339
0.05   1.347
0.1    1.377
0.2    1.379
0.4    1.408
0.6    1.455
0.8    1.579
1.0    1.584
1.2    1.967

Pro vykreslení bodů do PNG souboru použijeme tento jednoduchý kód:

set xrange [0 : 1.4]
set yrange [1.2 : 2.2]
set terminal png
set output 'kalibracni_krivka.png'
plot 'kalibracni_krivka.data' using 1:2 title '' with points

Získáme takový výstup:

Regresní křivku získáme přidáním tří řádků:

set xrange [0 : 1.4]
set yrange [1.2 : 2.2]
     
set terminal png
set output 'kalibracni_krivka.png'
 
f(x)=m*x + b
fit f(x) 'kalibracni_krivka.data' using 1:2 via m,b
  
plot 'kalibracni_krivka.data' using 1:2 title '' with points,\
f(x) title 'Lineární regrese'

První z přidaných řádků:

f(x)=m*x + b

definuje funkci, kterou chceme použít pro regresi, v našem případě jde o přímku. Další řádek

fit f(x) 'kalibracni_krivka.data' using 1:2 via m,b

provede optimalizaci parametrů m a b, tj. směrnice přímky a úseku na ose y, tak aby byla regrese co nejvýhodnější.

Výstup pak bude vypadat takto:

Parametry lineární regrese najdeme v souboru fit.log.

*******************************************************************************
Tue Apr 25 19:41:41 2017


FIT:    data read from 'kalibracni_krivka.data' using 1:2
        format = x:z
        x range restricted to [0.00000 : 1.40000]
        #datapoints = 9
        residuals are weighted equally (unit weight)

function used for fitting: f(x)
	f(x)=m*x + b
fitted parameters initialized with current variable values

iter      chisq       delta/lim  lambda   m             b            
   0 6.0917500000e-01  0.00e+00 8.38e-01  1.000000e+00  1.000000e+00
   4 6.3573208602e-02 -1.23e-08 8.38e-05  4.071398e-01  1.295994e+00

After 4 iterations the fit converged.
final sum of squares of residuals : 0.0635732
rel. change during last iteration : -1.23119e-013

degrees of freedom    (FIT_NDF)                        : 7
rms of residuals      (FIT_STDFIT) = sqrt(WSSR/ndf)    : 0.0952989
variance of residuals (reduced chisquare) = WSSR/ndf   : 0.00908189

Final set of parameters            Asymptotic Standard Error
=======================            ==========================
m               = 0.40714          +/- 0.07655      (18.8%)
b               = 1.29599          +/- 0.04876      (3.763%)

correlation matrix of the fit parameters:
                m      b      
m               1.000 
b              -0.759  1.000 

V oddíle „Final set of parameters“ najdeme parametry rovnice regrese, v našem případě je rovnice:

$$\textrm{A}\ =\ 0.407 \textrm{c} + 1.296$$

Ta je mírně odlišná od rovnice získané z LibreOffice, to je dáno jiným přístupem k výpočtu.

Archív se všemi soubory můžete stáhnout zde.

Literatura

  1. Metoda nejmenších čtverců
  2. LibreOffice.org
  3. gnuplot
  4. Lineární regrese na tomto webu

Leave a Reply

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..