我可以使用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轴。

最佳答案

首先让我们模拟变量:

 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)


产生输出:r - 用probplot叠加两个概率图-LMLPHP

第二个方案是:

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


产生输出:r - 用probplot叠加两个概率图-LMLPHP

合并它们的最佳方法是使用较小的比例并丢弃一些点:

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)


给出:r - 用probplot叠加两个概率图-LMLPHP

红线和点来自均值= 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)


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

关于r - 用probplot叠加两个概率图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56988969/

10-12 17:59