(MATLAB)一元线性回归和多元线性回归

(MATLAB)一元线性回归和多元线性回归

1.一元线性回归

直接看代码,目标是建立 y y y x x x的函数关系,即求 y = k x + b y=kx+b y=kx+b中的 k k k b b b k k k b b b都是实数。

% 用regress函数进行回归
x=[23.80,27.60,31.60,32.40,33.70,34.90,43.20,52.80,63.80,73.40];
y=[41.4,51.8,61.70,67.90,68.70,77.50,95.90,137.40,155.0,175.0];
figure
plot(x,y,'r*') %作散点图(制定横纵坐标)
xlabel('x')
ylabel('y')

Y=y';
X=[ones(size(x,2),1),x'];
[b,bint,r,rint,s]=regress(Y,X);
hold on
plot(x,b(1)+b(2)*x)
title("预测结果")
figure
rcoplot(r,rint)  % 残差分析

输出结果b就是系数矩阵,本题b=[-23.5493,2.791],则预测结果为y = -23.5493+2.7991x
在这里插入图片描述

预测结果与散点图如下:
在这里插入图片描述

残差分析图如下,可以看出只有一个异常点,拟合效果不错。
在这里插入图片描述

2.多元线性回归

2.1数据说明

部分data数据如下图所示:
在这里插入图片描述
导入MATLAB中,数据是一个200行4列的矩阵,此处表示有3个变量 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3,每个变量有200条数据,最后一列数据表示 y y y,多元线性回归的目标是建立 y y y x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3之间的关系,即求 k 0 , k 1 , k 2 , k 3 k_0,k_1,k_2,k_3 k0,k1,k2,k3,使得 y = k 0 + k 1 x 1 + k 2 x 2 + k 3 x 3 y=k_0+k_1x_1+k_2x_2+k_3x_3 y=k0+k1x1+k2x2+k3x3

% 多元线性回归

a = load('data.txt');

x1=a(:,[1]) ;
x2=a(:,[2]) ;
x3=a(:,[3]) ;
y=a(:,[4]);

X=[ones(length(y),1), x1,x2,x3];


[b,bint,r,rint,stats]=regress(y,X);
b
rcoplot(r,rint)

2.2程序运行结果

b的求解结果如下,所以求出 y = 2.9389 + 0.0458 x 1 + 0.1885 x 2 − 0.001 x 3 y=2.9389+0.0458x_1+0.1885x_2-0.001x_3 y=2.9389+0.0458x1+0.1885x20.001x3
在这里插入图片描述

残差分析如下:
在这里插入图片描述

  • 12
    点赞
  • 133
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: MATLAB是一种用于数学计算、数据分析、可视化和编程的高级技术计算软件。一元线性回归是最为简单的一种回归分析方法,该方法可以用来预测一个因变量与一个自变量之间的关系。 下面是MATLAB一元线性回归代码: 1.加载数据 首先,我们需要通过 load 函数来加载数据。这里我们使用 MATLAB 内置的鸢尾花数据集作为示例,代码如下: data = load('fisheriris.mat'); % 加载数据 x = data.meas(:, 1); % 自变量 - 萼片长度 y = data.meas(:, 2); % 因变量 - 萼片宽度 2.绘制散点 对于一元线性回归分析,我们通常会先绘制原始数据的散点来查看自变量与因变量之间的关系。代码如下: scatter(x, y); % 绘制散点 xlabel('萼片长度'); % 添加 x 轴标签 ylabel('萼片宽度'); % 添加 y 轴标签 3.计算回归方程 计算回归方程是一元线性回归分析的核心部分。在 MATLAB 中,我们可以使用 polyfit 函数来计算回归方程。代码如下: coeff = polyfit(x, y, 1); % 计算回归方程 - 一次多项式 m = coeff(1); % 斜率 b = coeff(2); % 截距 f = polyval(coeff, x); % 计算拟合值 4.绘制回归线 绘制回归线可以更加清晰地显示自变量与因变量之间的关系。在 MATLAB 中,我们可以使用 plot 函数来绘制回归线。代码如下: hold on; % 保留当前绘 plot(x, f, 'g'); % 绘制回归线 xlabel('萼片长度'); % 添加 x 轴标签 ylabel('萼片宽度'); % 添加 y 轴标签 5.计算相关系数 计算相关系数可以衡量自变量与因变量之间的线性关系强度,这是一元线性回归分析的另一个核心部分。在 MATLAB 中,我们可以使用 corrcoef 函数来计算相关系数。代码如下: [r, p] = corrcoef(x, y); % 计算相关系数和 p 值 r = r(1, 2); % 相关系数 p = p(1, 2); % p 值 6.显示结果 最后,我们可以用 disp 函数来显示回归方程的参数和相关系数的值。代码如下: disp(['回归方程: y = ', num2str(m), 'x + ', num2str(b)]); disp(['相关系数: r = ', num2str(r), ', p = ', num2str(p)]); 以上就是MATLAB一元线性回归代码。该代码可以很方便地进行一元线性回归分析,并实现绘制散点、计算回归方程和相关系数等功能,可以对数据进行快速、准确的分析和预测。 ### 回答2: 一元线性回归是指只有一个自变量的情况下,根据数据样本构建线性模型的方法,其中自变量与因变量之间的关系为线性关系。在MATLAB中,可以通过回归函数regress来进行一元线性回归一元线性回归的代码如下: x = [1 2 3 4 5]; % 自变量 y = [1.2 1.9 3.2 4.1 5.3]; % 因变量 X = [ones(size(x)) x']; % 构造自变量矩阵 [b,bint,r,rint,stats] = regress(y',X); % 回归函数,输出系数向量b,置信区间bint,残差向量r,残差置信区间rint和统计信息stats 其中,自变量x为一个行向量,因变量y为一个行向量,将x转置得到列向量后与全1列向量构成自变量矩阵X。然后,利用regress函数进行回归分析。函数输出五个值:系数向量b、置信区间bint、残差向量r、残差置信区间rint和统计信息stats。 系数向量b中第一个值为截距,第二个值为自变量系数。置信区间bint表示系数向量b可信的区间范围。残差向量r表示回归分析的残差,即预测值和真实值之间的差距。残差置信区间rint表示残差可信的区间范围。统计信息stats包含四个值:回归模型中解释的方差、自由度校正的解释方差、残差标准差和F检验统计值。 以上就是MATLAB一元线性回归的代码,可以利用这段代码对一元线性关系进行分析。当然,需要注意的是,在实际应用中,数据样本和具体模型都有可能会存在一定的误差和偏差,因此需要仔细评估数据和模型的质量,避免误导决策。 ### 回答3: 在MATLAB中,一元线性回归是通过拟合直线来预测一个因变量和一个自变量之间的关系。下面是MATLAB一元线性回归的代码。 步骤1:准备数据 为了执行一元线性回归,需要一些数据,包括因变量和自变量。创建两个变量来存储这些数据。 x = [1,2,3,4,5]; y = [2,4,5,4,5]; 其中x是自变量,y是因变量。x和y的值表示了它们之间的关系。 步骤2:绘制散点 在执行回归之前,可以绘制一个散点来显示自变量和因变量之间的关系。使用MATLAB的scatter函数来创建一个散点。 figure; scatter(x,y); xlabel('x'); ylabel('y'); title('Scatter Plot of x and y'); 步骤3:计算回归系数 计算回归系数是回归分析的重要步骤。为了计算回归系数,需要使用MATLAB的polyfit函数。polyfit函数估计数据的线性模型。 p = polyfit(x,y,1); slope = p(1); intercept = p(2); 其中,p(1)表示斜率,p(2)表示截距。 步骤4:绘制拟合线 使用斜率和截距来绘制拟合线。 yFit = slope * x + intercept; hold on; plot(x,yFit,'r-'); legend('Data','Linear Fit'); hold off; 步骤5:预测 现在可以使用线性模型来预测未知的值。例如,要预测一个自变量的值是6时的因变量值。 newX = 6; predictedY = slope * newX + intercept; predictedY的值表示给定自变量值时的预测因变量值。 这些就是MATLAB一元线性回归的基本步骤和代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值