Как построить вероятностную функцию плотности функции?

Предположим, что A следует экспоненциальному распределению; B следует гамма-распределению Как построить PDF 0,5 * (A + B)

7
задан user297850 25 August 2010 в 04:13
поделиться

4 ответа

Это довольно просто с использованием пакета "distr":

library(distr)

A <- Exp(rate=3)
B <- Gammad(shape=2, scale=3)

conv <- 0.5*(A+B)

plot(conv)
plot(conv, to.draw.arg=1)

Редактировать JD Long

Результирующий график выглядит следующим образом: alt text

9
ответ дан 6 December 2019 в 09:57
поделиться

Я не программист R, но мне может быть полезно знать, что для независимых случайных величин с PDF-файлами f 1 (x) и f 2 (x), PDF суммы двух переменных задается сверткой f 1 * f 2 (x) двух входных PDF-файлов.

1
ответ дан 6 December 2019 в 09:57
поделиться

Если вы просто ищете быстрый график, я обычно использую метод быстрого и грязного моделирования. Я делаю несколько рисунков, добавляю к ним плотность по Гауссу и рисую этого плохого мальчика:

numDraws   <- 1e6
gammaDraws <- rgamma(numDraws, 2)
expDraws   <- rexp(numDraws)
combined   <- .5 * (gammaDraws + expDraws)
plot(density(combined))

вывод должен выглядеть примерно так:

alt text

7
ответ дан 6 December 2019 в 09:57
поделиться

Вот попытка выполнить свертку (на которую ссылается @Jim Lewis) в R. Обратите внимание, что, вероятно, есть гораздо более эффективные способы сделать это.

lower <- 0
upper <- 20
t <- seq(lower,upper,0.01)
fA <- dexp(t, rate = 0.4)
fB <- dgamma(t,shape = 8, rate = 2)
## C has the same distribution as (A + B)/2
dC <- function(x, lower, upper, exp.rate, gamma.rate, gamma.shape){
  integrand <- function(Y, X, exp.rate, gamma.rate, gamma.shape){
    dexp(Y, rate = exp.rate)*dgamma(2*X-Y, rate = gamma.rate, shape = gamma.shape)*2
  }
  out <- NULL
  for(ix in seq_along(x)){
    out[ix] <-
      integrate(integrand, lower = lower, upper = upper,
                X = x[ix], exp.rate = exp.rate,
                gamma.rate = gamma.rate, gamma.shape = gamma.shape)$value
  }
  return(out)
}
fC <- dC(t, lower=lower, upper=upper, exp.rate=0.4, gamma.rate=2, gamma.shape=8)
## plot the resulting distribution
plot(t,fA,
     ylim = range(fA,fB,na.rm=TRUE,finite = TRUE),
     xlab = 'x',ylab = 'f(x)',type = 'l')
lines(t,fB,lty = 2)
lines(t,fC,lty = 3)
legend('topright', c('A ~ exp(0.4)','B ~ gamma(8,2)', 'C ~ (A+B)/2'),lty = 1:3)
2
ответ дан 6 December 2019 в 09:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: