我可以使用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)
产生输出:
第二个方案是:
q <- probplot(y,qdist=qlnorm,meanlog = 2, sdlog = 3)
产生输出:
合并它们的最佳方法是使用较小的比例并丢弃一些点:
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)
给出:
红线和点来自均值= 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/