R: Функция lowess с NA

Я пытаюсь использовать функцию «lowess» в базовом пакете для сглаживания вектора. Вопрос в том, что вектор имеет только одно значение NA, но после сглаживания "lowess" появляются еще 4 NA. Я искал, и кто-то предложил использовать «lowess» в пакете «gplots». Я пробовал, но получил те же результаты.

x1 <- c(NA, 19.93621, 17.64789, 17.78488, 17.11141, 18.4648, 19.62629, 17.5737, 17.48582, 18.76946, 19.57138, 19.62812, 2.982385, -0.1320513)
x2 <- lowess(x1)
x2
$x
[1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14

$y
[1]        NA        NA        NA        NA        NA 18.988279 18.563642 18.407768 18.496699 17.922510 14.419999 10.861535  7.179754  3.145612

Один из способов — удалить NA в x1, чтобы после сглаживания в x2$y не осталось NA.

x2 <- lowess(x1[-1])
x2
$x
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13

$y
 [1] 18.7079309 18.4481273 18.2491632 18.0847709 18.0946245 18.1282192 18.1497617 17.9298278 14.6441882 10.9465210  7.2635244  3.5247529 -0.3021372

Но мне просто интересно, почему появляется больше NA и есть ли более простой способ? Благодарю вас!


person Kacey    schedule 15.06.2015    source источник
comment
lowess выполняет локальную полиномиальную подгонку. Если у вас есть NA в локальной области точки, эти значения NA будут распространяться на близлежащие значения.   -  person MrFlick    schedule 15.06.2015


Ответы (1)


lowess не имеет встроенной NA обработки

  1. Вероятно, проще всего в долгосрочной перспективе научиться использовать loess (параметры и настройки которого немного отличаются), который имеет дело со значениями NA (у него есть аргумент na.action, как и у lm, который по умолчанию должен работать так, как вы хотите). - однако с точки зрения синтаксиса loess больше похоже на lm, чем на lowess).

  2. вы можете использовать na.omit непосредственно в аргументах lowess; таким образом вам не нужно специально определять, какие наблюдения опущены.

person Glen_b    schedule 15.06.2015
comment
Это кажется замечательным, но с параметром по умолчанию lowess и loess дают совершенно разные результаты. Не удалось узнать, как просто превратить первое во второе, не могли бы вы мне помочь? - person Dan Chaltiel; 30.06.2017