Gnuplot-来自数据文件的多元线性回归

Gnuplot-来自数据文件的多元线性回归,gnuplot,Gnuplot,我有一个包含多列的文件,我希望使用循环对该文件进行多重线性回归(回归后全部绘制在同一个图形中),如下所示: do for [i=1:6] { g(i,x)= 'm'.i*x + 'b'.i fit g(i,x) 'Dens.dat' using 1:(column(i+1)) via 'm'.i,'b'.i } 但我得到一个错误:无法读取参数文件“m1” 如何修复此问题?如果您的Gnuplot版本不支持阵列,则可以修改,例如: vGet(name, i) = value(sprintf

我有一个包含多列的文件,我希望使用循环对该文件进行多重线性回归(回归后全部绘制在同一个图形中),如下所示:

do for [i=1:6] {
g(i,x)= 'm'.i*x + 'b'.i
fit g(i,x) 'Dens.dat' using 1:(column(i+1)) via 'm'.i,'b'.i    
}
但我得到一个错误:
无法读取参数文件“m1”


如何修复此问题?

如果您的Gnuplot版本不支持阵列,则可以修改,例如:

vGet(name, i) = value(sprintf("%s%i", name, i)) 
vSet(name, i, val) = sprintf("%s%i = %.16e", name, i, val)

N = 2
#array m[N]
#array b[N]

do for [i=1:N] {
    g(x)= alpha*x + beta
    fit g(x) 'Dens.dat' using 1:(column(i+1)) via alpha,beta

    eval vSet('m', i, alpha);
    eval vSet('b', i, beta);

    #m[i-1] = alpha
    #b[i-1] = beta
}

set key top left
set terminal pngcairo
set output 'fig.png'

plot \
    for [i=1:N] vGet('m', i)*x + vGet('b',i) w l t '', \
    for [i=1:N] 'Dens.dat' u 1:(column(i+1)) w p t sprintf("column %d", i)
与密度数据相结合,如下所示:

1   4   5
2   8   10
3   12  15
4   16  20
产生: