汉沽有什么好玩的地方:用matlab求线性回归,R2大于1

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/30 16:59:36
我用matlab做多元线性回归,用的是
[b,bint,r,rint,stats]=regress(y,x)
函数,8个x的,没有常数项。做出来的结果倒是和答案一样,但是R2(R的平方)大于1,有的还是3点多。这是怎么回事?我又用带常数项的做了一遍,结果没有问题,判断系数也没有问题。谁能告诉我这是怎么回事?

具体程序如下:
x1=[120 133.02 129.63 158.77 145.32 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120]
x2=[73 73 73 73 73 78.596 75.45 90.487 83.848 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73]
x3=[180 180 180 180 180 180 180 180 180 231.39 198.48 212.64 190.55 180 180 180 180 180 180 180 180 180 180 180 180 180 180 180 180 180 180 180 180]
x4=[80 80 80 80 80 80 80 80 80 80 80 80 80 75.857 65.958 87.258 97.824 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80]
x5=[125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 150.71 141.58 132.37 156.93 125 125 125 125 125 125 125 125 125 125 125 125]
x6=[125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 138.88 131.21 141.71 149.29 125 125 125 125 125 125 125 125]
x7=[81.1 81.1 81.1 81.1 81.1 81.1 81.1 81.1 81.1 81.1 81.1 81.1 81.1 81.1 81.1 81.1 81.1 81.1 81.1 81.1 81.1 81.1 81.1 81.1 81.1 60.582 70.962 64.854 75.529 81.1 81.1 81.1 81.1]
x8=[90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 104.84 111.22 98.092 120.44]
y=[164.78 165.81 165.51 167.93 166.79 164.94 164.8 165.59 165.21 167.43 165.71 166.45 165.23 164.23 163.04 165.54 166.88 164.07 164.27 164.57 163.89 166.35 165.54 166.75 167.69 162.21 163.54 162.7 164.06 164.66 164.7 164.67 164.69]

[b,bint,r,rint,stats]=regress(y,x)
要不推荐个好的数学建模的论坛也成。

这是因为你的这个回归的拟合函数错误.当R2大于1时,就是matlab的一种报错方式.我用datafit解过了,发现R2提示的是error.
所以应该换一个函数.

不可能吧......