流量持续时间曲线(fdc)提取下限阈值

时间:2018-10-16 08:59:16

标签: r

我是一位新手,正在研究流量持续时间曲线和函数fdc。 我正在处理300多个系列,并且我想保存在生成​​的图中出现的低四分位数阈值Qlow.thr

enter image description here

以下是可重现的示例:

dat <- c(13.05, 90.29,  5.68, 49.13, 26.39, 15.06, 23.39, 17.98,  4.21,  2.51, 38.29,  8.57,  2.48 , 3.78, 18.09 ,15.16, 13.46,  8.69, 6.85, 11.97, 12.10,  9.87 ,21.89,  2.60  ,2.40, 27.40,  4.94, 83.17 ,12.10,  5.08 ,12.42,  6.19  ,3.60 ,32.58, 53.69, 38.49,3.61, 14.84, 34.48,  1.91, 21.79, 31.53,  6.70,  9.52, 22.64,  1.80 , 8.13, 10.60, 12.73,  4.17,  6.70 ,16.45)

fdc(dat,plot = T,lQ.thr=0.8,ylab='Hm3',main='Upstream monthly duration curve',thr.shw=TRUE)

fdc函数返回一个概率向量,但是我不确定如何将这些概率转换为原始单位并选择以Hm3表示的80%百分数值,例如,我将使用pnorm,以正常概率工作。

非常感谢您。

1 个答案:

答案 0 :(得分:1)

您可以通过

自己构建FDC。
dat <- c(13.05, 90.29,  5.68, 49.13, 26.39, 15.06, 23.39, 17.98,  
         4.21,  2.51, 38.29,  8.57,  2.48 , 3.78, 18.09 ,15.16,
         13.46,  8.69, 6.85, 11.97, 12.10,  9.87 ,21.89,  2.60,
         2.40, 27.40,  4.94, 83.17 ,12.10,  5.08 ,12.42,  6.19,
         3.60 ,32.58, 53.69, 38.49,3.61, 14.84, 34.48,  1.91, 
         21.79, 31.53,  6.70,  9.52, 22.64,  1.80 , 8.13, 10.60, 
         12.73,  4.17,  6.70 ,16.45)

dat <- sort(dat, decreasing = T)
df  <- data.frame(x = 100/length(dat) * 1:length(dat), y = dat)

plot(x = df$x, y = df$y, type = "l", log = "y")

The plot created using <code>fdc</code> versus the one using <code>plot</code>

因此,将已分类的流量数据相对于百分比超出比例进行简单绘制。通过将100%除以数据点的数量来创建此比例,这给我们每个点的增量。 因此

quantile(dat, p = c(0.2, 0.8), type = 1)

为您提供理想的结果。

请注意,分位数的计算在fdc中有所不同。好像他们只是用

p <- c(0.8, 0.2)
dat[round(p * length(dat))]

> [1]  4.21 27.40

计算值。