Хитрость заключается в Vectorize
функции над интересующим аргументом.
Спасибо за подсказку, перейдите к наиболее проголосовавшему ответу на этот вопрос . Он использует только базовую графику, так что здесь ggplot2
эквивалент.
Сначала я определю отрицательное логарифмическое правдоподобие, используя функцию dexp
library(ggplot2)
negloglike <- function(lam, x) {negloglike <- function(lam, x) {
l = -sum(dexp(x, lam, log = TRUE))
return(l)
}
nllv <- Vectorize(negloglike, "lam")
Но лучше использовать аналитическую форму, которую легко установить вручную.
negloglike2 <- function(lam, x) {
l = lam*sum(x) - length(x)*log(lam)
return(l)
}
nllv2 <- Vectorize(negloglike2, "lam")
ggplot(data = data.frame(lam = seq(0, 2, by = 0.2)), mapping = aes(x = lam)) +
stat_function(fun = nllv2, args = list(x = 0:10))
И nllv
, и nllv2
дают один и тот же график.