ggplot2: geom_quantile выглядит странно и возвращает неожиданную ошибку - PullRequest
1 голос
/ 13 марта 2020

Пожалуйста, найдите мой образец данных p ниже.

Вопросы:

(1) График geom_quantile(), представленный ниже, выглядит странно, так как я не ожидал, что линия регрессии перехватить на (8,0)-ish. Похоже, исключить p$n.sygdom>8 -значения. Почему?

(2) Возвращает ошибки ниже - Почему это так и что это значит ?:

1: Removed 1 rows containing non-finite values (stat_quantile) и

2: I rq.fit.br(wx, wy, tau = tau, ...) : Solution may be nonunique.

Я создал этот график: enter image description here

Поскольку я хотел бы нарисовать 50-й процентиль, я указал .. geom_quantile(quantiles = 0.5, ..., как вы можете видеть в моем Сценарий ниже. Я бы ожидал, что geom_quantile(quantiles=0.5) перехватит вокруг этого geom_point, расположенного в (10, 10) -i sh, или, по крайней мере, около (10,0). p$n.sygdom (Metastatic Burden) -значения в 9 и 10 просто не включены.

Я получаю сообщение об ошибке, как описано выше при запуске этого кода. Я подозреваю, что это как-то связано с графически нечетным geom_quantile, но я не могу понять, что.

cols = c("#E1B930", "#2C77BF","#E38072","#6DBCC3")

ggplot(p, aes(x=n.sygdom,y=os.neck)) + geom_point(aes(color=uiccc),shape=20, size=7,alpha=0.7) + 

  geom_quantile(quantiles = 0.5,col="black", size=1,linetype=2) + 


  scale_fill_manual(values=cols) + 

  scale_colour_manual(values=cols) + 

  scale_x_continuous(breaks = seq(0,18, by=1), name="Metastatic Burden") +
  scale_y_continuous(breaks = seq(0,200, by=25), limits=c(0,130), name="Time to death (months)") +

  theme(legend.position="none")

Мои данные p

p <- structure(list(n.sygdom = c(4L, 1L, 0L, 0L, 0L, 0L, 0L, 4L, 0L, 
0L, 0L, 0L, 4L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 
3L, 0L, 0L, 0L, 3L, 5L, 0L, 1L, 1L, 0L, 1L, 0L, 3L, 0L, 1L, 1L, 
5L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 3L, 0L, 0L, 1L, 2L, 0L, 1L, 0L, 
0L, 0L, 0L, 1L, 0L, 2L, 0L, 0L, 0L, 0L, 0L, 2L, 10L, 6L, 0L, 
0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 
2L, 0L, 0L, 0L, 0L, 1L, 1L, 2L, 0L, 4L, 0L, 0L, 1L, 0L, 1L, 1L, 
1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 
1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 3L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
2L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 7L, 4L, 
0L, 2L, 1L, 0L, 4L, 0L, 2L, 7L, 4L, 6L, 2L, 0L, 0L, 1L, 1L, 0L, 
2L, 1L, 2L, 1L, 1L, 0L, 2L, 3L, 2L, 3L, 0L, 0L, 0L, 0L, 0L, 1L, 
1L, 0L, 0L, 0L, 0L, 1L, 2L, 1L, 1L, 1L, 0L, 0L, 0L, 2L, 0L, 1L, 
0L, 2L, 2L, 0L, 0L, 0L, 0L, 9L, 0L, 2L, 6L, 0L, 9L, 0L, 1L, 0L, 
7L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 2L, 2L, 5L, 2L, 4L, 6L, 0L, 1L, 
4L, 0L, 0L, 1L, 1L, 2L, 1L), os.neck = c(11.5, 74.38, 17.02, 
7.89, 96.03, 40.48, 17.74, 14.65, 62.46, 12.55, 9.92, 26.05, 
45.47, 17.38, 39.72, 51.45, 8.61, 76.98, 67.09, 94.79, 72.15, 
93.93, 17.05, 12.48, 91.6, 15.87, 11.04, 67.22, 67.02, 8.94, 
6.6, 5.09, 10.68, 17.15, 0.07, 5.19, 40.77, 0.2, 170.88, 5.55, 
1.61, 38.28, 10.58, 32.99, 110.98, 103.69, 122.32, 14.78, 42.74, 
4.04, 8.28, 84.96, 11.7, 49.97, 120.48, 52.6, 71.26, 16.3, 100.14, 
55.03, 6.51, 89.89, 51.71, 24.97, 55.66, 21.91, 81.48, 30.92, 
1.58, 7.52, 30.75, 3.45, 19.22, 5.42, 17.68, 45.54, 76.22, 125.34, 
83.62, 30.82, 90.32, 1.84, 19.98, 20.53, 32.59, 54.77, 2.3, 106.84, 
22.28, 45.18, 4.47, 39.66, 32.3, 16.23, 3.88, 2.23, 0.23, 18.73, 
0.79, 28.75, 79.54, 14.46, 15.15, 54.97, 48.59, 34.83, 58.42, 
35.29, 45.73, 57.53, 63.11, 65.05, 29.54, 77.21, 63.48, 83.35, 
34.3, 64.49, 29.54, 62.69, 21.62, 49.35, 99.02, 15.8, 41.89, 
12.98, 13.8, 43.6, 57.23, 31.38, 70.74, 39.46, 20.76, 67.22, 
127.15, 74.12, 1.97, 7.39, 25.17, 28.22, 14, 36.53, 20.83, 19.55, 
40.77, 27.76, 45.31, 34.46, 35.55, 26.94, 9.43, 10.51, 6.8, 8.18, 
8.02, 14.29, 6.11, 13.8, 4.9, 4.04, 14.82, 11.66, 73.07, 92.91, 
99.98, 10.64, 10.05, 95.8, 7.23, 12.81, 43.99, 13.9, 10.25, 16.36, 
18.2, 18.76, 12.32, 8.64, 11.79, 112.04, 70.97, 31.28, 28.85, 
21.49, 19.94, 22.14, 29.44, 67.62, 11.01, 45.24, 110.72, 20.24, 
14.06, 12.88, 31.51, 8.08, 13.08, 21.45, 24.28, 21.98, 32.89, 
23.26, 15.41, 15.41, 13.8, 40.12, 8.02, 15.77, 49.81, 18.17, 
24.21, 47.08, 6.6, 37.16, 13.01, 8.38, 14.36, 18.27, 17.28, 73.76, 
68.21, 22.83, 2.66, 69.06, 17.05, 8.61, 23.33, 13.34, 12.65, 
8.77, 128.92, 16.1, 4.99, 11.73, 22.97, 40.12, 20.37, 2.04, 45.73
), uiccc = structure(c(4L, 3L, 3L, 2L, 2L, 2L, 2L, 4L, 1L, 1L, 
2L, 1L, 4L, 2L, 1L, 2L, 3L, 1L, 2L, 3L, 2L, 1L, 2L, 3L, 2L, 4L, 
1L, 1L, 2L, 4L, 4L, 1L, 3L, 3L, 4L, 3L, 1L, 4L, 2L, 3L, 4L, 4L, 
4L, 3L, 2L, 4L, 1L, 4L, 2L, 4L, 4L, 2L, 4L, 4L, 1L, 4L, 2L, 3L, 
2L, 2L, 3L, 2L, 4L, 4L, 2L, 2L, 3L, 1L, 4L, 4L, 4L, 4L, 4L, 3L, 
2L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 4L, 2L, 4L, 1L, 
2L, 1L, 1L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 2L, 3L, 3L, 4L, 1L, 
1L, 3L, 1L, 4L, 2L, 1L, 3L, 1L, 2L, 1L, 1L, 4L, 1L, 1L, 4L, 1L, 
1L, 3L, 2L, 2L, 1L, 4L, 4L, 4L, 4L, 1L, 1L, 1L, 2L, 2L, 4L, 4L, 
2L, 3L, 4L, 2L, 4L, 1L, 1L, 3L, 3L, 1L, 1L, 3L, 4L, 4L, 2L, 4L, 
4L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 3L, 2L, 2L, 4L, 3L, 1L, 4L, 3L, 
4L, 4L, 3L, 1L, 4L, 4L, 4L, 4L, 2L, 2L, 4L, 4L, 1L, 4L, 4L, 2L, 
4L, 4L, 4L, 3L, 4L, 3L, 3L, 4L, 4L, 2L, 4L, 4L, 2L, 4L, 4L, 4L, 
4L, 1L, 4L, 4L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 2L, 
3L, 1L, 2L, 1L, 2L, 2L, 4L, 4L, 4L, 4L, 4L, 4L, 1L, 3L, 4L, 4L, 
1L, 3L, 3L, 4L, 3L), .Label = c("UICC Stage I", "UICC Stage II", 
"UICC Stage III", "UICC Stage IV"), class = "factor")), row.names = c(NA, 
-239L), class = "data.frame")

1 Ответ

1 голос
/ 13 марта 2020

Кажется, что отсутствие значений для метастатического бремени c, равного 8, вызывает некоторые проблемы rq.fit.fn.

В качестве альтернативы использованию geom_quantile возможно, вы можете вычислить медиану (квантиль = 0,5) вне графика и использовать geom_smooth, чтобы получить линию регрессии.

Обратите внимание, что может существовать некоторое отличие от регрессии лайнера, рассчитанной по методу lm, и квантильной регрессии, рассчитанной по rq.fit.fn:

library(dplyr)
Med <- p %>% group_by(n.sygdom) %>% summarise(Median = median(os.neck), Nb = n())

# A tibble: 10 x 3
   n.sygdom Median    Nb
      <int>  <dbl> <int>
 1        0  36.5    141
 2        1  16.2     47
 3        2  16.2     22
 4        3   8.94     7
 5        4  12.6      9
 6        5  23.3      3
 7        6  17.9      4
 8        7   9.43     3
 9        9  11.2      2
10       10   7.52     1

А вот для части построения

library(ggplot2)
ggplot(p, aes(x=n.sygdom,y=os.neck)) + 
  geom_point(aes(color=uiccc),shape=20, size=7,alpha=0.7) + 
  geom_point(data= Med, aes(y = Median), col = "black", size = 1.5, shape = 24)+
  geom_smooth(method = "lm", data = Med, aes(x = n.sygdom, y = Median), se = FALSE, linetype = 2, size =  1)+
  scale_fill_manual(values=cols) + 
  scale_colour_manual(values=cols) +
  scale_x_continuous(breaks = seq(0,18, by=1), name="Metastatic Burden") +
  scale_y_continuous(breaks = seq(0,200, by=25), limits=c(0,130), name="Time to death (months)") +
  theme(legend.position="none")

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...