多个文件的相关系数

Correlation coefficient for multiple files

我正在尝试从多个数据文件中绘制散点图。 我想通过线性拟合进入情节,我想将相关系数写入情节。 我想对这些数据文件中的某些行执行此操作。 那是我的线性拟合:

fit [0:1] [0:1000] f(x) '< for i in data_1.csv data_2 data_3.csv \
data_4.csv data_5.csv; do cat "$i"; echo; done' every ::121::361 using 5:27 via a,b

这有效.... 现在以同样的方式获得相关系数会很棒......

stats '< for i in data_1.csv data_2 data_3.csv \
data_4.csv data_5.csv; do cat "$i"; echo; done' every ::121::361 using 5:27 "Correlation C."

这不起作用 我收到此错误:

format must have 1-7 conversions of type double (%lf)

一些更新:

这是适合我的输出

Final set of parameters            Asymptotic Standard Error
=======================            ==========================
a               = -410.518         +/- 32.5         (7.918%)
b               = 746.018          +/- 5.448        (0.7302%)

correlation matrix of the fit parameters:
                a      b      
a               1.000 
b              -0.695  1.000 

我不确定输出是否与我的 bash 脚本一起工作以通过多个文件拟合曲线。 -410.518 的斜率看起来很奇怪。

更新后的问题:此配件是否适用于具有多个文件的 gnuplot?实际的 Plot 看起来不错,但为什么输出中有如此奇怪的值?

那只是一个语法错误,把stats命令中的"Correlation C."去掉,或者用name给生成的变量加上STATS_以外的前缀:

stats '...' name 'CorrelationC_'
show variables CorrelationC_

并且,您可以使用例如awk 合并所有文件(与 cat data_*.csv 相反,如果数据文件的最后一行没有换行,这也有效):

cmd = '< awk "//" data_*.csv'
stats cmd every ::121::361 using 5:27
...
plot cmd ...