我需要以下问题的帮助:
请考虑以下名为negloglike
的R函数,该函数具有两个输入参数:lam
和x
,按此顺序。
使用此函数可以生成对数似然函数在值λ∈(0,2)范围内的图。
negloglike <- function(lam, x) {
l = -sum(log(dexp(x, lam)))
return(l)
}
有人可以帮忙吗?可以用ggplot做这样的事情吗?我一直在尝试使用lam
使用0.2
(例如此处为stat_function
)的设置值来做到这一点:
ggplot(data = data.frame(x = 0), mapping = aes(x = x)) +
stat_function(fun = negloglike, args = list(lam = 0.2)) +
xlim(0,10)
但是plot总是返回一些y值的水平线,而不是返回曲线。
我应该使用其他几何图形吗?甚至是完全不同的软件包?
非常感谢!
答案 0 :(得分:1)
诀窍是在感兴趣的参数上Vectorize
使用功能。
感谢您的提示,请转到对this question投票最多的答案。它仅使用基本图形,因此等效为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
都给出相同的图形。