Как построить кривую плотности вектора, содержащего пропущенные значения в R? - PullRequest
0 голосов
/ 29 октября 2018

У меня есть набор данных с некоторыми значениями NA (пропущенные значения).

Поскольку мне нужно построить некоторые кривые плотности из этих данных, я создал следующую функцию:

plotDistribution = function (x) {
    N = length(x)
    hist( x,col = "light blue",
          probability = TRUE)
    lines(density(x), col = "red", lwd = 3)
    rug(x)
}

Это прекрасно работает, если у x нет пропущенных значений, но поскольку мои данные содержат пропущенные значения, я получаю следующее сообщение: Ошибка в density.default (x): 'x' содержит пропущенные значения .

Мой вопрос: как построить кривую плотности не пропущенных значений в наборе данных? Как я могу игнорировать NA и построить кривую, как будто они не существуют?

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Это должно работать, просто добавив na.omit ()

plotDistribution = function (x) {
  N = length(x)
  x <- na.omit(x)
  hist( x,col = "light blue",
        probability = TRUE)
  lines(density(x), col = "red", lwd = 3)
  rug(x)
  print(N-length(x))
}

Эта функция может скрывать ошибки данных во многих случаях, поэтому я добавил строку, которая выводит количество пропущенных значений.

0 голосов
/ 29 октября 2018

Вы можете просто взять не пропущенные значения x в функции, такие как:

plotDistribution = function (x) {
  NoMissing <- x[!is.na(x)]
  N = length(NoMissing)
  hist( NoMissing,col = "light blue",
        probability = TRUE)
  lines(density(NoMissing), col = "red", lwd = 3)
  rug(NoMissing)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...