R最小二乘法,曲线拟合基础

首先简要介绍一下最小二乘法
在我们研究两个变量(x,y)之间的相互关系时,通常可以得到一系列成对的数据(x1,y1.x2,y2… xm,ym);将这些数据描绘在x -y直角坐标系中,若发现这些点在一条直线附近,可以令这条直线方程如y=a0+a1x(式1-1)
现在我们随便给三个点(1,2),(2,2),(3,1),先看一下散点图

x<-c(1,2,3)
y<-c(2,2,1)
#求相关性
Correlation(x,y)
[1]0.9942198
#相关性算法
#Correlation<- function(x,y) {
#  len<-length(x)
#  if( len != length(y))
#    stop("length not equal!")

#  x2 <- unlist(lapply(x,function(a) return(a^2)))
#  y2 <- unlist(lapply(y,function(a) return(a^2)))
#  xy <- x*y

#  a <- sum(xy)*len - sum(x)*sum(y)
#  b <- sqrt(sum(x2)*len - sum(x)^2)*sqrt(sum(y2)*len - sum(y)^2)
#  if( b == 0)
#    stop("data is incorrect!")
#  return(a/b)
#}
plot(x,y,col="blue",main="最小二乘法曲线拟合",xlab="自变量",xlim=c(0,4))

R最小二乘法,曲线拟合基础_第1张图片
然后介绍拟合算法,原则是
为建立这直线方程就要确定a0和a1,应用《最小二乘法原理》,将实测值Yi与利用计算值Yj(Yj=a0+a1Xi)(式1-1)的离差(Yi-Yj)的平方和 这里写图片描述最小为“优化判据”。
令:φ = 这里写图片描述(式1-2)
把(式1-1)代入(式1-2)中得:
φ = 这里写图片描述 (式1-3)
当 最小时,可用函数 φ 对a0、a1求偏导数,令这两个偏导数等于零。
∑2(a0 + a1*Xi - Yi)=0(式1-4)
∑2Xi(a0 +a1*Xi - Yi)=0(式1-5)
然后求解出a0,a1,就得到了曲线。

model<-lm(y~x)
model

Call:
lm(formula = y ~ x)

Coefficients:
(Intercept)            x  
      2.667       -0.500 

上面的Coefficients的意思就是y=2.667-0.500x,这与我手动算得的
y=8/3-1/2x一致。

ablink(model)

R最小二乘法,曲线拟合基础_第2张图片

你可能感兴趣的:(R)