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))

這裏寫圖片描述
然後介紹擬合算法,原則是
爲建立這直線方程就要確定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)

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章