绘制经验累积概率函数及其反函数

Plotting empirical cumulative probability function and its inverse

我有数据cdecn:

set.seed(0)
cdecn <- sample(1:10,570,replace=TRUE)
a <- rnorm(cdecn,mean(cdecn),sd(cdecn))

我创建了一个显示累积概率的图。

aprob <- ecdf(a)
plot(aprob)

我想知道如何切换 x 轴和 y 轴以获得新图,即 ECDF 的倒数。

此外,对于新情节,有没有办法在我的曲线与 0 相交的地方添加一条垂直线?

我们可以做到以下几点。我对代码的评论非常具有解释性。

## reproducible example
set.seed(0)
cdecn <- sample(1:10,570,replace=TRUE)
a <- rnorm(cdecn,mean(cdecn),sd(cdecn))  ## random samples

a <- sort(a)  ## sort samples in ascending order
e_cdf <- ecdf(a)  ## ecdf function
e_cdf_val <- 1:length(a) / length(a)  ## the same as: e_cdf_val <- e_cdf(a)

par(mfrow = c(1,2))

## ordinary ecdf plot
plot(a, e_cdf_val, type = "s", xlab = "ordered samples", ylab = "ECDF",
     main = "ECDF")

## switch axises to get 'inverse' ECDF
plot(e_cdf_val, a, type = "s", xlab = "ECDF", ylab = "ordered sample",
     main = "'inverse' ECDF")

## where the curve intersects 0
p <- e_cdf(0)
## [1] 0.01578947

## highlight the intersection point
points(p, 0, pch = 20, col = "red")

## add a dotted red vertical line through intersection
abline(v = p, lty = 3, col = "red")

## display value p to the right of the intersection point
## round up to 4 digits
text(p, 0, pos = 4, labels = round(p, 4), col = "red")

cdecn <- sample(1:10,570,replace=TRUE)
a <- rnorm(cdecn,mean(cdecn),sd(cdecn))

aprob <- ecdf(a)
plot(aprob)

# Switch the x and y axes
x <- seq(0,1,0.001754386)
plot(y=knots(aprob), x=x, ylab = "Fn(y)")

# Add a 45 degree straight line at 0, 0
my_line <- function(x,y,...){
  points(x,y,...)
  segments(min(x), y==0, max(x), max(y),...)
}
lines(my_line(x=x, y = knots(aprob)))

"straight line at x==0" 位让我怀疑你想要一个 QQplot:

qqnorm(a)
qqline(a)