您可以在下面找到泊松分布的对数似然的完整表达式。此外,我使用rpois 模拟了泊松分布中的数据以使用等于 5 的 mu 进行测试,然后使用 optimize 从优化对数似然的数据中恢复它
#set seed
set.seed(777)
#loglikeliood of poisson
log_like_poissson <- function(y) {
n <- length(y)
function(mu) {
log(mu) * sum(y) - n * mu - sum(lfactorial(y))
}
}
# Data simulation: Poisson with lambda = 5
y <- rpois(n=10000, lambda = 5)
# Optimization of the loglikelihood
optimise(log_like_poissson(y),
interval = c(0, 100),
maximum = TRUE)
#$maximum
#[1] 4.994493
#
#$objective
#[1] -22033.2
此代码高度基于Advanced R 的第 10 章,您可以在其中找到有关如何优化上述可能性的广泛讨论。
[已编辑]
对于您问题的图表部分,您可以使用以下代码查看您的对数似然在不同 mu 值下的表现。从图中可以看出,函数的最大值在 mu 等于 5 的值处(如预期的那样)。
library(ggplot2)
values_for_mu<- seq(from=0.05, to = 10 , by =0.05 )
#new loglikelihood (only depends on mu)
log_like_poissson2 <- function(mu) {
n <- length(y)
(log(mu) * sum(y)) - (n * mu) - sum(lfactorial(y))
}
#Evaluate the loglikelihood at different values of mu
values_log_like <- unlist(lapply(values_for_mu,
FUN = log_like_poissson2))
#generate a dataframe to ggplot2
df <- data.frame(values_for_mu, values_log_like)
# Plot
ggplot(df, aes(x=values_for_mu, y=values_log_like)) +
geom_line() + geom_vline(xintercept = 5, linetype="dotted",
color = "red", size=1.5) +
xlab("mu") + ylab("Value of Log-likelihood")