2015-04-11 1 views
0

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

Например, если это мое рассеивание:

qplot(mpg, cyl, data=mtcars) 

И я хотел бы накладываться тем плавнее:

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

Это приводит к ошибке: «Не знаю, как добавить O к сюжету ".

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

ответ

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

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

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

+0

Я отправлю вторую часть в новый вопрос, потому что сейчас я пытаюсь работать над этим, и я застрял. Я думаю, что это гораздо большая проблема, чем я думал изначально. – LanneR