You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

Maxima实现线性回归、回归线绘制及残差分析

以下是针对需求的完整解决方案,所有代码可直接在Maxima中运行,适配TeXmacs的使用场景:

1. 定义你的坐标数据

首先将表格数据定义为Maxima列表,每个元素是[x, y]形式的坐标对:

data: [[1, 2], [2, 3], [3, 5], [4, 7], [5, 8]];  // 替换成你的实际数据

2. 计算线性回归参数与R²值

加载Maxima内置统计模块,直接调用函数计算回归方程参数和拟合优度R²:

load(stats);  // 加载统计工具包

// 计算线性回归系数,返回[a, b],对应回归方程 f(x) = a + b*x
reg_coeffs: linear_regression(data);
a: reg_coeffs[1];  // 截距项
b: reg_coeffs[2];  // 斜率项

// 计算相关系数r,再得到R²值
r: correlation_coefficient(data);
r_squared: r^2;

运行后,a和b就是回归方程的参数,r_squared是拟合优度值。

3. 绘制原始数据+线性回归线

利用Maxima的plot2d同时绘制离散数据点和回归线,无需手动编写gnuplot命令:

// 定义回归函数
f(x) := a + b*x;

// 自动获取数据的x范围
min_x: apply(min, map(first, data));
max_x: apply(max, map(first, data));

// 绘图:红色点是原始数据,蓝色线是回归线
plot2d(
  [[discrete, data], f(x)],
  [x, min_x - 0.5, max_x + 0.5],  // x范围扩展一点,让图更美观
  title="原始数据与线性回归线",
  pointsize=2,
  color=[red, blue],
  legend=["原始数据", "回归线"]
);

4. 绘制残差图

残差是实际y值与回归预测y值的差值,以下代码生成残差分布并绘图:

// 计算每个数据点的残差
residuals: map(lambda([p], p[2] - f(p[1])), data);
// 组合成[x, 残差]的坐标列表
residual_data: map(lambda([p, r], [p[1], r]), data, residuals);

// 绘图:绿色点是残差,黑色水平线为残差0基准线
plot2d(
  [[discrete, residual_data], 0],
  [x, min_x - 0.5, max_x + 0.5],
  title="残差图",
  pointsize=2,
  color=[green, black],
  legend=["残差", "残差基准线"],
  ylabel="残差值"
);

关键说明

  • Maxima的plot2d会自动调用gnuplot渲染图形,无需手动适配gnuplot语法,直接用Maxima的语法即可实现混合绘图。
  • 所有计算过程依赖Maxima内置的统计函数,无需手动推导回归公式,适合数学基础薄弱的场景。

内容的提问来源于stack exchange,提问作者dotnetCarpenter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 22:34:54