最近研究直线矩阵,稍微总结一下,以后继续补充:
目标是这些点到这条直线的距离的平方和最小,可运用最小二乘法,最小二乘法拟合的进程就是回归,这条直线就是回归线。
Lsfit()函数实现最小二乘法拟合,其主要参数为:
X:一个矩阵的行对应的情况和其列对应为变量。
Y:结果,可所以一个矩阵,如果你想,以适应多种左手侧。
Wt:可选参数,加权最小二乘法的执行权重向量。
Intercept:是否应使用截距项。
Tolerance:公差将用于在矩阵分解
Yname:用于响应变量的名称。
我们以x=(1,2,3,4),y=(2,4,6,8),可得到回归线方程为
Y=2x
> y<-c(2,4,6,8)
> x<-c(1,2,3,4)
> lsfit(x,y)
$coefficients
Intercept X
0 2
........
........
上述结果中,Intercept项表现截距,x项表现方程的x的常数项。
我们先假设回归线为
Y=2x+3
然后,根据回归线结构x和y值。
> y<-c(5,7,9,11)
> x<-c(1,2,3,4)
执行lsfit()函数
> lsfit(x,y)
$coefficients
Intercept X
3 2
要正确得出方程的截距为3,x的常数项为2。现实生活中,很难有如此精确的模型,我们再多结构一些点:
> y<-c(5,7,9,11,16,20)
> x<-c(1,2,3,4,7,9)
> lsfit(x,y)
> x<-c(1,2,3,4,7,9)
> y<-c(5,7,9,11,16,20)
我们通过plot(x,y)来绘制这些点在直角坐标系中的位置,这个图也被称为散点图。
> plot(x,y)
> lsfit(x,y)
$coefficients
Intercept X
3.338028 1.845070
$residuals
[1] -0.18309859 -0.02816901 0.12676056 0.28169014 -0.25352113 0.05633803
Coefficients为系数,包含截距和x的系数,residuals表现残差,残差分别反响了这些点与直线的差异,残差越小越好,我们将回归线也画上
> abline(lsfit(x,y))
可以看到拟合效果还是不错的,我们也可以使用lm()函数,来建立线性模型停止回归分析:
画x,y的散点图: plot(x,y)
做相关回归分析,结果存放在xy中: lm(y~x)->xy
显示xy的相关回归分析结果:summary(xy)
画回归线:> abline( lm(y~x))
本博客全部内容是原创,未经书面许可,严禁任何情势的转载。
http://blog.csdn.net/u010255642
文章结束给大家分享下程序员的一些笑话语录:
打赌
飞机上,一位工程师和一位程序员坐在一起。程序员问工程师是否乐意和他一起玩一种有趣的游戏。工程师想睡觉,于是他很有礼貌地拒绝了,转身要睡觉。程序员坚持要玩并解释说这是一个非常有趣的游戏:"我问你一个问题,如果你不知道答案,我付你5美元。然后你问我一个问题,如果我答不上来,我付你5美元。"然而,工程师又很有礼貌地拒绝了,又要去睡觉。 程序员这时有些着急了,他说:"好吧,如果你不知道答案,你付5美元;如果我不知道答案,我付50美元。"果然,这的确起了作用,工程师答应了。程序员就问:"从地球到月球有多远?"工程师一句话也没有说,给了程序员5美元。 现在轮到工程师了,他问程序员:"什么上山时有三条腿,下山却有四条腿?"程序员很吃惊地看着工程师,拿出他的便携式电脑,查找里面的资料,过了半个小时,他叫醒工程师并给了工程师50美元。工程师很礼貌地接过钱又要去睡觉。程序员有些恼怒,问:"那么答案是什么呢?"工程师什么也没有说,掏出钱包,拿出5美元给程序员,转身就去睡觉了。