我正在使用 TeXmacs 编写数学作业,使用 Maxima 作为 CAS 程序。我最近发现了如何通过 Maxima 在
gnuplot中使用
plot2d
。
f(x) = mx+b
或f(x) = a+bx
,那就太好了。 很高兴 - 不需要。r^2
值。我已阅读 https://stackoverflow.com/a/9077851/205696,它回答了如何在 gnuplot 中绘制回归线,但我不知道如何将其移植到 Maxima 中的
plot2d
函数。
我还阅读了这个解释如何使用 Maxima 计算线性回归方程的问答,但坦率地说,我的数学不够好,无法理解实际发生的事情。
我发现我可以 使用 GeoGebra 绘制线性回归,但我没有看到绘制残差图或在我提供的数据上获得
f(x) = mx+b
的方法(我可以通过观察计算 f(x) = ax+b
但它如果能得到确切的数字就好了)。
这里是一个解决方案的草图。
linear_regression
包中有一个函数 stats
完成大部分工作。
设
x
和y
为两个列表,其中包含您的数据。 linear_regression
需要一个包含两列或更多列的矩阵。要将列表一起粘贴到矩阵中,您可以说:xy: addcol(matrix(), x, y);
(还有其他方法。)
要得到一个包含系数和残差等项的对象,你可以说:
results: linear_regression(xy);
获取残差:
myresiduals: take_inference('residuals, results);
获得系数:
coeffs: take_inference('b_estimation, results);
现在有了系数,您可以构造一个函数来表示回归线:
myline: subst(['b = coeffs[1], 'm = coeffs[2]], lambda([x], m*x + b));
(一定要检查系数——我可能把它们颠倒了。也许是
coeffs[2]
然后是coeffs[1]
?你应该检查一下。)
在这一点上你有
x
,y
,residuals
,和myline
。将它们全部绘制在一起:
plot2d ([[discrete, x, y], [discrete, x, residuals], myline], ['x, lmin(x) - 1, lmax(x) + 1]);
要获取更多信息,请参阅:
? linear_regression