MATLAB中文论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1870|回复: 22|关注: 0

[已解决] 线性回归参数含义的理解问题??

[复制链接]

新手

20 麦片

财富积分


050


49

主题

117

帖子

0

最佳答案
本帖最后由 qiuhuizuo 于 2017-5-30 16:02 编辑

用matlab做线性回归
  • B,BINT,R,RINT,STATS] = regress(Y,X)
后会返回如下结果:
B:回归系数,是个向量(“the vector B of regression coefficients in the  linear model Y = X*B”)。
BINT:回归系数的区间估计(“a matrix BINT of 95% confidence intervals for B”)。
R:残差( “a vector R of residuals”)。
RINT:置信区间(“a matrix RINT of intervals that can be used to diagnose outliers”)。
STATS:用于检验回归模型的统计量。有4个数值:判定系数R^2,F统计量观测值,检验的p的值,误差方差的估计。
ALPHA:显著性水平(缺少时为默认值0.05)。

我对一元线性回归的理解:
根据观测样本反推出一元函数y=a+bx+ω。使ω最小时 a 和b 分别是多少?通俗的说就是求出一个一元函数y=a+bx。使所有观测样本到这条线的方差最小。

我的困惑:
如果我上述理解没错,那么问题
1、回归系数B应该是个确定的唯一值,为什么会是一个向量呢?
2、回归系数既然是确定的唯一值,那么“回归系数的区间估计”就不存在了?我应该如何理解“回归系数的区间估计”的含义呢?最好能有形象一点的解释。
3、为什么要用残差,而不用标准差或方差来评价样本数据与回归出来的函数线的离散程度呢?
4、“RINT:置信区间”是指95%的样本数据落在回归得出的函数线附近的范围么?他的表达是否是截距a的取值范围?
5、STATS:用于检验回归模型的统计量。有4个数值:判定系数R^2,F统计量观测值,检验的p的值,误差方差的估计。---------还是那个老问题,为什么不用标准差来评估回归的质量呢?而要用到这么多参数?用这么多参数的必要性和好处是什么?
6、显著性水平--------------能通俗易懂的解释一下什么叫显著水平么?

新手

20 麦片

财富积分


050


49

主题

117

帖子

0

最佳答案
 楼主| 发表于 2017-5-30 13:37:12 | 显示全部楼层
有人知道答案么?

论坛优秀回答者

权威

5731 麦片

财富积分



5

主题

7073

帖子

1313

最佳答案
  • 关注者: 282
发表于 2017-5-30 15:19:56 | 显示全部楼层
本帖最后由 jingzhaos 于 2017-5-30 15:21 编辑

1 你的自变量是几个?B怎么会是一个值呢?即便自变量是一个B也包含常数项,是两个数,是你说的a,b ,当然就是向量了
2 既然实验结果是随机的,不同的实验结果,就可能得到不同的B,所以B不应该是常量,也是随机的,因此有区间估计
其他问题还是看看数理统计的书吧。这不是几行字能说明白的。

新手

20 麦片

财富积分


050


49

主题

117

帖子

0

最佳答案
 楼主| 发表于 2017-5-30 15:58:39 | 显示全部楼层
针对你的追问我做如下补充。希望可以使你知道我的问题点在哪里:)
x=[15.2,10.4,21.2,18.6,26.4,23.4,13.5,16.7,24,19.1];
y=[28.6,19.3,40.5,35.6,48.9,45,29.2,34.1,46.7,37.4];
[B,BINT,R,RINT,STATS] = regress(x',y');
运行结果如下:
Warning: R-square and the F statistic are not well-defined unless X has a column of ones.
Type "help regress" for more information.
> In regress (line 164)


B =

    0.5173


BINT =

    0.5028    0.5318


R =

    0.4048
    0.4158
    0.2488
    0.1836
    1.1034
    0.1209
   -1.6056
   -0.9404
   -0.1585
   -0.2475


RINT =

   -1.3715    2.1812
   -1.3893    2.2210
   -1.4894    1.9869
   -1.5860    1.9532
   -0.3349    2.5416
   -1.5990    1.8408
   -2.8474   -0.3637
   -2.5503    0.6695
   -1.8652    1.5482
   -2.0028    1.5077


STATS =

    0.9771       NaN       NaN    0.5792%%%%%%%%%%%下面开始绘图%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
p=polyfit(x,y,1);%一次拟合;
yfit=polyval(p,x);%求拟合后的y值;
plot(x,y,'r*',x,yfit,'b-');%画图;
%%%%%%%%%%%%绘图结果请看贴图%%%%%%%%%%%%
关于你的追问
1 你的自变量是几个?  10个
   B怎么会是一个值呢? 既然拟合出一条直线,B是回归系数--即:直线的斜率。那么B应该只有一个。所以我无法理解BINT:回归系数的区间估计。这暗示B的值不唯一,而是在一个区间内。B为什么会在一个区间内取值呢?实际输出结果B就是一个唯一的数“ 0.5173”这个跟我的想法一样。但是后面的BINT =0.5028    0.5318  我就无法理解了。这也是我最困惑的地方。
   即便自变量是一个B也包含常数项,是两个数,是你说的a,b ,当然就是向量了。我原帖当中的a是截距,b是斜率(回归系数),对应的是输出结果B=0.5173。a和b完全不相关,不是一回事。“是两个数,是你说的a,b ,当然就是向量了”,你这句话我应该怎么理解?

2 既然实验结果是随机的,不同的实验结果,就可能得到不同的B,所以B不应该是常量,也是随机的,因此有区间估计
   问题是我输入的实验数据是确定的数据,而不是随机数据。目前的回归分析是基于确定的数据做回归。如果我增加了新的实验数据会得到不同的B,这我可以理解。不过实验数据不变的情况下,为什么B会存在一个区间范围即BINT=0.5028    0.5318 。这是我比较困惑的。


   以上红色字体是我的追问,还望老师不吝赐教。
  
   


拟合图.jpg

论坛优秀回答者

权威

5731 麦片

财富积分



5

主题

7073

帖子

1313

最佳答案
  • 关注者: 282
发表于 2017-5-30 16:18:05 | 显示全部楼层 |此回复为最佳答案
本帖最后由 jingzhaos 于 2017-5-30 16:40 编辑
qiuhuizuo 发表于 2017-5-30 15:58
针对你的追问我做如下补充。希望可以使你知道我的问题点在哪里
x=[15.2,10.4,21.2,18.6,26.4,23.4,13.5,1 ...

regress默认情况下是不包括常数项的。想包括常数项,应该
regress(y',[ones(size(x'),x']);
注意是y在前面

a是截距,b是斜率。B=[a,b],是两个数。

论坛优秀回答者

权威

5731 麦片

财富积分



5

主题

7073

帖子

1313

最佳答案
  • 关注者: 282
发表于 2017-5-30 16:31:58 | 显示全部楼层
本帖最后由 jingzhaos 于 2017-5-30 16:33 编辑
qiuhuizuo 发表于 2017-5-30 15:58
针对你的追问我做如下补充。希望可以使你知道我的问题点在哪里
x=[15.2,10.4,21.2,18.6,26.4,23.4,13.5,1 ...

你可以想一个简单的例子。抽10个人,算平均身高,比如1.69,用这个数估计全班人的平均身高,虽然是一个数,但这个数会随抽的人不同而不同,是有误差的,但误差也不会太大,可以认为实际平均身高有95%的可能1.65~1.73之间,这就是区间估计,95%称为置信度,5%就可以理解为显著性水平。

论坛优秀回答者

15

主题

1615

帖子

95

最佳答案
  • 关注者: 117
发表于 2017-5-30 16:41:26 | 显示全部楼层
qiuhuizuo 发表于 2017-5-30 15:58
针对你的追问我做如下补充。希望可以使你知道我的问题点在哪里
x=[15.2,10.4,21.2,18.6,26.4,23.4,13.5,1 ...

1)对于regress这一命令,X称为结构阵(又称设计阵),还应包括全是1的一列,X=[ones(n,1), x], or 还可能是多变数线性回归:X=[ones(n,1),x1,x2,...,xm], or 多元广义线性回归,X=[ones(n,1),x1,x2,...,x1.*x2...,x1.^2...]
因此,b就是一个向量;
2)得到一组数据,它们是确定的,回归结果b(也包括其它统计数)也是唯一的。但这些统计数是有误差的,这是指在同等条件下,再抽取一个样本(类似于在同等条件下重新做一个同样的试验),所得到的数据会有误差,回归结果b等也会有误差,这个误差就包含在这组数据的误差信息中,利用这组数据所包含的误差可推论由此导出的统计数的误差(这是统计学的一项伟大成果);
3)stats中的结果有4个,主要是为了应对不同文章中对这些基本统计数的要求,你可以选择使用。一般而言,用MSe(误差方差)最小作为标准是最为合理的(MSe=SSe/dfe),这意指用最少的效应项得到最大程度的拟合.
与jingzhaos类似,更推荐去看一本基础统计书的一元和多元回归这两节。

论坛优秀回答者

权威

5731 麦片

财富积分



5

主题

7073

帖子

1313

最佳答案
  • 关注者: 282
发表于 2017-5-30 16:42:44 | 显示全部楼层
qiuhuizuo 发表于 2017-5-30 15:58
针对你的追问我做如下补充。希望可以使你知道我的问题点在哪里
x=[15.2,10.4,21.2,18.6,26.4,23.4,13.5,1 ...

我输入的实验数据是确定的数据,而不是随机数据

如果 你再做一次实验,同样的x,得到的y还是这个数值吗?所以是随机的

新手

20 麦片

财富积分


050


49

主题

117

帖子

0

最佳答案
 楼主| 发表于 2017-5-30 16:45:23 | 显示全部楼层
jingzhaos 发表于 2017-5-30 16:31
你可以想一个简单的例子。抽10个人,算平均身高,比如1.69,用这个数估计全班人的平均身高,虽然是一个数 ...

你举得这个例子我是可以明白的。但是如果问题收敛一下。我们不讨论全班的情况,只讨论这是个人的情况。那么是否还有B的取值区间的问题呢?在我提供的例子当中。我只给了电脑10组数据,电脑也并不清楚10组数据还有多少数据。matlab就不应该给出一个BINT值啊。而且matlab给这个值是用什么方法计算出来的呢(即:我手工计算的话应该怎么算呢?)

论坛优秀回答者

权威

5731 麦片

财富积分



5

主题

7073

帖子

1313

最佳答案
  • 关注者: 282
发表于 2017-5-30 16:48:59 | 显示全部楼层
本帖最后由 jingzhaos 于 2017-5-30 16:51 编辑
qiuhuizuo 发表于 2017-5-30 16:45
你举得这个例子我是可以明白的。但是如果问题收敛一下。我们不讨论全班的情况,只讨论这是个人的情况。那 ...

这不是电脑给的,也不是matlab给的,是统计学知识给的,既然用这个regress ,就是默认数据是随机的,不是固定的,如果是固定的,有两组x,y足矣。两点就可以定义一条直线了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

快速回复 返回顶部 返回列表