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

如何在Matlab中为lsline生成的最小二乘直线添加95%置信带?

在Matlab中为散点图添加线性拟合线和95%置信带

我之前做数据分析的时候也遇到过这个问题——lsline虽然能快速加拟合线,但确实不返回任何拟合参数,没法直接构建置信带。其实不用纠结非线性的nlpredci,Matlab的统计工具箱里有更适配线性回归的工具,下面给你两种简单可行的方案:

方案一:使用fitlm(推荐,简洁直观)

fitlm是Matlab中用于线性模型拟合的高级函数,返回的模型对象自带预测和置信区间计算功能,非常适合你的需求:

步骤1:准备数据并绘制散点图

% 生成示例散点数据(你可以替换成自己的数据)
rng(1); % 固定随机种子,方便结果复现
x = linspace(0, 10, 50)';
y = 2*x + 3 + randn(50,1)*2; % 模拟带噪声的线性数据

scatter(x, y, 'filled');
hold on; % 保持画布,后续添加拟合线和置信带

步骤2:拟合线性模型并获取置信区间

% 拟合线性回归模型
mdl = fitlm(x, y);

% 计算预测值和95%置信区间
[predicted_y, ~, confidence_intervals] = predict(mdl, x);

步骤3:绘制拟合线和置信带

% 绘制线性拟合直线
plot(x, predicted_y, 'r-', 'LineWidth', 2);

% 绘制95%置信带(填充半透明区域)
fill([x; flip(x)], [confidence_intervals(:,1); flip(confidence_intervals(:,2))], ...
     'r', 'FaceAlpha', 0.1, 'EdgeColor', 'none');

% 添加图例和标签
legend('原始散点', '线性拟合线', '95%置信带', 'Location', 'best');
xlabel('X');
ylabel('Y');

hold off;

方案二:使用regress(手动计算置信区间,更灵活)

如果你习惯用基础的回归函数,regress也能实现,只是需要手动推导置信区间的计算公式:

% 准备数据
rng(1);
x = linspace(0, 10, 50)';
y = 2*x + 3 + randn(50,1)*2;
scatter(x, y, 'filled');
hold on;

% 构造设计矩阵(包含截距项)
X = [ones(length(x), 1), x];

% 执行线性回归
[b, ~, residuals, ~, stats] = regress(y, X);

% 计算拟合值
y_fit = X * b;

% 手动计算95%置信区间
n = length(y);
p = size(X, 2);
df = n - p; % 自由度
t_critical = tinv(0.975, df); % 95%置信度对应的t分布临界值
MSE = sum(residuals.^2) / df; % 均方误差

% 计算每个点的预测标准误差
X_inv = inv(X' * X);
std_error = sqrt(MSE * diag(X * X_inv * X'));

% 得到置信区间上下限
ci_low = y_fit - t_critical * std_error;
ci_high = y_fit + t_critical * std_error;

% 绘图
plot(x, y_fit, 'r-', 'LineWidth', 2);
fill([x; flip(x)], [ci_low; flip(ci_high)], 'r', 'FaceAlpha', 0.1, 'EdgeColor', 'none');

legend('原始散点', '线性拟合线', '95%置信带', 'Location', 'best');
xlabel('X');
ylabel('Y');
hold off;

两种方案都能实现类似Seaborn的置信带效果,fitlm更省心,还能直接查看模型的统计指标(比如R²、p值等);regress则适合需要自定义计算逻辑的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:47:21