Why not login to Qiita and try out its useful features?

We'll deliver articles that match you.

You can read useful information later.

1
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

x値, y値にエラーバーがあるときのfitting

Last updated at Posted at 2020-10-22

個人メモ

xy平面に存在する、fittingしたいデータにエラーバーが存在する場合のエラーバーフィッティングのやり方をメモ程度に(Gnuplot.jlの文献がわかりずらかったので記述する).

参考URL:https://riptutorial.com/gnuplot/example/27491/fitting-data-with-errors


使用するものは
Julia 1.5.0
Gnuplot.jl


以下のサンプルデータがあったとして

qiita.jl
x = [1.0, 0.699, 0.492, 0.332, 0.26, 0.205, 0.152, 0.126, 0.113, 0.101]
y = [12.629999999999997, 9.446833333333332, 6.870000000000003, 4.446666666666669, 3.2823333333333338, 2.3615, 1.5669999999999997, 1.1508333333333334, 1.0224999999999997, 0.8695000000000002]
xerr = [0.0, 0.0006042022055027993, 0.0011512517321786886, 0.002247965322632335, 0.0028503588298436655, 0.004671390455855099, 0.005048214501530516, 0.007837345552787455, 0.007954572277127921, 0.00723438424981115]
yerr = [2.0e-5, 4.169928653076862, 4.45897153149065, 3.092209273657006, 2.007596983888329, 1.7789611327582189, 0.9446893489934641, 0.5132322521361732, 0.4083804308132142, 0.2517309567301392]
qiita.jl
using Gnuplot
@gp x y xerr yerr "w xyerrorbars ps 1.5 t '{/Latex Sample data}'"
@gp :- "set logscale x"
@gp :- "set logscale y"

スクリーンショット 2020-10-23 2.29.55.png

従来のfitting

qiita.jl

name = "\$ samplingdata"
@gp    "f(x) = a*x**b"      # define an analytical model
@gp :-   "a=1" "b=1"     # set parameter initial values
@gp :- name=>(x, y)             # define a named dataset
@gp :- "fit f(x) $name via a,b;"    # fit the data
*******************************************************************************
Fri Oct 23 02:37:30 2020


FIT:    data read from $ c3scaling
        format = z
        #datapoints = 10
        residuals are weighted equally (unit weight)

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

iter      chisq       delta/lim  lambda   a             b            
   0 2.8764613569e+02   0.00e+00  3.76e-01    1.000000e+00   1.000000e+00
   6 1.3060759013e+00  -2.93e-02  3.76e-07    1.307892e+01   1.031668e+00

After 6 iterations the fit converged.
final sum of squares of residuals : 1.30608
rel. change during last iteration : -2.93426e-07

degrees of freedom    (FIT_NDF)                        : 8
rms of residuals      (FIT_STDFIT) = sqrt(WSSR/ndf)    : 0.404054
variance of residuals (reduced chisquare) = WSSR/ndf   : 0.163259

Final set of parameters            Asymptotic Standard Error
=======================            ==========================
a               = 13.0789          +/- 0.3547       (2.712%)
b               = 1.03167          +/- 0.04416      (4.28%)

correlation matrix of the fit parameters:
                a      b      
a               1.000 
b               0.583  1.000 

エラーバーつきfitting

qiita.jl

name = "\$ samplingdata"
@gp    "f(x) = a*x**b"      # define an analytical model
@gp :-   "a=1" "b=1"     # set parameter initial values
@gp :- name=>(x, y, xerr, yerr)             # define a named dataset
@gp :- "fit f(x) $name xyerrors via a,b;"    # fit the data
*******************************************************************************
Fri Oct 23 02:36:19 2020


FIT:    data read from $ c3scaling xyerrors
        format = z:s
        #datapoints = 10
function used for fitting: f(x)
	f(x) = a*x**b
fitted parameters initialized with current variable values

iter      chisq       delta/lim  lambda   a             b            
   0 3.3814225003e+11   0.00e+00  1.12e+04    1.000000e+00   1.000000e+00
   7 3.8514486446e-01  -8.32e-02  1.12e-03    1.263000e+01   1.144262e+00

After 7 iterations the fit converged.
final sum of squares of residuals : 0.385145
rel. change during last iteration : -8.31863e-07

degrees of freedom    (FIT_NDF)                        : 8
rms of residuals      (FIT_STDFIT) = sqrt(WSSR/ndf)    : 0.219415
variance of residuals (reduced chisquare) = WSSR/ndf   : 0.0481431
p-value of the Chisq distribution (FIT_P)              : 0.999951

Final set of parameters            Asymptotic Standard Error
=======================            ==========================
a               = 12.63            +/- 4.388e-06    (3.475e-05%)
b               = 1.14426          +/- 0.01899      (1.66%)

correlation matrix of the fit parameters:
                a      b      
a               1.000 
b               0.000  1.000 

スクリーンショット 2020-10-23 2.40.22.png

エラーを考慮したフィッティング大事

1
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Comments

No comments

Let's comment your feelings that are more than good

Qiita Advent Calendar is held!

Qiita Advent Calendar is an article posting event where you post articles by filling a calendar 🎅

Some calendars come with gifts and some gifts are drawn from all calendars 👀

Please tie the article to your calendar and let's enjoy Christmas together!

1
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?