通过 gnuplot 在 Maxima 中绘制线性回归和残差

问题描述 投票:0回答:1

动机

我正在使用 TeXmacs 编写数学作业,使用 Maxima 作为 CAS 程序。我最近发现了如何通过 Maxima 在

gnuplot
中使用plot2d

问题

  1. 我现在需要使用一些坐标/表格数据绘制线性回归线。
  2. 如果能够从相同的数据中获得线性回归函数
    f(x) = mx+b
    f(x) = a+bx
    ,那就太好了。 很高兴 - 不需要。
  3. 我还需要从相同的数据中绘制残差图。也许得到
    r^2
    值。

研究

我已阅读 https://stackoverflow.com/a/9077851/205696,它回答了如何在 gnuplot 中绘制回归线,但我不知道如何将其移植到 Maxima 中的

plot2d 函数。

我还阅读了这个解释如何使用 Maxima 计算线性回归方程的问答,但坦率地说,我的数学不够好,无法理解实际发生的事情。

我发现我可以 使用 GeoGebra 绘制线性回归,但我没有看到绘制残差图或在我提供的数据上获得

f(x) = mx+b
的方法(我可以通过观察计算
f(x) = ax+b
但它如果能得到确切的数字就好了)。

解释性图片

TI Nspire中的数据表和线性回归线

TI Nspire中的数据表、线性回归线和残差图

统计计算 -> TI Nspire 中的线性回归。

gnuplot maxima texmacs
1个回答
0
投票

这里是一个解决方案的草图。

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

© www.soinside.com 2019 - 2024. All rights reserved.