代码之家  ›  专栏  ›  技术社区  ›  Krug

计算累积分布(CDF)的导数以获得概率密度(PDF)

  •  0
  • Krug  · 技术社区  · 8 年前

    以下代码计算矢量VP的累积分布函数(CDF)。我想使用CDF来获得概率密度函数(PDF)。换句话说,我需要计算CDF的导数。我在R怎么做?

    VP <- c(0.36, 0.3, 0.36, 0.47, 0, 0.05, 0.4, 0, 0, 0.15, 0.89, 0.03, 
        0.45, 0.21, 0, 0.18, 0.04, 0.53, 0, 0.68, 0.06, 0.09, 0.58, 0.03, 
        0.23, 0.27, 0, 0.12, 0.12, 0, 0.32, 0.07, 0.04, 0.07, 0.39, 0, 0.25, 
        0.28, 0.42, 0.55, 0.04, 0.07, 0.18, 0.17, 0.06, 0.39, 0.65, 0.15, 
        0.1, 0.32, 0.52, 0.55, 0.71, 0.93, 0, 0.36)
    set.seed(0)
    CF <- round(sapply(1:1000, function(i) sample(VP, length(VP), replace=TRUE)),2)
    Breaks <- c(max(CF,1.0), 1.0, 0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1, 0)
    CDF <- round(sapply(Breaks, function(b) sum(CF<=b)/length(CF)),2)
    
    2 回复  |  直到 8 年前
        1
  •  3
  •   Ben Bolker    8 年前

    diff 是离散差分算子,所以我想你在寻找

    diff(CDF)/diff(Breaks)
    
    • 请注意,该矢量将比原始矢量短一 CDF Breaks 矢量
    • 你可能需要做点什么来扭转你的 现金流量表 打破 向量以获得合理的结果。。。
        2
  •  2
  •   slouchy    8 年前

    您还可以尝试经验cdf函数:

    CDF <- ecdf(VP)
    

    直方图函数还可以提供样本密度函数

    PDF <- hist(VP, freq=F)
    

    看看吧 PDF$counts PDF$breaks .