Как применить loess.smoothing к графику, а затем извлечь точки?

Я пытаюсь применить сглаживание лёсса к диаграмме рассеяния (т.е. между двумя количественными переменными). Я хотел бы построить график, где на диаграмме рассеяния происходит сглаживание лесса, а затем хотел бы извлечь только точки данных на диаграмме рассеяния, которые находятся выше этого сглаживания.

Например, если это моя диаграмма рассеяния:

qplot(mpg, cyl, data=mtcars)

И я хотел наложить плавнее:

qplot(mpg, wt, data=mtcars) + with(mtcars, loess.smooth(mpg, wt))

Это приводит к ошибке: «Не знаю, как добавить o к графику».

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


person Community    schedule 11.04.2015    source источник


Ответы (1)


[Отказ от ответственности: этот ответ неполный]

ggplot2 имеет функцию добавления выравнивателя лесса: stat_smooth(), например.

qplot(mpg, cyl, data=mtcars) + stat_smooth()
# For datasets with n < 1000 default is loess, to hard-code:
qplot(mpg, cyl, data=mtcars) + stat_smooth(method="loess")

На странице помощи функции также указано, что она возвращает data.frame с прогнозами, которые вы можете использовать для извлечения очков. Этот ответ SO проходит через него. К сожалению, он обычно разбивает его на 80 точек, которые могут не совпадать с данными, поэтому вам придется выполнить некоторую интерполяцию, чтобы получить точки выше/ниже.

P.S. это своего рода два вопроса - я бы рекомендовал разделить их в будущем.

person Max Ghenis    schedule 11.04.2015
comment
Я опубликую вторую часть в новом вопросе, потому что я пытался работать над этим сейчас и застрял. Я думаю, что это гораздо большая проблема, чем я думал изначально. - person ; 12.04.2015