나는 데이터 세트를 가지고 있습니다 :
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축이고 두 번째 열은 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 > Regression
. Type of Fit: Quadratic
및 를 선택합니다 Accept
.
새로운 적합 곡선이 그려지고 "콘솔"이 나타납니다.
(...)
y = 30.575 - 51.796 * x + 22.217 * x^2
(...)
추가로 GUI를 사용하여 데이터를 검은색 점으로 만들고 빨간색 곡선에 맞출 수 있습니다.
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")
해결하려면 다음을 사용하십시오.
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