计算累积分布 (CDF) 的导数以获得概率密度 (PDF)
Calculate derivative of Cumulative Distribution (CDF) to get Probability Density (PDF)
以下代码计算向量 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)
diff
是离散差分运算符,所以我认为您正在寻找
diff(CDF)/diff(Breaks)
- 请注意,此向量将比原始
CDF
和 Breaks
向量短一个
- 您可能需要做一些事情来反转
CDF
和 Breaks
向量以获得合理的结果...
你也可以试试经验cdf函数:
CDF <- ecdf(VP)
并且直方图函数还可以提供样本密度函数
PDF <- hist(VP, freq=F)
看看 PDF$counts
和 PDF$breaks
。
以下代码计算向量 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)
diff
是离散差分运算符,所以我认为您正在寻找
diff(CDF)/diff(Breaks)
- 请注意,此向量将比原始
CDF
和Breaks
向量短一个 - 您可能需要做一些事情来反转
CDF
和Breaks
向量以获得合理的结果...
你也可以试试经验cdf函数:
CDF <- ecdf(VP)
并且直方图函数还可以提供样本密度函数
PDF <- hist(VP, freq=F)
看看 PDF$counts
和 PDF$breaks
。