如何使用R语言编写牛顿插值公式对缺失值进行插值

Python021

如何使用R语言编写牛顿插值公式对缺失值进行插值,第1张

LagrangePolynomial <- function(x,y) {

  len = length(x)

  if(len != length(y))

    stop("length not equal!")

   

  if(len < 2)

    stop("dim size must more than 1")

   

  #pretreat data abd alloc memery

  xx <- paste("(","a -",x,")")

  m <- c(rep(0,len))

   

  #combin express

  for(i in 1:len) {

    td <- 1

    tm <- "1"

    for(j in 1:len) {

      if(i != j) {

        td <- td*(x[i] - x[j])

        tm <- paste(tm,"*",xx[j])

      }

    }

    tm <- paste(tm,"/",td)

    m[i]<-tm #m[i] <- parse(text=tm)

  }

   

  #combin the exrpession

  m <- paste(m,"*",y)

  r <- paste(m,collapse="+")

   

  #combin the function

  fbody <- paste("{ return(",r,")}")

  f <- function(a) {}

   

  #fill the function's body

  body(f) <- parse(text=fbody)

   

  return(f)

}

这是拉格朗日多项式插值算法  你参考下吧

(1)计算已知类别数据及中的点与当前点的距离;

(2)按距离递增次序排序

(3)选取与当前点距离最小的k个点

(4)确定前K个点所在类别出现的频率

(5)返回频率最高的类别作为当前类别的预测

formula代表拟合的公式,如Y~X,则对因变量Y和自变量X作线性拟合拟合模型为 y=a+bx ,如Y 0+X或Y X+0则除对因变量Y和自变量X作线性拟合外,还规定改直线必过原点及拟合模型为 y=x 。

lm对象即lm函数返回的值,其属性包括

常用的有 coefficients , residuals 和 fitted.values ,分别表示拟合的得到的各系数的值、残差和预测值。

可以看出该拟合曲线为y=0.52805925 -0.02797779x

其他值的调用,包括p值,给定x预测的y值,拟合系数R方等需要通过summary函数调用

也可以直接通过 summary(line.model) 打印出大部分与回归直线相关的一些结果