You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言绘制泊松分布对数似然图运行报错如何解决

泊松对数似然图绘制问题修复

报错原因

  • outer()函数参数传递错误:outer()的标准语法是outer(向量X, 向量Y, 运算函数),前两个参数为参与运算的向量,第三个参数才是要执行的函数。你直接将函数传入第二个参数,R尝试将函数(closure类型)转为向量时触发报错。
  • 泊松分布参数lambda取值非法:泊松分布的lambda必须大于0,你设置的范围seq(-10,10,by=1)包含负数和0,后续计算log(lambda)会生成NaN。
  • 函数内变量名笔误:函数内部定义的对数似然变量为logLik(大写L),return语句里写的是loglik(小写l),大小写不匹配会触发对象不存在的报错。

修正后可运行代码

# 生成模拟样本
set.seed(123)
sample <- rpois(50, 1.65)

# 修正后的对数似然计算函数
log_like_graph <- function(lambda){
  N <- length(sample) # 一维样本直接用length取样本量,无需转矩阵
  logLik <- N*log(lambda) - lambda * sum(sample)
  return(logLik)
}
# 向量化函数
log_like_graph <- Vectorize(log_like_graph)

# 设定合理的lambda取值范围(覆盖理论值1.65即可)
lambda_vals <- seq(0.1, 5, by = 0.01)
# 计算对应对数似然值:单参数场景直接调用向量化函数即可,无需使用outer
log_vals <- log_like_graph(lambda_vals)

# 绘制对数似然曲线
plot(lambda_vals, log_vals, type = "l", lwd = 2, col = "darkblue",
     xlab = "lambda", ylab = "对数似然值", main = "泊松分布对数似然曲线")
# 标注极大似然估计位置(泊松分布lambda的MLE就是样本均值)
abline(v = mean(sample), col = "red", lty = 2)
text(mean(sample) + 0.2, max(log_vals) - 2, paste0("MLE = ", round(mean(sample), 2)), col = "red")

如果你需要沿用多参数场景的outer()写法,可以将计算对数似然的代码替换为:

log_vals <- outer(lambda_vals, FUN = log_like_graph)

内容的提问来源于stack exchange,提问作者Wu Jilong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 06:09:02