利用Matlab进行线性回归分析(1)

2023-05-16

利用Matlab进行线性回归分析

利用 Matlab 进行线性回归分析

回归分析是处理两个及两个以上变量间线性依存关系的统计方法。可以通过软件 Matlab 实现。

1. 利用 Matlab 软件实现

在 Matlab 中,可以直接调用命令实现回归分析,

( 1 ) [b,bint,r,rint,stats]=regress(y,x) ,其中 b 是回归方程中的参数估计值, bint 是 b 的置信区间, r 和 rint 分别表示残差及残差对应的置信区间。 stats 包含三个数字,分别是相关系数, F 统计量及对应的概率 p 值。

( 2 ) recplot(r,rint) 作残差分析图。

( 3 ) rstool(x,y) 一种交互式方式的句柄命令。

例   现有多个样本的因变量和自变量的数据,下面我们利用 Matlab ,通过回归分析建立两者之间的回归方程。
%  一元回归分析
x=[1097 1284 1502 1394 1303 1555 1917 2051 2111 2286 2311 2003 2435 2625 2948 3055 3372];% 自变量序列数据
y=[698 872 988 807 738 1025 1316 1539 1561 1765 1762 1960 1902 2013 2446 2736 2825];% 因变量序列数据
X=[ones(size(x')),x'],pause 
[b,bint,r,rint,stats]=regress(y',X,0.05),pause% 调用一元回归分析函数
rcoplot(r,rint)% 画出在置信度区间下误差分布。

b =

 -479.8659
    0.9961


bint =

 -724.4248 -235.3071
    0.8836    1.1086

stats =

   1.0e+04 *

    0.0001    0.0356    0.0000    2.0095

此时可见第十二个点是异常点

 

多元回归分析

%  多元回归分析
%  输入各种自变量数据
x1=[5.5 2.5 8 3 3 2.9 8 9 4 6.5 5.5 5 6 5 3.5 8 6 4 7.5 7]';
x2=[31 55 67 50 38 71 30 56 42 73 60 44 50 39 55 70 40 50 62 59]';
x3=[10 8 12 7 8 12 12 5 8 5 11 12 6 10 10 6 11 11 9 9]';
x4=[8 6 9 16 15 17 8 10 4 16 7 12 6 4 4 14 6 8 13 11]';
% 输入因变量数据
y=[79.3 200.1 163.1 200.1 146.0 177.7 30.9 291.9 160 339.4 159.6 86.3 237.5 107.2 155 201.4 100.2 135.8 223.3 195]';
X=[ones(size(x1)),x1,x2,x3,x4];
[b,bint,r,rint,stats]=regress(y,X)% 回归分析
Q=r'*r
sigma=Q/18
rcoplot(r,rint);
b =

  191.9906
   -0.7751
    3.1718
  -19.6849
   -0.4494


bint =

  103.1866  280.7946
   -7.1474    5.5972
    2.0634    4.2802
  -25.1686  -14.2012
   -3.7276    2.8288

stats =

    0.9034   35.0555    0.0000  644.5831


Q =

   9.6687e+03


sigma =

  537.1526
% 逐步回归
 X1=[x1,x2,x3,x4];
stepwise(X1,y,[1,2,3])% 逐步回归
% X2=[ones(size(x1)),x2,x3];
% X3=[ones(size(x1)),x1,x2,x3];
% X4=[ones(size(x1)),x2,x3,x4];
% [b1,b1int,r1,r1int,stats1]=regress(y,X2)
% [b2,b2int,r2,r2int,stats2]=regress(y,X3);
% [b3,b3int,r3,r3int,stats3]=regress(y,X4);

 

多项式回归 https://wenku.baidu.com/view/e01ace031b37f111f18583d049649b6649d70960.html?fr=search-1-income5

 某建筑材料公司的销售量因素分析

下表数据是某建筑材料公司去年20个地区的销售量(Y,千方),推销开支、实际帐目数、同类商品竞争数和地区销售潜力分别是影响建筑材料销售量的因素。1)试建立回归模型,且分析哪些是主要的影响因素。2)建立最优回归模型。

地区i

推销开支(x1)

实际帐目数(x2)

同类商品竞争数(x3)

地区销售潜力(x4)

销售量
Y

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

5.5

2.5

8.0

3.0

3.0

2.9

8.0

9.0

4.0

6.5

5.5

5.0

6.0

5.0

3.5

8.0

6.0

4.0

7.5

7.0

31

55

67

50

38

71

30

56

42

73

60

44

50

39

55

70

40

50

62

59

10

8

12

7

8

12

12

5

8

5

11

12

6

10

10

6

11

11

9

9

8

6

9

16

15

17

8

10

4

16

7

12

6

4

4

14

6

8

13

11

79.3

200.1

163.2

200.1

146.0

177.7

30.9

291.9

160.0

339.4

159.6

86.3

237.5

107.2

155.0

201.4

100.2

135.8

223.3

195.0

 

 

 

 

 

 

  提示:建立一个多元线性回归模型。 

实验二:在MATLAB 里实现 ,

① 首先建立回归模型

输出:

x1=[5.5 2.5 8.0 3.0 3.0 2.9 8.0 9.0 4.0 6.5 5.5 5.0 6.0 5.0 3.5 8.0 6.0 4.0 7.5 7.0]';

x2=[31 55 67 50 38 71 30 56 42 73 60 44 50 39 55 70 40 50 62 59]';

x3=[10 8 12 7 8 12 12 5 8 5 11 12 6 10 10 6 11 11 9 9]';

x4=[8 6 9 16 15 17 8 10 4 16 7 12 6 4 4 14 6 8 13 11]';

Y=[79.3 200.1 163.2 200.1 146.0 177.7 30.9 291.9 160.0 339.4 159.6 86.3 237.5 107.2 155.0 201.4 100.2 135.8 223.3 195.0]';

X=[ones(20,1) x1 x2 x3 x4];

[b,bint,r,rint,stats]=regress(Y,X,0.05);

b,bint,stats

输出:

b =

 191.9158

 -0.7719

 3.1725

 -19.6811

 -0.4501

bint =

 103.1071 280.7245

 -7.1445 5.6007

 2.0640 4.2809

 -25.1651 -14.1972

 -3.7284 2.8283

stats =

  0.9034 35.0509 0.0000     644.6510

即  =  191.9158    = -0.7719    =  3.1725    = -19.6811    = -0.4501 ;

 的置信区间为[ 103.1071 280.7245 ] ;  的置信区间为[ -7.1445  5.6007 ];  的置信区间为[ 2.0640 4.2809 ] ;  的置信区间为[ -25.1651 -14.1972 ] ;  的置信区间为[ -3.7284  2.8283 ];

 =   0.9034 , F= 35.0509 , p= 0.0000 

因 P <0.05, 可知回归模型 y= 191.9158 -0.7719 x1+ 3.1725 *x2 -19.6811 *x3  -0.4501 *x4 成立.

② 分析哪些是主要的影响因素输入:

 x1=[5.5 2.5 8.0 3.0 3.0 2.9 8.0 9.0 4.0  6.5 5.5 5.0 6.0 5.0 3.5 8.0 6.0 4.0 7.5 7.0]';

x2=[31 55 67 50 38 71 30 56 42 73 60 44 50 39 55 70 40 50 62 59]';

x3=[10 8 12 7 8 12 12 5 8 5 11 12 6 10 10 6 11 11 9 9]';

x4=[8 6 9 16 15 17 8 10 4 16 7 12 6 4 4 14 6 8 13 11]';

Y=[79.3 200.1 163.2 200.1 146.0 177.7 30.9 291.9 160.0 339.4 159.6 86.3 237.5 107.2 155.0 201.4 100.2 135.8 223.3 195.0]';
X=[x1 x2 x3 x4];   stepwise(X,Y);

 

从表 Stepwise Table 中分析得 出变量 x 2 和 x 3为主要的影响因素。

 

③ 移去 非关键 变量 x 1 和 x 4 后模型具有显著性 .   虽然剩余标准差( RMSE )都有了变化, 统计量 F 的值明显增大,因此新的回归模型更好 . 就得到最优模型。

输入:

X1=[ones(20,1) x2 x3];

[b,bint,r,rint,stats]=regress(Y,X1);

 b,bint,stats

输出:

b =

 186.0484

 3.0907

 -19.5140

bint =

 110.4254     261.6715

 2.1657 4.0156

 -24.5597    -14.4683

stats =

0.9024 78.6295 0.0000     574.1580

P = 0.0000 <0.05,说明回归模型的回归效果显著;

最优回归方程为:y= 186.0484 + 3.0907 *x2- 19.5140 *x3

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用Matlab进行线性回归分析(1) 的相关文章

  • 在 C/C++ 中调用 MATLAB API

    我刚刚从某处听说 对于数值计算 MATLAB 确实提供了一些用户友好的 API 如果你在 C C 代码中调用这些 API 你可以显着加快计算速度 但我在MATLAB文档中没有找到这样的信息 例如http www mathworks com
  • 将组合字符串和数字输入的元胞数组写入文本文件

    考虑以下 DateTime 2007 01 01 00 00 2007 02 01 00 00 2007 03 01 00 00 Headers Datetime Data Dat 100 200 300 Data DateTime num
  • 整数的十进制表示形式中的分隔数字

    例如 我想将用户输入作为整数输入 45697 并将前两位数字存储在数组 向量或其他内容中 例如 4 5 6 9 7 这样我就可以使用一些函数调用来检查前两个值 4 5 并对它们进行计算 问题 我不知道如何存储恢复前两个值 有没有简单的函数调
  • MATLAB 图中轴标签与轴之间的距离

    我正在使用 MATLAB 绘制一些数据 我想调整轴标签与轴本身之间的距离 但是 只需向标签的 位置 属性添加一点即可使标签移出图窗窗口 是否有 保证金 属性或类似的东西 在上图中 我想增加数字和标签 Time s 之间的距离 同时自动扩展数
  • 如何在Matlab中将世界坐标转换为像素索引

    我有 512x512x313 体积的 dicom 图像 并且我有一个以世界坐标表示的点 57 7475 63 4184 83 1515 我如何在 Matlab 中获得该世界坐标的相应像素坐标 我不想戳破你的幻想 但你所要求的是不可能的 我能
  • 检查图像中是否有太薄的区域

    我正在尝试验证雕刻机的黑白图像 更多的是剪贴画图像 不是照片 我需要考虑的主要事情之一是区域的大小 或线条的宽度 因为机器无法处理太细的线条 所以我需要找到比给定阈值更细的区域 以此图为例 竖琴的琴弦可能太细而无法雕刻 我正在阅读有关 Ma
  • 将数据提示堆栈放在轴标签顶部,并在轴位置发生更改后更新轴标签

    此问题仅适用于 unix matlab Windows 用户将无法重现该问题 我在尝试创建位于 y 轴标签顶部的数据提示时遇到问题 下图很能说明问题 正如您所看到的 在 ylabel 附近创建的数据提示将到达 ylabel 文本的底部 而期
  • 动态调整自定义刻度数

    Taking SO 的一个例子 https stackoverflow com a 7139485 97160 我想根据当前视图调整轴刻度 这是默认行为 除非设置自定义的刻度数 下图展示了由此产生的行为 左侧是默认行为 右侧是带有自定义刻度
  • 如何为已编译的 MATLAB 创建安装程序并要求用户接受我们的许可条款?

    我正在 MATLAB 中编写程序分发给 Windows 用户 我使用 MATLAB 编译器和 MATLAB r2014a 版本来创建程序 我可以使用 MATLAB 应用程序编译器创建 Windows 安装程序 并且它的工作效果可以接受 但是
  • 如何在Matlab中绘制网络?

    我有一个矩阵AMatlab中的维数mx2每行包含两个节点的标签 显示网络中的直接链接 例如 如果网络有4矩阵的节点A可能A 1 2 1 3 2 1 2 4 3 2 4 1 4 2 其中第一行表示有一个链接来自1 to 2 第二行表示有一个链
  • 从 MATLAB 调用 Java?

    我想要Matlab程序调用java文件 最好有一个例子 需要考虑三种情况 Java 内置库 也就是说 任何描述的here http docs oracle com javase 6 docs api 这些项目可以直接调用 例如 map ja
  • 我如何编写一个名为 dedbi 的 MATLAB 函数,它将输入 xtx 作为字符串并返回另一个字符串 xtxx 作为输出。

    dedbi 反转单词 即 a 将被 z 替换 b 将被 y 替换 c 将被 x 替换 依此类推 dedbi 将对大写字母执行相同的操作 即将字符串 A 替换为 Z 将 B 替换为 Y 将 C 替换为 X 依此类推 如果我给函数这个字符串 a
  • 获取向量幂的有效方法

    我编写了一个代码 在数值上使用勒让德多项式直至某个高 n 阶 例如 case 8 p 6435 x 8 12012 x 6 6930 x 4 1260 x 2 35 128 return case 9 如果向量x太长这会变得很慢 我发现说之
  • Matlab:3D 堆积条形图

    我正在尝试创建一个 3D 堆积条形图 如这个问题所示 Matlab 中的 3D 堆叠条形图 https stackoverflow com questions 13156133 3d stacked bars in matlab 5D 然而
  • 将 Matlab 数组移植到 C/C++

    我正在将 matlab 程序移植到 C C 我有几个问题 但最重要的问题之一是 Matlab 将任何维度的数组都视为相同 假设我们有一个这样的函数 function result f A B C result A 2 B C A B and
  • 如何将数据传递给 MATLAB oncleanup 函数?

    我有一个编译好的 matlab 程序 可以自动调整机器参数 在调整周期结束时 我需要恢复一些原始设置 有时会发生意外错误 有时用户会发现调整算法未正常工作 因此应终止 使用 control C 如果发生可预测的错误 我可以使用 try ca
  • 通过多次合并相同的行向量来构建矩阵

    有没有一个matlab函数可以让我执行以下操作 x 1 2 2 3 然后基于x我想建立矩阵m 1 2 2 3 1 2 2 3 1 2 2 3 1 2 2 3 您正在寻找REPMAT http www mathworks com help t
  • 在 MATLAB 中绘图后恢复轴

    从文本文件绘制多种方法的输出后 未显示轴的右侧和上侧 我需要拥有它们并将它们加粗 就像当前的轴一样 绘制的数据来自存储每种方法数据的文件 每个数据文件都是一个 256x2 文件 包含 0 1 之间的值 第一列是精度 第二列是召回率 figu
  • 通过 cuFFT 进行逆 FFT 缩放

    每当我使用 cuFFT 绘制程序获得的值并将结果与 Matlab 的结果进行比较时 我都会得到相同形状的图形 并且最大值和最小值位于相同的点 然而 cuFFT 得到的值比 Matlab 得到的值大得多 Matlab代码是 fs 1000 s
  • 如何选择面积最大的对象?

    我用过bwconvhull检测图像的某个部分 正如您在图像中看到的那样 有许多具有特定质心的对象 我想做的是检测面积最大的物体 左起第一个大物体 并忽略其他物体 我应该遵循哪种方法 我将非常感谢您的帮助 以下是代码 由于我仍在努力 所以写得

随机推荐