具有线性回归的Gnuplot

时间:2016-02-29 08:50:03

标签: gnuplot multiple-columns regression

我正在尝试使用(Fit(x))进行线性回归。而不是在数据文件中有两列,例如x和y值,此文件具有例如5列。我想选择每列的avg值并将其提供给F(X)函数。

数据:

A   B   C   D   E
2   2   5   10  20
4   5   6   11  1
6   8   7   12  4
8   9   12  13  8
10  11  10  14  17

我可以吗?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

假设您的数据是指定的,并且您希望将函数f(x)=m*x+b拟合到基于0的列索引(0,1,2,3或4)应为x值的数据,并且列平均值应为y值。我们需要构建一个包含平均值的新数据文件。

在gnuplot 5中,我们可以使用名为内联数据的东西。这是一个特殊的变量,其行为类似于文件。我们将找到每列数据的平均值,并构造一个包含这些数据的内联数据变量。我们通过循环列索引并应用stats函数来完成此操作。可以指示打印命令打印到内联数据变量。

set print $l append
do for [i=1:5] {
    stats datafile u i nooutput
    print STATS_mean
}
set print  # restores ordinary print behavior

使用您的数据,我们可以通过print $l打印来查看$ l中包含的内容:

6.0
7.0
8.0
12.0
10.0

我们现在可以将fit命令应用于此数据

f(x) = m*x + b
fit f(x) $l u 0:1 via m,b

这将使数据拟合,使得f(x)=列x的平均值(或者与拟合得到的值接近)。

enter image description here

在gnuplot 4.6中,内联数据不可用,但我们可以使用临时文件。用$l替换所有出现的"tempfile"将会起作用(print $l命令除外),但会将数据添加到名为 tempfile 的临时文件中。