马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
有如下一段代码用以讨论regress命令求回归可决系数R2或者相关系数r:clear all
clc
x = 5.*randn(30,1);
y = 2.*x;
z = 2.*randn(length(x),1);
yz = y+z;
[b,bint,r,rint,states] = regress(yz,x);
b
states
y1 = b(1).*x;
y2 = mean(yz).*ones(length(x),1);
SST = sum((yz-y2).^2)
SSR = sum((y1-y2).^2)
SSE = sum((yz-y1).^2)
SST-SSR-SSE
R = SSR/SST
r = sqrt(R)
figure(1)
plot(x,yz,'bo');
x = 5.*randn(30,1);
y = 2.*x+1;
yz = y+z;
[b,bint,r,rint,states] = regress(yz,[ones(length(x),1),x]);
b
states
y1 = b(1)+b(2).*x;
y2 = mean(yz).*ones(length(x),1);
SST = sum((yz-y2).^2)
SSR = sum((y1-y2).^2)
SSE = sum((yz-y1).^2)
SST-SSR-SSE
R = SSR/SST
r = sqrt(R)
figure(2)
plot(x,yz,'bo');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
问题是,最简单的形如y=kx或者y=k/x的一元回归如何做?用Regress命令进行,它总会建议你添加一列常数项,states中的第一项R2理论上应该和用定义的R=SSR/SST计算结果一样。当为y=2*x+1时,确实正确,但是y=2*x时,两者不等?当面对实际数据的时候,states中的R2可能为负数,个人理解为表明回归的模型不合理。但是,如果我能确定一元线性关系中我就是不需要常数项,代码中的例子暗示我在面对y=kx或者y=k/x时,Regress的R2计算结果不可信?
另外,R2=SSR/SST的这个定义是不是也是一定要在y=a+bx的模型下才成立?如果没有a这一项的回归模型,感觉计算得到的R2有时候会大于1?
请指教,谢谢!
|