Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
gnuplot的相关系数_Gnuplot_Regression_Correlation - Fatal编程技术网

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