MATLAB初学者入门(9)—— 线性回归

线性回归是一种统计方法,用于建立一个或多个自变量(解释变量)和因变量之间的关系模型。在MATLAB中,可以使用多种方法来实现线性回归,包括使用内置函数如fitlmregress或直接使用矩阵运算来求解。以下是一些详细的案例分析,演示如何在MATLAB中实现线性回归来分析和预测数据。

案例分析:房价预测模型

假设我们有一组房地产市场的数据,包括房屋的大小(平方英尺)、卧室数量和房屋价格。我们希望建立一个模型来预测基于房屋大小和卧室数量的房价。

步骤 1: 收集和准备数据

我们首先定义一组示例数据,这些数据代表了房屋大小、卧室数量和相应的市场价格。

Matlab 复制代码
% 示例数据
houseSize = [1400; 1600; 1700; 1875; 1100; 1550; 2350; 2450; 1425; 1700]; % 房屋大小(平方英尺)
bedrooms = [3; 3; 3; 2; 2; 4; 3; 4; 3; 3]; % 卧室数量
prices = [400000; 430000; 442000; 475000; 390000; 460000; 555000; 610000; 410000; 445000]; % 房屋价格
步骤 2: 数据预处理

为了改善模型的性能,进行特征缩放通常是个不错的做法。这里我们将所有特征标准化。

Matlab 复制代码
% 特征标准化
houseSize = (houseSize - mean(houseSize)) / std(houseSize);
bedrooms = (bedrooms - mean(bedrooms)) / std(bedrooms);
步骤 3: 执行线性回归

使用MATLAB的fitlm函数来进行线性回归。

Matlab 复制代码
% 创建线性回归模型
tbl = table(houseSize, bedrooms, prices, 'VariableNames', {'Size', 'Bedrooms', 'Price'});
model = fitlm(tbl, 'Price ~ Size + Bedrooms');

% 显示模型的统计摘要
disp(model);
步骤 4: 模型评估

利用模型进行预测,并评估其性能。

Matlab 复制代码
% 预测价格
predictedPrices = predict(model, tbl);

% 计算预测准确性
figure;
plot(prices, predictedPrices, 'ko');
hold on;
plot(prices, prices, 'b-');
xlabel('Actual Prices');
ylabel('Predicted Prices');
legend('Predicted vs Actual', 'Perfect Fit');
title('Linear Regression Results');
步骤 5: 结果分析

分析线性回归模型的输出,了解哪些变量对房价有显著影响。

Matlab 复制代码
disp('Coefficients:');
disp(model.Coefficients);

案例分析:体重与身高的线性关系

假设我们有一组包含个人身高和体重的数据,我们希望通过线性回归分析这两个变量之间的关系。

步骤 1: 收集和准备数据

首先,我们定义一组示例数据,这些数据代表了个人的身高(厘米)和体重(千克)。

Matlab 复制代码
% 示例数据
heights = [170; 172; 168; 164; 158; 160; 166; 171; 175; 182]; % 身高(厘米)
weights = [65; 67; 66; 64; 56; 59; 62; 68; 72; 77]; % 体重(千克)
步骤 2: 数据可视化

在建立模型之前,通常是可视化数据,以便于理解变量之间的关系。

Matlab 复制代码
figure;
scatter(heights, weights, 'filled')
xlabel('Height (cm)');
ylabel('Weight (kg)');
title('Scatter Plot of Height vs Weight');
grid on;
步骤 3: 执行线性回归

我们使用fitlm来构建一个线性模型,这里heights作为自变量,weights作为因变量。

Matlab 复制代码
% 创建数据表
tbl = table(heights, weights, 'VariableNames', {'Height', 'Weight'});

% 执行线性回归
model = fitlm(tbl, 'Weight ~ Height');

% 显示模型统计摘要
disp(model);
步骤 4: 模型评估和预测

利用模型进行预测,并评估其性能。

Matlab 复制代码
% 预测体重
predictedWeights = predict(model, tbl);

% 绘制实际值与预测值
figure;
plot(weights, predictedWeights, 'ko');
hold on;
plot(weights, weights, 'b-'); % 完美拟合线
xlabel('Actual Weight (kg)');
ylabel('Predicted Weight (kg)');
legend('Predicted vs. Actual', 'Line of Perfect Fit');
title('Linear Regression Results');
步骤 5: 结果分析

评估模型的拟合优度和回归系数,了解身高变化对体重的影响。

Matlab 复制代码
disp('Coefficients:');
disp(model.Coefficients);

案例分析:全球气温变化与冰川融化速率

假设我们有一组数据,包括过去几十年全球平均气温和冰川每年的融化速率。我们希望通过线性回归分析这两个变量之间的关系,以预测在未来不同气温情景下冰川的融化情况。

步骤 1: 收集和准备数据

首先,定义示例数据,这些数据代表了过去几十年的全球平均气温和冰川融化速率。

Matlab 复制代码
% 示例数据
years = [1980, 1990, 2000, 2010, 2020];
globalTemps = [0.3, 0.5, 0.6, 0.9, 1.2]; % 全球平均气温偏差(摄氏度)
glacierMeltRates = [5, 7, 10, 15, 20]; % 冰川每年融化速率(米)
步骤 2: 数据可视化

进行数据可视化,以便于理解变量之间的关系。

Matlab 复制代码
figure;
scatter(globalTemps, glacierMeltRates, 'filled')
xlabel('Global Temperature Change (°C)');
ylabel('Glacier Melt Rate (m/year)');
title('Scatter Plot of Temperature Change vs Glacier Melt Rate');
grid on;
步骤 3: 执行线性回归

使用fitlm函数构建一个线性模型,这里globalTemps作为自变量,glacierMeltRates作为因变量。

Matlab 复制代码
% 创建数据表
tbl = table(globalTemps', glacierMeltRates', 'VariableNames', {'Temp', 'MeltRate'});

% 执行线性回归
model = fitlm(tbl, 'MeltRate ~ Temp');

% 显示模型统计摘要
disp(model);
步骤 4: 模型评估和预测

利用模型进行预测,并评估其性能。

Matlab 复制代码
% 预测冰川融化速率
predictedMeltRates = predict(model, tbl);

% 绘制实际值与预测值
figure;
plot(glacierMeltRates, predictedMeltRates, 'ko');
hold on;
plot(glacierMeltRates, glacierMeltRates, 'b-'); % 完美拟合线
xlabel('Actual Melt Rate (m/year)');
ylabel('Predicted Melt Rate (m/year)');
legend('Predicted vs. Actual', 'Line of Perfect Fit');
title('Linear Regression Results');
步骤 5: 结果分析

分析模型的拟合优度和回归系数,了解气温变化对冰川融化速率的影响。

Matlab 复制代码
disp('Coefficients:');
disp(model.Coefficients);

结论

(1)建立了一个线性回归模型,能够基于房屋的大小和卧室数量来预测房价。该模型的参数(即斜率和截距)提供了对每个特征如何影响房价的直观理解。此案例展示了如何在MATLAB中使用线性回归来分析和预测实际问题,是金融分析、市场研究等领域的常用工具。

(2)建立了一个线性回归模型来探索身高与体重之间的关系。该模型的参数提供了对每单位身高变化对体重的预测增加量的估计。这个案例显示了线性回归如何帮助我们理解和预测生物统计学中变量之间的关系。这种方法不仅适用于此类生物度量数据,也可广泛应用于其他科学和医疗领域,如药物剂量响应、疾病风险评估等,从而为研究提供量化的分析工具。

(3)展示了如何使用线性回归来分析全球气温变化对冰川融化速率的影响。通过构建线性模型,我们能够预测未来气温升高情景下的冰川融化速率,这对于气候变化研究和环境政策制定具有重要意义。线性回归为我们提供了一种量化环境影响的有效工具,使科学家能够基于统计数据做出更准确的预测和建议。

相关推荐
FuLLovers27 分钟前
2024-09-13 冯诺依曼体系结构 OS管理 进程
linux·开发语言
everyStudy1 小时前
JS中判断字符串中是否包含指定字符
开发语言·前端·javascript
luthane1 小时前
python 实现average mean平均数算法
开发语言·python·算法
静心问道1 小时前
WGAN算法
深度学习·算法·机器学习
凡人的AI工具箱2 小时前
AI教你学Python 第11天 : 局部变量与全局变量
开发语言·人工智能·后端·python
sleP4o2 小时前
Python操作MySQL
开发语言·python·mysql
是店小二呀2 小时前
【C++】C++ STL探索:Priority Queue与仿函数的深入解析
开发语言·c++·后端
杰九2 小时前
【算法题】46. 全排列-力扣(LeetCode)
算法·leetcode·深度优先·剪枝
洛寒瑜2 小时前
【读书笔记-《30天自制操作系统》-23】Day24
开发语言·汇编·笔记·操作系统·应用程序
ephemerals__2 小时前
【c++】动态内存管理
开发语言·c++