Создайте бумажный график вероятности Вейбулла в R - PullRequest
0 голосов
/ 02 июля 2018

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

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

Это изображение - то, что мне нужно на графике, оно называется "Бумага для построения диаграммы вероятности Вейбулла"

weibull paper

Есть ли способ в ggplot2 или в пакете survival (или что-либо другое, кроме графики R base), чтобы создать этот график? Оттуда я могу наложить точки.

Пожалуйста, имейте в виду, что создаваемая мной графика должна быть совместима с Shiny. Спасибо.

Для справки: этот уродливый сюжет, который мне удалось создать, используя ggplot2 вручную.

current_plot

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

UPDATE

Я ищу, что для создания этого сюжета, вот несколько примеров того, как я создал мой вручную, обратите внимание, что он не полностью воспроизводим.

Вот как я могу установить отметки по оси Y:

yticks <- c(log(-log(1-0.0001)), log(-log(1-0.001)), log(-log(1-0.005)), log(-log(1-0.010)), log(-log(1-0.05)), log(-log(1-0.10)),
        log(-log(1-0.50)), log(-log(1-0.90)), log(-log(1-0.99)))

Вот y-метки:

ylabs <- c('0.01','0.1','0.5','1','5','10','50','90','99')

Вот как создать второстепенные линии сетки:

yminorticks <- c(
  log(-log(1-0.00001)),log(-log(1-0.00002)),log(-log(1-0.00003)),log(-log(1-0.00004)),log(-log(1-0.00005)),log(-log(1-0.00006)),log(-log(1-0.00007)),log(-log(1-0.00008)),log(-log(1-0.00009)),
  log(-log(1-0.0001 )),log(-log(1-0.0002)),log(-log(1-0.0003)),log(-log(1-0.0004)),log(-log(1-0.0005)),log(-log(1-0.0006)),log(-log(1-0.0007)),log(-log(1-0.0008)),log(-log(1-0.0009)),
  log(-log(1-0.001)),log(-log(1-0.002)),log(-log(1-0.003)),log(-log(1-0.004)),log(-log(1-0.005)),log(-log(1-0.006)),log(-log(1-0.007)),log(-log(1-0.008)),log(-log(1-0.009)),
  log(-log(1-0.01)),log(-log(1-0.02)),log(-log(1-0.03)),log(-log(1-0.04)),log(-log(1-0.05)),log(-log(1-0.06)),log(-log(1-0.07)),log(-log(1-0.08)),log(-log(1-0.09)),
  log(-log(1-0.10)),log(-log(1-0.20)),log(-log(1-0.30)),log(-log(1-0.40)),log(-log(1-0.50)),log(-log(1-0.60)),log(-log(1-0.70)),log(-log(1-0.80)),log(-log(1-0.90)))

1 Ответ

0 голосов
/ 21 января 2019

Существует пакет weibullR, который поможет вам построить график ненадежности в зависимости от времени.

library(WeibullR) 

df <- data.frame(time = c(10000, 10000, 20000, 20000, 30000, 30000, 30000, 30000, 
                          40000, 50000, 50000, 60000, 70000, 70000, 70000, 70000, 
                          80000, 80000, 80000, 80000, 90000, 90000, 100000), 
                 event = rep(1, 23)) 

weibl <- 1- wblr(df, 
                 col="darkgreen",
                 label="censored dataset",
                 dist = "weibull2p", 
                 ylab = "check") 

weibl_fit <- wblr.fit(weR, col = "Red", method.fit = "rr") 

data <- wblr.conf(weibl_fit, col="blue") 

plot(data)
...