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
产生: