全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
13097 8
2010-11-27
在线性回归中,

定义1:

SSx<-sum((x-mean(x))^2)
SSy<-sum(((y-mean(y)))^2)
SSxy<-sum((x-mean(x))*(y-mean(y)))

R^2=SSxy^2/(SSx*SSy)

定义2:

yhat表示因变量的理论值,

R^2=1-sum((y-yhat)^2)/SSy

我原本以为这两个定义的求解结果完全一致,8年来都这么认为,现在发现两者结果不一致,请高手告诉为什么会不一致呢?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-11-27 12:17:05
经验算,是一样的。你得到不一样的结果原因可能在于你所用的统计软件在计算方差或相关系数的时候,默认的小数点位数有限。例如stata算相关系数的时候就只有4位。那平方之后跟第二种方法算出来就稍有差异。这公式是没错的。你的R方公式过于复杂,给你一个简单的。R=corr(x,y)=corr(y,yhat)。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-11-27 12:52:56
我使用的都是R,计算结果的确不一样,给你数据集,你自己试试就知道了。一个做出来的是0.5231816,两外一个结果是0.4466259。你给的公式只是针对前一种情况。

data<-scan("shidata.txt",list(t=0,k=0))
x<-data$t
y<-data$k
#a<-RMA(x,y)
#x<-seq(1,30)
#y<--25*x+300+rnorm(30,0,5)
SSy<-sum((y-mean(y))^2)
SSx<-sum((x-mean(x))^2)
SSxy<-sum((y-mean(y))*(x-mean(x)))
slope<--sqrt(SSy/SSx)
intercept<-mean(y)-slope*mean(x)
Rsquare<-SSxy^2/(SSx*SSy)
Rsquare
Rpf<-1-sum((intercept+slope*x-y)^2)/sum((y-mean(y))^2)
Rpf
cor(x,y)^2
附件列表

luck.txt.txt

大小:693 Bytes

 马上下载

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-11-27 12:54:26
数据集见附件。
附件列表

shidata.txt

大小:693 Bytes

 马上下载

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-11-27 16:56:59
R^2=1-SSE/SST
若令M0=I-1/n*ii`
则利用X`e=0
可以推出R^2=cor(y,yhat)^2的结果。
然而如果X`e=0
R^2=cor(y,yhat)的结果就是有偏差的
因此,数据产生的偏差原因在于此。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-11-29 12:27:37
抱歉!我还是没有完全看懂。

R^2=1-SSE/SST
若令M0=I-1/n*ii`
则利用X`e=0
可以推出R^2=cor(y,yhat)^2的结果。
然而如果X`e=0
R^2=cor(y,yhat)的结果就是有偏差的
因此,数据产生的偏差原因在于此。


是否是X'e (见红色字体)不等于0?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群