多个文件的相关系数

时间:2015-12-03 14:44:52

标签: gnuplot correlation

我正在尝试从多个数据文件中获取散点图。 我想在图中得到线性拟合,我想将相关系数写入图中。 我想对这些数据文件中的某些行进行操作。 这是我的线性拟合:

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看起来不错,但为什么输出中存在如此奇怪的值?

1 个答案:

答案 0 :(得分:1)

这只是一个语法错误,从"Correlation C."命令中删除stats,或使用name为生成的变量提供STATS_以外的前缀:< / p>

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

而且,您可以使用以下方法简化您的通话: awk合并所有文件(如果数据文件的最后一行没有新行,也可以合并cat data_*.csv):

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