用probplot叠加两个概率图

时间:2019-07-11 12:16:33

标签: r plot label probability axis

我可以使用probplot()包中的e1071函数创建对数正态概率图。当我尝试向第一幅图添加另一组对数正态数据时,会出现问题。尽管我使用命令par(new=T),但是两个图的x轴是不同的,并且不对齐。

还有另一种方法吗?

我尝试使用points()函数。但是,似乎我需要x和y坐标才能对其进行绘制,而且我不知道如何从probplot()函数中提取x,y坐标。

'''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 :(得分:0)

首先让我们模拟变量:

 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

红线和点来自均值= 1,sdlog = 1且分布 蓝色的是来自均值= 2,sdlog = 3的那个。

我还必须警告您,请阅读probplot()函数的代码:

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

直线的斜率仅取决于第一个和第三个四分位数的位置,而不取决于其他地方发生的情况。