我是一位新手,正在研究流量持续时间曲线和函数fdc
。
我正在处理300多个系列,并且我想保存在生成的图中出现的低四分位数阈值Qlow.thr
:
以下是可重现的示例:
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
,以正常概率工作。
非常感谢您。
答案 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")
因此,将已分类的流量数据相对于百分比超出比例进行简单绘制。通过将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
计算值。