Методы LOCF и NOCF для недостающих данных: как построить данные?

Я работаю над следующим набором данных и его недостающими данными:

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

person ag_stat    schedule 14.02.2021    source источник


Ответы (1)


Следующее наблюдение, перенесенное назад / Последнее наблюдение, перенесенное вперед, вероятно, очень плохой выбор для ваших данных.

Эти алгоритмы обычно используются для данных временных рядов. Где переносить последнее наблюдение вперед может быть хорошей идеей. Например. если вы подумаете о 10-минутных измерениях температуры, фактическая температура наружного воздуха, скорее всего, будет очень похожа на температуру 10 минут назад.

Для перекрестных данных (кажется, вы смотрите на людей) предыдущий человек обычно не больше похож на настоящего человека, чем любой другой случайный человек.

Взгляните на пакет mice R для вашего набора данных поперечного сечения. Он предлагает лучшие алгоритмы для вашего случая, чем locf / nocb. Вот обзор предлагаемой функции: https://amices.org/mice/reference/index.html

Он также включает различные графики для оценки вменения, например:

введите описание изображения здесь

Обычно при использовании мышей вы создаете несколько возможных вменений (стоит прочитать о технике множественного вменения). Но вы также можете просто создать один импутированный набор данных с помощью пакета.

Для визуализации ваших вменений доступны следующие функции:

  • bwplot () (график наблюдаемых и условных данных в виде прямоугольников и усов)
  • densityplot () (График плотности наблюдаемых и импутированных данных)
  • stripplot () (Stripplot наблюдаемых и вмененных данных)
  • xyplot () (Диаграмма рассеяния наблюдаемых и вмененных данных)

Надеюсь, это немного поможет. Поэтому я бы посоветовал взглянуть на этот пакет, а затем начать новый подход, используя свои новые знания.

person Steffen Moritz    schedule 16.02.2021