Предположим, что мы бежали install.packages("ggplot2")
install.packages("babynames")
Тогда
library(babynames)
data(babynames)
my_d <- babynames %>%
filter(
name == "Josiah" & sex == "M" |
name == "Alicia" & sex == "F" |
name == "Gabriel" & sex == "M" |
name == "Joshua" & sex == "M"
) %>%
group_by(name, year, sex) %>%
summarise(n = sum(n) ) %>%
arrange(year)
ggplot(my_d, aes(x = year, y = n, color = name) ) +
geom_line(se = FALSE) +
scale_x_continuous(breaks = seq(1900, 2020, by = 10) )
дает
![enter image description here](https://i.stack.imgur.com/twfkF.png)
Это хорошо, но я хотел бы сгладить его "немного", поэтому я делаю
ggplot(my_d, aes(x = year, y = n, color = name) ) +
geom_smooth(se = FALSE) +
scale_x_continuous(breaks = seq(1900, 2020, by = 10) )
, что дает ![enter image description here](https://i.stack.imgur.com/0idZT.png)
Это гладко, но он добавил отрицательные значения для «Джошуа».
Как можно избежать этого «побочного эффекта»?
РЕДАКТИРОВАТЬ: Изменение
geom_smooth(se = FALSE)
на
geom_smooth(se = FALSE, method = "loess") +
ylim(0, 30000)
удаляет отрицательные значения, но «сглаживание все еще является грубым, так сказать». Оно показывает «Габриэля» с возрастающим трендом, а это не так. Вот результат