【问题标题】:Computing and generating plot for the Probability of Exceedance in R?计算和生成 R 中超出概率的图?
【发布时间】:2020-01-25 19:57:25
【问题描述】:

我正在尝试在 R 中计算 probability of exceedance。这里是 link,其中包含计算超出概率的详细信息和公式。我尝试使用以下示例代码复制该过程,但是,我离所附示例绘图很远。有一次,我想出了如何做到这一点——然后我想在一个有多个variablesdata.frame 上应用这个过程。

library(tidyverse)

A = sample(0:5000, 2500)
A = A[order(A, decreasing = TRUE)]
Rank = 1:2500

DF = data.frame(cbind(A,Rank))
DF$Prob =  100*(DF$Rank/(length(DF$Prob+1)))

ggplot(data = DF, aes(x=Prob, y=A))+
  geom_line() + scale_y_continuous(trans = "log10")

这是我想要制作的情节样本

【问题讨论】:

    标签: r ggplot2 statistics probability


    【解决方案1】:

    计算Prob的公式在问题中没有很好地实现。它将 1 添加到 DF$Prob,然后将其 length 添加 1 length

    DF <- data.frame(A, Rank)
    DF$Prob <-  DF$Rank/(length(DF$Rank) + 1)
    
    ggplot(data = DF, aes(x = Prob, y = A)) +
      geom_line() + 
      scale_x_continuous(breaks = seq(0, 1, by = 0.20),
                         labels = percent) +
      scale_y_continuous(trans = "log10")
    

    数据创建代码。

    我已更改数据集示例。
    下面的代码是可重现的,因为使用了set.seed,而sample 的概率会递减。

    set.seed(1234)
    A <- sample(0:5000, 2500, prob = exp(seq(10, 0, length.out = 5001)))
    A <- A[order(A, decreasing = TRUE)]
    Rank <- 1:2500
    

    【讨论】:

    • 谢谢。 prob = exp(seq(10, 0, length.out = 5001)) 在做什么?是否可以将程序实施到data.frame?比如DF = data.frame(A = runif(8000, 5,800), B = runif(8000, 0, 1000), C = runif(8000, 2,700), D = runif(8000, 1,600))?应该有一些包会自动计算超出概率??
    • @Hydro prob = exp(...) 代码只是为了从0:5000 的下限进行更多的抽取。和问题本身关系不大,是用来创建fake数据集的,不多。
    • 谢谢-我发现这个包可以自动执行fdc (flow duration curve),也称为exceedance probability。我将把它作为一个单独的问题,因为我有几个问题 - 希望有人能回答他们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-14
    • 2020-09-24
    • 2017-12-07
    • 1970-01-01
    • 2021-08-11
    • 2020-04-17
    相关资源
    最近更新 更多