使用线性模型在矩阵中估算NA值

时间:2019-12-28 23:23:16

标签: r

我正在尝试编写一个函数,该函数将采用任何大小的矩阵,找到单个NA值,并根据矩阵中其他值的LINEAR MODEL推算该值。我遇到了一个问题,就是我的线性模型无法像我认为的那样为我提供斜率和截距来计算缺失值。如果有人可以给我任何指示或帮助我找到实现这一目标的更有效方法,我将不胜感激。

这是我到目前为止所拥有的:


rawVector <- c(1, 2, 3, 4, 5, NA, 7, 8, 9)
testMatrix <- matrix(rawVector, nrow = 3, ncol = 3, byrow = T)


imputeMissingValuesHARD <- function(inputMatrix) {

  dimnames(inputMatrix) <- list(rownames(inputMatrix, do.NULL = FALSE, prefix = "row"), colnames(inputMatrix, do.NULL = FALSE, prefix = "col"))

  dependent <- ""
  colNumber <- -1

  for(row in 1:nrow(inputMatrix)) {
    for(col in 1:ncol(inputMatrix)) {
        if(is.na(inputMatrix[row, col]))
      {
        dependent <- colnames(inputMatrix)[col]
        colNumber <- col
      }
    }
  }

  otherCols <- colnames(inputMatrix)[-(colNumber)]


  myModel <- as.formula(paste(dependent, paste(otherCols, collapse="+"), sep="~"))


  fit <- lm(myModel, as.data.frame(inputMatrix))

  print(fit)

  return("OK")
}

imputeMissingValuesHARD(testMatrix)

0 个答案:

没有答案