gnuplot的相关系数
我想使用拟合函数绘制数据:gnuplot的相关系数,gnuplot,regression,correlation,Gnuplot,Regression,Correlation,我想使用拟合函数绘制数据:函数f(x)=a+b*x**2。绘图后,我得到以下结果: correlation matrix of the fit parameters: m n m 1.000 n -0.935 1.000 我的问题是:如何在gnuplot上找到相关系数?如果您正在寻找一种方法来计算相关系数,那么您使用gnuplot的运气就不好了,如本文所述 有许多其他工具用于计算相
函数f(x)=a+b*x**2
。绘图后,我得到以下结果:
correlation matrix of the fit parameters:
m n
m 1.000
n -0.935 1.000
我的问题是:如何在gnuplot上找到相关系数?如果您正在寻找一种方法来计算相关系数,那么您使用gnuplot的运气就不好了,如本文所述
有许多其他工具用于计算相关系数,例如..虽然没有直接解决此问题的方法,但有一种解决方法是可能的。我将使用python/numpy对其进行说明。首先,gnuplot脚本中生成fit并与python脚本连接的部分:
file = "my_data.tsv"
f(x)=a+b*(x)
fit f(x) file using 2:3 via a,b
r = system(sprintf("python correlation.py %s",file))
ti = sprintf("y = %.2f + %.2fx (r = %s)", a, b, r)
plot \
file using 2:3 notitle,\
f(x) title ti
这将运行correlation.py以检索字符串格式的相关性“r”。它使用“r”为拟合线生成标题。然后,correlation.py:
from numpy import genfromtxt
from numpy import corrcoef
import sys
data = genfromtxt(sys.argv[1], delimiter='\t')
r = corrcoef(data[1:,1],data[1:,2])[0,1]
print("%.3f" % r).lstrip('0')
这里,假设第一行是标题行。此外,用于计算相关性的列现在硬编码为第1和第2条。当然,这两种设置也可以更改并转换为参数
拟合线的最终标题为(例如个人示例):
您可以在gnuplot中使用
stats
命令,其语法类似于plot
命令:stats“file.dat”使用2:(f($2))名称“A”
相关系数将存储在
A_Correlation
变量中。您可以随后使用它来打印数据,也可以使用设置标签
命令在屏幕上打印:在图0.1、图0.85处设置标签1 sprintf(“r=%4.2f”,A_相关性)
您可以在中找到有关
stats
命令的更多信息。因为您可能正在使用fit函数,您可以首先参考该函数以获得R2值。
该链接使用某些现有变量,如FIT\u WSSR、FIT\u NDF来计算R2值。
R2的代码规定为:
SST = FIT_WSSR/(FIT_NDF+1)
SSE=FIT_WSSR/(FIT_NDF)
SSR=SST-SSE
R2=SSR/SST
下一步是在图形上显示R^2值。可使用以下代码实现:
在图0.7和图0.7中设置标签1 sprintf(“r=%f”,R2)
我认为你把这篇博文缩写得太多了。SST计算需要在特殊拟合后进行(fit m'your data file',使用1:2 via m
,以获得平均值),而不是在常规拟合后进行,如其他赋值。(此外,我认为SSE计算需要除以FIT\u NDF+2
,而不是FIT\u NDF
,但该错误也出现在博客文章中。)主要来说,R2通常被用作定性工具,而不是定量工具。对于许多应用,R2为0.88实际上与0.82相似。但我很想了解更多关于FIT_NDF+2逻辑的信息,因为它更准确。另外,你能解释一下这种特殊配合与一般配合的术语吗。此外,为了清楚起见,这是拟合右侧的R*2值。因为这个googlegroup()声明我们不能使用gnuplot计算R*2。
SST = FIT_WSSR/(FIT_NDF+1)
SSE=FIT_WSSR/(FIT_NDF)
SSR=SST-SSE
R2=SSR/SST