2016-05-11 2 views
0

Следующий код вычисляет функцию кумулятивного распределения (CDF) для вектора VP. Я хотел бы использовать CDF для получения функции плотности вероятности (PDF). Другими словами, мне нужно вычислить производную от CDF. Как я могу это сделать в R?Рассчитать производную от кумулятивного распределения (CDF), чтобы получить плотность вероятности (PDF)

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) 

ответ

3

diff дискретная разностный оператор, так что я думаю, что вы ищете

diff(CDF)/diff(Breaks) 
  • отметить, что этот вектор будет один меньше, чем оригинальные CDF и Breaks векторов
  • вам возможно, придется что-то сделать, чтобы обратить вспять ваши CDF и Breaks векторы, чтобы получить разумные результаты ...
0

Вы также можете попробовать эмпирическую CDF функцию:

CDF <- ecdf(VP) 

и функция Гистограмма может также обеспечивать функцию плотности образца

PDF <- hist(VP, freq=F) 

Посмотрите PDF$counts и PDF$breaks.

Смежные вопросы