データセットに方程式を合わせる

データセットに方程式を合わせる

私はデータセットを持っています:

1.12158 0.42563 0.07
1.12471 0.42112 0.07
1.12784 0.41685 0.07
1.13097 0.41283 0.07
1.13409 0.40907 0.07
1.13722 0.40556 0.07
1.14035 0.40231 0.07
1.14348 0.39933 0.07
1.1466 0.39661 0.07
1.14973 0.39417 0.07
1.15285 0.39201 0.07
1.15598 0.39012 0.07
1.15911 0.38852 0.07
1.16224 0.3872 0.07
1.16536 0.38618 0.07
1.16849 0.38544 0.07
1.17162 0.385 0.07
1.17474 0.38486 0.07
1.17787 0.38543 0.07
1.181 0.38714 0.07
1.18413 0.38994 0.07
1.18725 0.39378 0.07
1.19038 0.39858 0.07
1.19351 0.40426 0.07
1.19664 0.41071 0.07
1.19976 0.41786 0.07

最初の列はx軸、2番目の列はy軸です。

このデータを方程式に合わせたいです。

Ax^2 + Bx + c

A、B、cの値を求めます。

どのプログラムを使用できますか?

どうすればいいのか教えてくれたら本当に嬉しいです。

ありがとうございます。

答え1

GNUplot:CLIソリューション

data.datデータを含むファイルであるとします。

$ gnuplot
gnuplot> fit a*x**2 + b*x + c 'data.dat' via a, b, c
(...)
Final set of parameters            Asymptotic Standard Error
=======================            ==========================
a               = 22.2174          +/- 1.09         (4.906%)
b               = -51.7961         +/- 2.53         (4.885%)
c               = 30.5745          +/- 1.468        (4.802%)
(...)

バラより文書のセクションに合わせるより多くの選択のために。

GNUPlotに直接パイプすることもできます。

printf '%s\n' 'fit a*x**2 + b*x + c "data.dat" via a, b, c' | gnuplot

答え2

XMGrace(Graceとも呼ばれる):GUIソリューション

data.datデータを含むファイルであるとします。

xmgrace data.dat

XMGraceウィンドウは、データを表す曲線とともにポップアップされます。

ツールバーからを選択しますData > Transformations > RegressionType of Fit: Quadraticと を選択しますAccept

新しいフィット曲線が描かれ、「コンソール」が表示されます。

(...)
y = 30.575 - 51.796 * x + 22.217 * x^2
(...)

さらに、GUIを使用してデータを黒い点にし、赤い曲線に合わせることができます。

XMGraceのワンシーン

XMGraceはいくつかの機能を欠いていますが、CLIインターフェイスも提供します。詳細は以下から確認できます。文書へのアクセス

答え3

CLIによるRのソリューション

Linuxの最初の端末タイプR

それから

data.dat<-read.table(textConnection("a b c
1.12158 0.42563 0.07
1.12471 0.42112 0.07
1.12784 0.41685 0.07
1.13097 0.41283 0.07
1.13409 0.40907 0.07
1.13722 0.40556 0.07
1.14035 0.40231 0.07
1.14348 0.39933 0.07
1.1466 0.39661 0.07
1.14973 0.39417 0.07
1.15285 0.39201 0.07
1.15598 0.39012 0.07
1.15911 0.38852 0.07
1.16224 0.3872 0.07
1.16536 0.38618 0.07
1.16849 0.38544 0.07
1.17162 0.385 0.07
1.17474 0.38486 0.07
1.17787 0.38543 0.07
1.181 0.38714 0.07
1.18413 0.38994 0.07
1.18725 0.39378 0.07
1.19038 0.39858 0.07
1.19351 0.40426 0.07
1.19664 0.41071 0.07
1.19976 0.41786 0.07"),header=TRUE)

それから

plot(data.dat$a,data.dat$b,col="red",type="b")

Rの散布図

解決するには、次を使用します。

fit<-lm(data.dat$b~poly(data.dat$a,2,raw=TRUE))
summary(fit)

Call:
lm(formula = data.dat$b ~ poly(data.dat$a, 2, raw = TRUE))

Residuals:
       Min         1Q     Median         3Q        Max 
-0.0041754 -0.0021479  0.0004573  0.0019714  0.0059427 

Coefficients:
                                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)                        30.575      1.468   20.83  < 2e-16 ***
poly(data.dat$a, 2, raw = TRUE)1  -51.796      2.530  -20.47 2.91e-16 ***
poly(data.dat$a, 2, raw = TRUE)2   22.217      1.090   20.38 3.20e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.002729 on 23 degrees of freedom
Multiple R-squared:  0.9568,    Adjusted R-squared:  0.9531 
F-statistic:   255 on 2 and 23 DF,  p-value: < 2.2e-16

関連情報