编辑:
好吧,对不起,我会尽量说得更清楚,
我有 50 个场景(我在这里随机创建),我将所有这些场景放在一个矩阵中。在我可以应用 ecdf 函数之后,这给了我 50 个 ecdf 的列表。我想从我的 50 个场景的所有这些 ecdf 中计算分位数 90 和 10 以及中位数。
这是一个基本代码:
ma <- matrix(ncol = 50, nrow = 200)
for (i in 1:50) {
x <- runif(1:200, min = 0, max = 100)
ma[,i] <- x
}
ma_ecdf <- apply(ma, 2, ecdf)
plot(ma_ecdf[[1]])
for (i in 1:50) {
lines(ma_ecdf[[i]])
}
所以我可以轻松地绘制所有这些参数,但我只想在图表上表示三个参数(Q10、Q50、Q90)。
编辑:
我找到了它的确切方法,所以我分享它,如果有时有人需要它。
您可以尝试代码,图形非常明确,并且很好地解释了我想要做什么。感谢那些试图帮助我的人!
ma_data <- matrix(ncol = 50, nrow = 200)
for (i in 1:50) {
a <- runif(1:200, min = 0, max = 100)
ma_data[,i] <- a
}
ma_ecdf <- apply(ma_data, 2, ecdf)
x <- seq(from = 0, to = 1, by =0.1)
ma <- matrix(ncol = 50, nrow = length(x))
for (i in 1:length(x)) {
prob <- x[i]
for (j in 1:length(ma_ecdf)){
ma[i,j] <- quantile(ma_ecdf[[j]], probs = prob)
}
}
q10 <- apply(ma, 1, quantile, probs = c(0.10))
q90 <- apply(ma, 1, quantile, probs = c(0.90))
med <- apply(ma, 1, median)
plot(ma_ecdf[[1]])
for (i in 2:50) {
lines(ma_ecdf[[i]])
}
lines(med, x, type = 'o', col = 'red', lwd = 2)
lines(q90, x, type = 'o', col = 'green', lwd = 2)
lines(q10, x, type = 'o', col = 'green', lwd = 2)
您可以选择使用分位数和中位数绘制所有 ecdf,或者仅绘制分位数和中位数以使其更清晰。