наложение двух вероятностных графиков с пробплотом - PullRequest
3 голосов
/ 11 июля 2019

Я могу создать график логнормальной вероятности, используя функцию probplot() из пакета e1071.Проблема возникает, когда я пытаюсь добавить другой набор нормальных данных к первому графику.Хотя я использую команду par(new=T), оси обоих графиков различны и не совпадают.

Есть ли другой способ сделать это?

Я пытался использовать points() функция.Тем не менее, похоже, мне нужны координаты x и y для ее построения, и я не знаю, как извлечь координаты x, y из функции probplot().

'' 'R

# Program to plot random logn failure times with probability plot

library(e1071)

logn_prob_plot <- function() {
  set.seed(1)
  x<-rlnorm(10,1,1)

  par(bty="l")

  par(col.lab="white")
  p<-probplot(x,qdist=qlnorm)
  par(col.lab="black")

  mtext(text="failure time", col="black",side=1,line=3,outer=F)
  mtext(text="lognormal probability", col="black",side=2,line=3,outer=F)

  set.seed(2)
  y=rlnorm(10,2,3)
  par(new=T)

  par(col.lab="white")
  probplot(y,qdist=qlnorm,xlab="fail time",ylab="lognormal probability")
  par(col.lab="black")

  mtext(text="failure time", col="black",side=1,line=3,outer=F)
  mtext(text="lognormal probability", col="black",side=2,line=3,outer=F)
}

logn_prob_plot()

Мой ожидаемый результат - две группы данных на одном графике вероятности с одинаковыми осями x и y.Вместо этого я получаю две разные оси X, которые не выровнены.

two lognormal data sets on same plot

1 Ответ

0 голосов
/ 15 июля 2019

Сначала давайте смоделируем переменные:

 set.seed(1)
 x<-rlnorm(10,1,1)

 set.seed(2)
 y=rlnorm(10,2,3)

Первый проблот:

p<-probplot(x,qdist=qlnorm, meanlog = 1, sdlog = 1)

, который производит вывод: enter image description here

Второй проблот:

q <- probplot(y,qdist=qlnorm,meanlog = 2, sdlog = 3)

, который производит вывод: enter image description here

Ваш лучший выстрел при объединении их использует масштаб меньшегои отбрасывая некоторые точки:

p<-probplot(x,qdist=qlnorm, meanlog = 1, sdlog = 1)
  points(sort(x), p[[1]](ppoints(length(x))),  col = "red", pch = 19)
 lines(q, col = "blue")
 points(sort(y), q[[1]](ppoints(length(y))),  col = "blue", pch = 19)

, что дает: enter image description here

Красная линия и точки из распределения с meanlog = 1, sdlog = 1 исиние - из того, что с meanlog = 2, sdlog = 3.

Я также должен предупредить вас, что при чтении кода функции probplot ():

    xl <- quantile(x, c(0.25, 0.75))
    yl <- qdist(c(0.25, 0.75), ...)
    slope <- diff(yl)/diff(xl)

наклон линии определяется только положением первого и третьего квартиля, а не bz, что происходит в другом месте.

...