缺失数据的 LOCF 和 NOCF 方法:如何绘制数据?

LOCF and NOCF methods for missing data: how to plot data?

我正在处理以下数据集及其缺失数据:

# A tibble: 27 x 6
      id sex      d8   d10   d12   d14
   <dbl> <chr> <dbl> <dbl> <dbl> <dbl>
 1     1 F      21    20    21.5  23  
 2     2 F      21    21.5  24    25.5
 3     3 NA     NA    24    NA    26  
 4     4 F      23.5  24.5  25    26.5
 5     5 F      21.5  23    22.5  23.5
 6     6 F      20    21    21    22.5
 7     7 F      21.5  22.5  23    25  
 8     8 F      23    23    23.5  24  
 9     9 F      NA    21    NA    21.5
10    10 F      16.5  19    19    19.5
# ... with 17 more rows

我想通过上次观察结转法 (LOCF) 和下一次观察结转法 (NOCB) 填充缺失数据,并报告图形表示,按性别绘制各个年龄段的个人资料,突出显示估算值,并按性别计算每个年龄的均值和标准误差。你能建议一种在 plot() 函数中正确设置参数的方法吗?

有人可能对此有任何线索吗?

我在下面提供了一些代码,以防万一它们有用,例如从其他数据集中提取的。

par(mfrow=c(1,1))
Oz <- airquality$Ozone
locf <- function(x) {
  a <- x[1]
  for (i in 2:length(x)) {
    if (is.na(x[i])) x[i] <- a
    else a <- x[i]
  }
  return(x)
}
Ozi <- locf(Oz)
colvec <- ifelse(is.na(Oz),mdc(2),mdc(1))

### Figure

plot(Ozi[1:80],col=colvec,type="l",xlab="Day number",ylab="Ozone (ppb)")
points(Ozi[1:80],col=colvec,pch=20,cex=1)

下一个观察结转/上一个观察结转对于您的数据来说可能是一个非常糟糕的选择。

这些算法通常用于时间序列数据。将最后的观察向前推进可能是个好主意。例如。如果你想到 10 分钟的温度测量,实际室外温度很可能与 10 分钟前的温度非常相似。

对于横截面数据(看起来你在看人),前一个人通常与任何其他随机人相似。

查看横截面数据集的 mice R 包。 它为您的案例提供了比 locf/nocb 更好的算法。 以下是它提供的功能的概述:https://amices.org/mice/reference/index.html

它还包括不同的图来评估插补,例如:

通常在使用 mice 时,您会创建多个可能的插补(多重插补 技术值得一读)。但是你也可以只用这个包生成一个估算的数据集。

有以下函数可以可视化您的估算:

  • bwplot()(观察数据和估算数据的盒须图)
  • densityplot()(观测数据和估算数据的密度图)
  • stripplot()(观测数据和估算数据的条状图)
  • xyplot()(观察数据和估算数据的散点图)

希望对您有所帮助。所以我的建议是看一下这个包,然后用你的新知识开始一种新的方法。