0

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

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

1 回答 1

1

Next Observation Carried Backward / Last Observation Carried Forward 对您的数据来说可能是一个非常糟糕的选择。

这些算法通常用于时间序列数据。在哪里进行最后的观察可能是一个好主意。例如,如果您考虑 10 分钟的温度测量,实际室外温度很可能与 10 分钟前的温度非常相似。

对于横截面数据(您似乎在看人),前一个人通常与其他任何随机人相比与实际人不相似。

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

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

在此处输入图像描述

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

有以下功能可用于可视化您的插补:

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

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

于 2021-02-16T20:51:57.507 回答