В R: survminer::ggsurvplot с fun = cloglog возвращает предупреждающее сообщение и пустой график

Пожалуйста, обратите внимание на следующее:

С помощью пакета survminer мы можем рисовать график «лог-лог» для объектов выживания, созданных с помощью пакета survival. Это было представлено некоторое время назад разработчиком пакета @kassambara здесь.

До недавнего времени все работало нормально, но с обновлением до более новой версии R и RStudio я получаю предупреждающее сообщение и пустой график.

require("survival")
#> Loading required package: survival
require("survminer")
#> Loading required package: survminer
#> Loading required package: ggplot2
#> Loading required package: ggpubr
#> Loading required package: magrittr
fit<- survfit(Surv(time, status) ~ sex, data = lung)
ggsurvplot(fit, data = lung, fun = "cloglog")
#> Warning: Transformation introduced infinite values in continuous x-axis

#> Warning: Transformation introduced infinite values in continuous x-axis

print(sessionInfo(), locale = FALSE)
#> R version 3.6.1 (2019-07-05)
#> Platform: x86_64-w64-mingw32/x64 (64-bit)
#> Running under: Windows 10 x64 (build 16299)
#> 
#> Matrix products: default
#> 
#> attached base packages:
#> [1] stats     graphics  grDevices utils     datasets  methods   base     
#> 
#> other attached packages:
#> [1] survminer_0.4.6   ggpubr_0.2.3      magrittr_1.5      ggplot2_3.2.1    
#> [5] survival_2.44-1.1
#> 
#> loaded via a namespace (and not attached):
#>  [1] Rcpp_1.0.1        pillar_1.4.2      compiler_3.6.1   
#>  [4] highr_0.8         tools_3.6.1       digest_0.6.20    
#>  [7] nlme_3.1-140      evaluate_0.14     tibble_2.1.3     
#> [10] gtable_0.3.0      lattice_0.20-38   pkgconfig_2.0.2  
#> [13] rlang_0.4.0       Matrix_1.2-17     yaml_2.2.0       
#> [16] xfun_0.8          gridExtra_2.3     withr_2.1.2      
#> [19] stringr_1.4.0     dplyr_0.8.3       knitr_1.23       
#> [22] survMisc_0.5.5    generics_0.0.2    grid_3.6.1       
#> [25] tidyselect_0.2.5  data.table_1.12.2 glue_1.3.1       
#> [28] KMsurv_0.1-5      R6_2.4.0          km.ci_0.5-2      
#> [31] rmarkdown_1.15    tidyr_0.8.3       purrr_0.3.2      
#> [34] backports_1.1.4   scales_1.0.0      htmltools_0.3.6  
#> [37] splines_3.6.1     assertthat_0.2.1  xtable_1.8-4     
#> [40] colorspace_1.4-1  ggsignif_0.6.0    labeling_0.3     
#> [43] stringi_1.4.3     lazyeval_0.2.2    munsell_0.5.0    
#> [46] broom_0.5.2       crayon_1.3.4      zoo_1.8-6

Создано 04 сентября 2019 г. с помощью пакета reprex (v0.3.0)

Моя версия RStudio 1.2.1335.


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

Для меня ошибка возникает как в Windows, так и в Mac. Тем временем я обновил все пакеты в обеих системах с помощью update.packages(checkBuilt = TRUE, ask = FALSE), но безуспешно. Как ни странно, мой коллега, работающий с более старой версией R и RStudio, может рисовать сюжет так же хорошо, как и разработчик пакета.

Что я делаю неправильно и что я могу сделать?

Спасибо!


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

require("survival")
#> Loading required package: survival
require("survminer")
#> Loading required package: survminer
#> Warning: package 'survminer' was built under R version 3.5.3
#> Loading required package: ggplot2
#> Warning: package 'ggplot2' was built under R version 3.5.3
#> Loading required package: ggpubr
#> Warning: package 'ggpubr' was built under R version 3.5.3
#> Loading required package: magrittr
fit<- survfit(Surv(time, status) ~ sex, data = lung)
ggsurvplot(fit, data = lung, fun = "cloglog")

print(sessionInfo(), locale = FALSE)
#> R version 3.5.1 (2018-07-02)
#> Platform: x86_64-apple-darwin15.6.0 (64-bit)
#> Running under: macOS  10.14.6
#> 
#> Matrix products: default
#> BLAS: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRblas.0.dylib
#> LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib
#> 
#> attached base packages:
#> [1] stats     graphics  grDevices utils     datasets  methods   base     
#> 
#> other attached packages:
#> [1] survminer_0.4.2 ggpubr_0.2.3    magrittr_1.5    ggplot2_3.1.1  
#> [5] survival_2.42-3
#> 
#> loaded via a namespace (and not attached):
#>  [1] Rcpp_1.0.2        compiler_3.5.1    pillar_1.4.2     
#>  [4] plyr_1.8.4        highr_0.8         tools_3.5.1      
#>  [7] digest_0.6.20     nlme_3.1-137      evaluate_0.14    
#> [10] tibble_2.1.3      gtable_0.3.0      lattice_0.20-35  
#> [13] pkgconfig_2.0.2   rlang_0.4.0       Matrix_1.2-14    
#> [16] cmprsk_2.2-7.1    yaml_2.2.0        xfun_0.9         
#> [19] gridExtra_2.3     withr_2.1.2       stringr_1.4.0    
#> [22] dplyr_0.8.3       knitr_1.24        survMisc_0.5.5   
#> [25] generics_0.0.2    grid_3.5.1        tidyselect_0.2.5 
#> [28] data.table_1.12.2 glue_1.3.1        KMsurv_0.1-5     
#> [31] R6_2.4.0          km.ci_0.5-2       rmarkdown_1.15   
#> [34] tidyr_0.8.3       purrr_0.3.2       backports_1.1.4  
#> [37] scales_1.0.0      htmltools_0.3.6   splines_3.5.1    
#> [40] assertthat_0.2.1  xtable_1.8-4      colorspace_1.4-1 
#> [43] ggsignif_0.6.0    labeling_0.3      stringi_1.4.3    
#> [46] lazyeval_0.2.2    munsell_0.5.0     broom_0.5.2      
#> [49] crayon_1.3.4      zoo_1.8-6

Создано 05 сентября 2019 г. с помощью пакета reprex (v0.3.0)


Возможный обходной путь
Ответ @Robbe — возможный обходной путь! Я не решаюсь отметить это как правильный ответ, хотя. Любые советы по этому поводу тоже приветствуются.


person Frederick    schedule 04.09.2019    source источник
comment
Просто идеи, вы можете попробовать открыть изображение в веб-браузере вместо панели просмотра RStudio. Все еще пусто?   -  person JasonAizkalns    schedule 04.09.2019
comment
Да. Он по-прежнему пуст. Я действительно заметил эту проблему при рендеринге «gitbook» (HTML) через пакет bookdown. PDF-документы также возвращают тот же пустой график. ИМХО, это должно иметь какое-то отношение к предупреждающему сообщению «Введена трансформация [...]», и это не должно зависеть от отображаемого сюжета. Можете ли вы воспроизвести сообщение об ошибке или получить график?   -  person Frederick    schedule 04.09.2019


Ответы (2)


Я получил ту же ошибку, что и вы, но вы можете заставить ее работать, опуская 0 по оси X, установив xlim:

fit <- survfit(Surv(time, status) ~ sex, data = lung)
ggsurvplot(fit, data = lung, fun = "cloglog", xlim = c(1, 1000))

Это связано с тем, что ось x логарифмически преобразована, а log(0) минус бесконечность, что вызывает ошибку.

ggsurvplot, похоже, не делает этого автоматически, тогда как plot, например, делает:

fit<- survfit(Surv(time, status) ~ sex, data = lung)
plot(fit, data = lung, fun = "cloglog")

с предупреждающим сообщением:

1: In xy.coords(x, y, xlabel, ylabel, log) :
  1 x value <= 0 omitted from logarithmic plot
person Robbe Caes    schedule 04.09.2019
comment
Спасибо за это! Я обновил свой вопрос, потому что нашел комбинацию версии R и пакетов, которые работают. Я хотел бы отметить ваше предложение как ответ, но не уверен, что это будет правильно, поскольку это скорее обходной путь. Может кто посоветует по этому поводу. - person Frederick; 05.09.2019
comment
Кажется разумным ожидать, что функция, отображаемая в логарифмическом масштабе, обнаружит нулевое значение и исключит его. Я бы связался с сопровождающим и попросил улучшить проверку ошибок. - person IRTFM; 15.09.2019

Вот что, по моему мнению, следовало сделать:

#identify the proper destination for the issue
 maintainer("survminer")
[1] "Alboukadel Kassambara <[email protected]>"

Составьте письмо и отправьте его:

Subject = " Blank plot with "cloglog" option to ggsurvplot"

Body = c("Please see the recent StackOverflow dialog on this issue.",
"https://stackoverflow.com/questions/57791504/in-r-survminerggsurvplot-with-fun-cloglog-returns-warning-message-and-emp/57793157#57793157",
"I suggest error trapping for the possibility of a zero value on the time axis.",
"Sincerely;")

И я его послал.

person IRTFM    schedule 15.09.2019
comment
Спасибо за ваше предложение. Как вы, вероятно, заметили из моих ссылок, я связался с разработчиком, и он знает об этой проблеме. По-видимому, он не считает это проблемой, требующей немедленного внимания (к сожалению). Возможно, ваша электронная почта поможет в этом. Спасибо! - person Frederick; 15.09.2019
comment
Можно было бы надеяться, что такая очевидная ошибка будет обнаружена и исправлена ​​изящно. - person IRTFM; 16.09.2019