Jerkwin分享 http://blog.sciencenet.cn/u/Jerkwin

博文

gnuplot拟合参数的误差及相关系数

已有 7901 次阅读 2015-1-10 01:42 |个人分类:数学轮子|系统分类:科研笔记

2015-01-09 11:10:33

gnuplot的fit命令可以做拟合, 但使用的是非线性拟合方法, 即便对于线性模型也是一样$,$ 而且拟合结果中不会给出线性相关系数 R2. stat命令可以给出线性相关系数, 可惜无法用于带误差的拟合. 如果我们需要 R2 的话, 可以利用fit命令, 并根据相关系数的定义进行计算. 具体方法如下.

根据线性回归的方差分析

SST=i(yiyˉ)2SSR=i(y^iyˉ)2SSE=i(yiy^i)2SST=SSR+SSER2=SSRSST=SSTSSESST=1SSESST=1i(y^iyˉ)2i(yiyˉ)2

其中, SST(sum of squares for total)为总平方和, 即数据的总体方差, SSR(sum of squares for regression, 也可写做模型平方和,SSM,sum of squares for model)为回归平方和, 即拟合数据的总体方差, SSE(sum of squares for error)为残差平方和, 即数据与其拟合值的方差.

gnuplot的fit命令会给出拟合后的sum of squares of residuals, 也称为拟合的 χ2, 存于内置变量FIT_WSSR中. 名字中虽然有SSR, 但实际上它相应于SSE, 也就是残差的平方和. 知道了这一点, 再和上面的公式进行对比, 可以发现, SST可看作是数据对常数项拟合的FIT_WSSR, 而SSE则是数据对线性模型拟合的FIT_WSSR. 这样我们利用fit命令先做一次常数拟合得到SST, 再做一次线性拟合得到SSE, 就能计算出 R2 了.

测试数据# X       Y      Yerr1.23457  3.4326 0.15340.694444 4.7962 0.17880.444444 6.1129 0.18760.326531 6.6983 0.12900.25     7.1511 0.1468代码# Language: gplmean(x)=m       # 拟合后m即为Y的平均值fit mean(x)'File' u 1:2:3 via mSST = FIT_WSSR  # 对平均值的方差, 即SSTf(x)=A+B*x      # 线性模型fit f(x)'File' u 1:2:3 via A, BSSE=FIT_WSSR    # 对线性模型的方差, 即SSEprint "R^2=",1-SSE/SST结果After 4 iterations the fit converged.final sum of squares of residuals : 11.001rel. change during last iteration : -1.77313e-010degrees of freedom    (FIT_NDF)                        : 3rms of residuals      (FIT_STDFIT) = sqrt(WSSR/ndf)    : 1.91494variance of residuals (reduced chisquare) = WSSR/ndf   : 3.66699p-value of the Chisq distribution (FIT_P)              : 0.0117207Final set of parameters            Asymptotic Standard Error=======================            ==========================A               =  7.89179         +/- 0.2438       (3.09%)B               = -3.75272         +/- 0.3618       (9.642%)R^2=0.972868859990092

常用的origin软件Analysis-->Fit Linear给出的拟合结果如下:

Linear Regression for Data1_B:Y = A + B * XWeight given by Data1_C error bars.Parameter  Value      Error----------------------------------------A          7.89179    0.12733B         -3.75272    0.18895----------------------------------------R           SD         N    P-----------------------------------------0.98634    1.91494    5    0.00191----------------------------------------

对比可知, 二者给出的SD相同, R2 相同, 拟合参数值也相同, 但参数的拟合误差不同. 检查后发现, 与origin的Analysis-->Fit Linear不同, gnuplot的fit给出的拟合参数误差是经过SD标度的误差. 比如, 对常数项A的误差, origin给出的是0.12733, 将其乘上SD 1.91494, 就得到0.2438293102, 这正是gnuplot给出的误差. 我不能确定这两种值哪个更合理或是更常用一些, 只是在这里提醒大家在对比时要注意到它们的不同. 此外, origin的非线性拟合可是使用误差项, 并可以指定不同的权重方法, 也可以选择是否对拟合参数的误差进行SD标度.

注意, 当不考虑误差项Yerr进行拟合时, gnuplot和origin给出的拟合参数的误差完全相同.

网络资料


◆本文地址: http://jerkwin.github.io/2015/01/09/gnuplot拟合参数的误差及相关系数, 转载请注明◆




https://blog.sciencenet.cn/blog-548663-857953.html

上一篇:复兴中文
下一篇:我使用的markdown工具
收藏 IP: 130.184.197.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-25 21:58

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部