Gnuplot线性拟合,f(x)=a*x

Gnuplot线性拟合,f(x)=a*x,gnuplot,Gnuplot,我有以下数据集: 0 6 25 27 91 25 160 21 190 32 335 28 如何以y=ax+6的形式绘制线性回归,使直线包含点(0,6)?我尝试了以下代码: f(x) = a*x +6 fit f(x) "data.txt" u 1:2 via a plot "data.txt" u 1:2 w p pt 7, f(x) w l 上点的距离之和大于下点的距离(实际上我们只看到一个下点:(335,28))。如何拟合f(x),使距离之和相

我有以下数据集:

0 6
25 27 
91 25
160 21
190 32
335 28
如何以
y=ax+6
的形式绘制线性回归,使直线包含点
(0,6)
?我尝试了以下代码:

f(x) = a*x +6
fit f(x) "data.txt" u 1:2 via a
plot "data.txt" u 1:2 w p pt 7, f(x) w l
上点的距离之和大于下点的距离(实际上我们只看到一个下点:(335,28))。如何拟合f(x),使距离之和相等


使用gnuplot进行拟合是一种最小二乘拟合,即该算法将数据点和
f(x)
之间的差值的平方和最小化(检查
帮助拟合

相比之下,很明显,您正在寻找将数据点和
f(x)
之间的差异相加,并试图使和为零。那不一样

只要您的函数像
a*x+b
一样简单,您就可以使用
stats
按预期计算直线的斜率

代码:

### different ways of "fitting"
reset session

$Data <<EOD
0 6
25 27 
91 25
160 21
190 32
335 28
EOD

b = 6
f(x) = a0*x + b

# least square fit
set fit nolog quiet
fit f(x) $Data u 1:2 via a0

# make sum of difference to h(x) to zero
stats $Data u 1:2 nooutput
h(x) = a1*x + b
a1 = (STATS_sum_y - STATS_records*b)/STATS_sum_x

set key top left

plot $Data u 1:2 w p pt 7, \
     f(x) w l ti sprintf("Least square fit: f(x)=a0*x+b, a0=%g",a0), \
     h(x) w l ti sprintf("Sum of differences to zero: h(x)=a1*x+b, a1=%g",a1), \
     $Data u 1:2:(0):(h($1)-$2) w vectors lc "red" nohead ti "Differences to h(x)"
### end of code
####不同的“装配”方式
重置会话

$Data可能我不完全理解您的问题。您有几个点,想要进行线性回归,但点
(0,6)
必须正好在直线上?“结果不准确”是什么意思?什么是“准确”的结果?请出示您的图表并解释您认为不正确的地方好吗?非常感谢您的回复。我在帖子中添加了一些细节。非常感谢!这正是我要找的!