Почему сбой R geom_smooth (на mpg) при применении linetype=fl?

#r #smooth #smoothing

#r #сглаживание

Вопрос:

Я пытаюсь создать несколько geom_smooth строк, используя следующий код:

 # Install necessary packages
install.packages("tidyverse")
library(tidyverse)

# Create the plot
ggplot(data = mpg)  
  geom_smooth(mapping = aes(x = displ, y = hwy, linetype = fl, colour = fl, fill = fl))
  

Однако всякий раз, когда я сопоставляю его fl , он завершается ошибкой со следующим сообщением об ошибке:

 Warning messages:
1: In simpleLoess(y, x, w, span, degree = degree, parametric = parametric,  :
  span too small.   fewer data values than degrees of freedom.
2: In simpleLoess(y, x, w, span, degree = degree, parametric = parametric,  :
  at  1.877
3:: radius  0.000529
4:: all data on boundary of neighborhood. make span bigger
5:: pseudoinverse used at 1.877
6:: neighborhood radius 0.023
7:: reciprocal condition number  1
8:: There are other near singularities as well. 21.372
9:: zero-width neighborhood. make span bigger
10: Computation failed in `stat_smooth()`:
NA/NaN/Inf in foreign function call (arg 5) 
  

Странно то, что он хорошо работает даже при сопоставлении его с чем-то грандиозным, например class (похоже, Дисней раскрасил его). Кажется довольно странным, что нельзя сопоставить его с типом топлива, поскольку это именно те данные, которые кажутся идеальными для такого рода исследований. Это ошибка, или я что-то полностью упускаю?

Я использую RStudio 0.99.902 и новичок в R.

Ответ №1:

меньше значений данных, чем степеней свободы.

 > table(mpg$fl)
  c   d   e   p   r   
  1   5   8  52 168 
  

Вы не можете сгладить одно наблюдение в c, вам нужно исключить это или выбрать другое представление.