matlab中多元线性回归regress函数精确剖析(附实例代码)

目录

前言

一、何为regress?

二、regress函数中的参数

三、实例分析

总结


前言

regress函数功能十分强大,它可以用来做多元线性回归分析,它不仅能得出线性回归函数中各个系数,还会返回一系列有意义的统计参数,有助于我们对回归函数的分析。本次介绍regress函数的基本功能然后配置以具体实例展示regress函数如何使用。

提示:以下是本篇文章正文内容,均为作者本人原创,写文章实属不易,希望各位在转载时附上本文链接。

一、何为regress?

regress函数用来做多元线性回归(Multiple linear regression)。简单点说,就比如说现在给了几组关于y、x1、x2数据,他们之间满足某种关系例如,我们就可以用这个函数借助已知数据求出a、b、c、d的值。

二、regress函数中的参数

regress函数的使用格式如下:

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

b------ returns a vector b of coefficient estimates for a multiple linear regression of the responses in vector y on the predictors in matrix x. The matrix x must include a column of ones. b是一个列向量返回的是在xy这组数据下得到的多元线性回归的系数估计向量b,矩阵x必须包含一列1。至于x为什么需要包含一列1见下面对x的分析

bint------returns a matrix bint of 95% confidence intervals for the coefficient estimates. 返回系数估计值的95%置信区间的矩阵绑定。bint是一个多行两列的矩阵,返回系数估计值的95%置信区间。对于置信区间的理解简单点说就是可信度,学过概率论就会明白何为置信区间。bint的每一行有两个值,可看成一个区间的上下界,它的每一行这个区间就是参数b中每一行的那个参数的95%的置信区间。

r------returns an additional vector r of residuals. r是residual的简写,就是残差的意思。r返回一个列向量,r中的每一个值就是真实的数据y减去预测的y值得到的,称之为残差。

rint------returns a matrix rint of intervals that can be used to diagnose outliers. 返回的也是一个多行两列的矩阵,它的理解可同bint,只不过此时判断的是r的可信区间。

stats------returns a vector stats that contains the  statistic, the F-statistic and its p-value, and an estimate of the error variance. stats翻译成中文就是‘统计’的意思,返回的是一个包含各种统计量的行向量,包含统计量、F统计量观测值及检验的p值和误差方差估计值的一个行向量。越接近1,回归方程越显著;时拒绝,F越大,回归方程越显著;时拒绝。此处又涉及到概率论的假设检验的知识,学过概率论就会有所了解。这里我们可以只重点关注的值,也就是相关系数的值,它可以帮助我们判断回归方程的优劣。

y------是一个列向量,是已知数据。

x------是一个矩阵,它的第一列全为1,有没有全为1的这一列决定回归方程是否含有拟合的常数参数,也就是中的d这个参数是否有被拟合出来。在程序中对应于全1的那一列一般表示为:ones(size(y)) ,其中x1和x2是多元线性回归方程中的自变量,是已知数据。如下:

x=[ones(size(y)),x1,x2];

alpha------显著性水平,缺省时默认为0.05。

三、实例分析

这里我们拟合一个方程,Q,K,L是已知数据,K,L视为自变量,Q视为因变量,需要求得是a,的值。显然它不是一个线性方程,那么我们就对它两边同时取对数,得到:,此时将LnQ看成一个整体,作为因变量,LnK和LnL看成两个整体,作为自变量,那么就变成线性方程了。

实例用到的程序如下:

Q=[1.05 1.18 1.29 1.30 1.30 1.42 1.50 1.52 1.46 1.60 1.69 1.81 1.93 1.95 2.01 2.00 2.09 1.96 2.20 2.12 2.16 2.08 2.24 2.56 2.34 2.45 2.58]';
y=log(Q);
K=[1.04 1.06 1.16 1.22 1.27 1.37 1.44 1.53 1.57 2.05 2.51 2.63 2.74 2.82 3.24 3.24 3.61 4.10 4.36 4.77 4.75 4.54 4.54 4.58 4.58 4.58 4.54]';
x1=log(K);
L=[1.05 1.08 1.18 1.22 1.17 1.30 1.39 1.47 1.31 1.43 1.58 1.59 1.66 1.68 1.65 1.62 1.86 1.93 1.96 1.95 1.90 1.58 1.67 1.82 1.60 1.61 1.64]';
x2=log(L);
x=[ones(size(y)),x1,x2];
[b,bint,r,rint,stats] = regress(y,x);
a=exp(b(1));alpha=b(2);beta=b(3);
R=stats(1);
% % %Plot the data and the model.% % %
scatter3(x1,x2,y,'filled'); %scatter3函数用于画三维散点图
hold on;
x1fit = min(x1):0.05:max(x1);
x2fit = min(x2):0.05:max(x2);
[X1FIT,X2FIT] = meshgrid(x1fit,x2fit);%meshgrid用于画曲面图
YFIT = b(1) + b(2)*X1FIT + b(3)*X2FIT ;
mesh(X1FIT,X2FIT,YFIT);
title("LnQ=Lna+\alphaLnK+\betaLnL");
xlabel('LnK');
ylabel('LnL');
zlabel('LnQ');
view(50,10);
hold off;
% % %Plot the data and the model.% % %
figure(2);
x1=exp(x1);
x2=exp(x2);
y=exp(y);
scatter3(x1,x2,y,'filled');
hold on;
x1fit = min(x1):0.05:max(x1);
x2fit = min(x2):0.05:max(x2);
[X1FIT,X2FIT] = meshgrid(x1fit,x2fit);
YFIT = a*(X1FIT.^alpha).*(X2FIT.^beta);
mesh(X1FIT,X2FIT,YFIT);
title("Q=aK^{\alpha}L^{\beta}");
xlabel('K');
ylabel('L');
zlabel('Q');
view(50,20);%view函数用于调整我们看三维图形的视角
hold off;

运行完程序regress函数就会返回给我们各种参数的值。例如向量b

这三个值分别是Lna、的值。

再如矩阵bint:

每一行的两个数就是前面b向量的置信区间,也就是上面三行分别为Lna、的95%的置信区间。

再如列向量r

每一行的数值等于真实的数据LnQ减去拟合的数据LnQ,称之为残差。

再如矩阵rint:

每一行的两个数视为一个区间,理解为与其相对应的残差的可信区间。

再如行向量stats:

只需关注的值即可,越接近于1越好。

运行完程序还会得到两个图,帮助我们直观的感受到拟合的效果,两个图本质上是一样的,区别一个取了对数,一个没取对数,具体情况见下面图当中的title。

上面的实例拟合的均只含有自变量的一次项,那如果含有二次项在程序中应该怎么写了,例如,只需修改X即可,具体参考下面:

x=[ones(size(y)),x1.^2,x2.^2,x1.*x2,x1,x2];
[b,bint,r,rint,stats] = regress(y,x);

总结

以上就是本次要分享的内容,本文详细介绍了regress函数的使用,学会了就赶紧动起手来实操吧。

matlab中多元线性回归regress函数精确剖析(附实例代码)相关推荐

  1. 线性回归用matlab怎么做,matlab中如何应用regress()函数进行线性回归分析?

    matlab中如何应用regress()函数进行线性回归分析?回归分析是研究一个随机变量与一个或多个普通变量之间的相关系的统计方法.如果做回归分析,有很多软件都已经封装好了的,我们只需直接调用就可以了 ...

  2. 用matlab拟合多元函,MatLab中多元拟合的函数是什么?

    共回答了17个问题采纳率:100% 已知x1={104020 104040 102900 103310 95855 98998 104174 99824 97708 100133 96785} x2= ...

  3. 【经典案例】 | 多元线性回归模型预测房价(附Python代码与数据)

  4. 在安卓中压缩GIF的几种方法(附实例代码)

    前言 最近在划水摸鱼的时候,看到有位大佬发了一篇 GIF 压缩思路的文章. 让我突然想起来,很久以前我在我的项目 隐云图解制作 中就实现了一个动图工具箱,其中一个功能就是压缩GIF. 不过这位大佬只介 ...

  5. 【Matlab】多元线性回归

    多元线性回归 一元线性回归 绘图 求参 多元线性回归 regress函数 matlab 文档非常有用 一元线性回归 一个旧东西随着时间价格也在变动,数据如下: 1 2 3 4 5 6 7 8 9 10 ...

  6. 怎样在matlab中写技术,rect矩形函数 matlab中怎样编写矩形函数

    矩形函数的定义: 矩形函数 rect(t); 如果绝对值 |t| > 0.5 rect(t) = 0; 如果绝对值 |t| = 0.5 rect(t) = 0.5; 如果绝对值 |t| < ...

  7. 多元线性回归分析matlab实验报告,利用MATLAB进行多元线性回归.ppt

    <利用MATLAB进行多元线性回归.ppt>由会员分享,可在线阅读,更多相关<利用MATLAB进行多元线性回归.ppt(15页珍藏版)>请在人人文库网上搜索. 1.2.线性回归 ...

  8. matlab 线性回归 参数显著性,matlab建立多元线性回归模型并进行显著性检验及预测问题...

    matlab建立多元线性回归模型并进行显著性检验及预测问题 例子; x=[143 145 146 147 149 150 153 154 155 156 157 158 159 160 162 164 ...

  9. 怎么用matlab做多元线性回归方程,利用MATLAB进行多元线性回归

    <利用MATLAB进行多元线性回归>由会员分享,可在线阅读,更多相关<利用MATLAB进行多元线性回归(15页珍藏版)>请在人人文库网上搜索. 1.2.线性回归,b=regre ...

最新文章

  1. MySQL:数据操作
  2. 《Ajax基础教程》一书推荐的JS工具备忘
  3. 【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | VS 自带的 Android 平台应用创建与配置 )
  4. Shiro框架:授权流程、授权方式、Shiro授权入门程序、自定义Realm进行授权
  5. 《Programming WPF》学习(二)Application及其设置
  6. [css] 使用css画出一个五角星
  7. 苹果支付:如何解决沙盒环境下获取可恢复购买项为空
  8. JdbcTemplate使用小结
  9. [转]每秒处理10万订单乐视集团支付架构
  10. 关于Dijkstra最短路径算法
  11. 过年最大的烦恼是什么?
  12. 了解 node.js
  13. Swift3 中文手册.CHM版
  14. 【SORT系列】SIMPLE ONLINE AND REALTIME TRACKING
  15. Java List 集合取 交集、并集、差集、补集 Java集合取交集、Java集合并集
  16. linux 安全删除文件_如何在Linux上安全删除文件
  17. 股票、基金、场内ETF基金下载数据代码例子
  18. 中文版-神羔羊配得(worthy is the lamb)MV
  19. PS长图快速切片_如何解决PS选择主体崩溃问题
  20. i3 10110u 怎么样 相当于什么水平

热门文章

  1. 淘宝教育视频加速观看(在淘宝教育上看学习视频,需要加速,在谷歌浏览器上安装视频加速插件)
  2. 域名过期 脚本_域名宝已过期! …还是垃圾?
  3. 将Windows驱动程序从一台计算机复制到另一台计算机
  4. 游戏开发设计模式:命令模式
  5. 大类资产配置的基本方法
  6. 高版本手机获取anr日志文件命令
  7. 项管:沟通管理和干系人管理
  8. C++先序和中序确定二叉树
  9. 二叉树的遍历 中序线索二叉树
  10. 上面两点下面一个三角形_章勤琼:三角形内角和180该如何说明 ——小学数学中的合情推理和演绎推理...