一元线性回归代码

一元线性回归代码

%% 代码说明
% 该程序为一元线性回归的实现,仅供学习参考,切勿抄袭
% 输入:
%       X:为第一个变量的已知值,是一个列向量
%       Y:为第二个变量的已知值,是一个列向量
%       alpha:显著水平,不输入则默认为0.5
% 输出:
%       coef:一元线性方程的系数
%       R_square:判定系数,越接近1,拟合越好;越接近0,拟合越差
%       F:F检验值
%       F_result:检验结果,若拒绝H0,表明存在显著线性关系

%% 代码实现
function [coef, R_square, F, F_result] = UnivariateLinearRegression(X, Y, alpah)
% 判断是否输入显著水平
if nargin == 2
    alpah = 0.05;
end

% 绘制散点图
figure
scatter(X', Y')
title("散点图")

% 一些中间值
n = length(X); % 样本数
x_bar = sum(X) / n; % x的平均值
y_bar = sum(Y) / n; % x的平均值

% 求解回归系数coef
coef = zeros(1, 2);
coef(2) = (n * sum(X .* Y) - sum(X) * sum(Y)) / (n * sum(X .* X) - sum(X) * sum(X));
coef(1) = y_bar - coef(2) * x_bar;

% 绘制拟合曲线
figure
scatter(X', Y')
hold on
plot(X', coef(1) * ones(1, n) + coef(2) * X')
title("拟合曲线")

% 求解判定系数
SST = sum((y_bar * ones(n, 1) - Y) .* (y_bar * ones(n, 1) - Y));
Y_hat = coef(2) * X + coef(1);
SSR = sum((Y_hat-y_bar) .* (Y_hat-y_bar));
R_square = SSR / SST; % 判定系数

% 线性关系检验
SSE = sum((Y - Y_hat) .* (Y - Y_hat));
F = (SSR) / ((SSE) / (n - 2));
v = finv(1 - alpah, 1, n - 2);
if F > v
    F_result = "拒绝H0";
else
    F_result = "接受H0";
end

% 残差检验
E = Y - Y_hat; % 残差
figure
scatter(1:n, E');
hold on
plot(1:n, zeros(1, n), '--')
title("残差图")
end

Pearson相关系数代码

%% 代码说明
% 该程序为Pearson相关系数的实现,仅供参考学习,切勿抄袭
% 输入:
%      X:为一组已知的数据,是列向量
%      Y:为另一组已知的数据,是列向量
%      alpha:为显著水平,不输入时默认为0.5
% 输出:
%      r:为两组数据的Pearson相关系数
%      result:为结果,若"拒绝H0",则两个变量间存在显著线性关系
%% 代码实现
function [r, result] = PearsonCorr(X, Y, alpha)
if nargin == 2
    alpha = 0.5;
end
n = length(X);
r = (n * sum(X .* Y) - sum(X) * sum(Y)) / ((sqrt(n * sum(X .* X) - sum(X) * sum(X))) * (sqrt(n * sum(Y .* Y) - sum(Y) * sum(Y))));
t = abs(r) * sqrt((n - 2) / (1 - r * r));
w = tinv(1 - alpha / 2, n - 2);
if t > w
    result = "拒绝H0,接受H1";
else
    result = "接受H0,拒绝H1";
end
end
### 回答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一元线性回归的基本步骤和代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值