最速下降法求解拟合系数-r语言
 (2014-10-13 13:03:49)
	
			
					(2014-10-13 13:03:49)		| 标签: 股票 | 分类: r语言挖掘实现 | 
 
该算法思想是:沿着梯度(导数方向)方向去寻找最小值,如果步长设置为负,那么就是最大值了。线性拟合是求一条线,使得所有的样本点到这条线的距离的平方和最小,也称为最小二乘法,利用最速下降去寻找这个最小二乘是一个不错的选择。
R语言程序(最速下降):
zuisu<-function(x, y, k, alpha){
 
x0=rep(1,m)
x=cbind(x0,x)
 
 
 
 
 
 
 
x3=t(x)
 
 
 
 
 
 
求解过程x<-c(0.10,0.11,0.12,0.13,0.14,0.15,0.16,0.17,0.18,0.20,0.21,0.23)
y<-c(42.0,43.5,45.0,45.5,45.0,47.5,49.0,53.0,50.0,55.0,55.0,60.0)
source("zuisu.R")
zuisu(x,y,5000,0.1) 
结果:
http://s14/mw690/003wp1j3gy6MMkUnrbL8d&690
 
R原自带的拟合结果:
http://s7/mw690/003wp1j3gy6MMl02giq06&690
 
 
案例二:
 
x1=c(76.0, 91.5, 85.5, 82.5, 79.0, 80.5, 74.5,
79.0, 85.0, 76.5, 82.0, 95.0, 92.5)
x2=c(50, 20, 20, 30, 30, 50, 60, 50, 40, 55,
40, 40, 20)
x=cbind(x1,x2)
y= c(120, 141, 124, 126, 117, 125, 123, 125,132, 123, 132, 155, 147)
source("zuisu.R")
zuisu(x,y,20000000,0.000015263)
 
> zuisu(x,y,20000000,0.000015263)
 
x0 -62.9515872
x1 
x2 
 
 
r源代码:
blood<-data.frame(x1=c(76.0, 91.5, 85.5, 82.5, 79.0, 80.5,
74.5,
79.0, 85.0, 76.5, 82.0, 95.0, 92.5),
x2=c(50, 20, 20, 30, 30, 50, 60, 50, 40, 55,
40, 40, 20),y= c(120, 141, 124, 126, 117, 125, 123, 125,132, 123,
132, 155, 147))
lm.sol<-lm(y ~ x1+x2, data=blood)
summary(lm.sol)
-62.96
2.13
0.40022
 
 

 加载中…
加载中…