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

R语言中密度图与泊松分布预测图X轴起始值无法对齐问题

问题解决:密度图与泊松分布曲线对齐问题

核心问题原因

  1. x轴错位:调用lines(dpois(0:22, ...))时未指定x坐标,R默认用1:length(y)(即1到23)作为x值,而密度图的x范围是0到22,两条曲线的x轴自然无法对齐。
  2. 显示问题:单独绘制dpois结果时,默认x范围是1到23,超出了你设置的xlim=range(0:22)(即0到22),曲线被截断无法显示。
  3. 尺度匹配:密度图是连续核密度估计(PDF),泊松分布返回的是离散概率质量(PMF),前者是单位x区间的概率密度,后者是单个点的概率,直接对比需注意可视化方式的合理性。

修正后的代码

基础对齐版本

先解决x轴错位问题,同时用更适合离散分布的样式绘制泊松曲线:

dens <- density(data)
plot(dens$x, dens$y, type="l", xlab="Value",
     ylab="Density / Probability", ylim=c(0, 0.2), xlim=c(0,22), col=4, lwd=2)
# 显式指定x为0:22,让泊松点的x坐标和数据范围匹配
lines(x = 0:22, y = dpois(0:22, lambda=estimated_lambda), 
      col=2, lwd=2, type="h")
# 添加图例区分曲线
legend("topright", legend=c("数据核密度", "泊松PMF"), 
       col=c(4,2), lwd=2)

更合理的对比方式

因为数据是离散整数,用直方图密度(而非核密度)和泊松PMF对比会更直观:

# 绘制数据的离散直方图(每个bin对应一个整数)
hist(data, breaks = seq(-0.5, 22.5, 1), freq = FALSE, 
     col = "lightblue", xlab="Value", 
     ylab="Density / Probability", ylim=c(0,0.2), xlim=c(0,22))
# 添加核密度曲线作为补充
lines(density(data), col=4, lwd=2)
# 绘制泊松分布的概率竖线
lines(x=0:22, y=dpois(0:22, lambda=estimated_lambda), 
      col=2, lwd=2, type="h")
legend("topright", legend=c("数据直方图密度", "数据核密度", "泊松PMF"),
       col=c("lightblue",4,2), lwd=c(1,2,2))

关键细节说明

  • type="h":绘制竖线而非折线,更符合离散分布PMF的表达形式,清晰展示每个整数点的概率值。
  • breaks = seq(-0.5,22.5,1):让直方图的每个区间刚好覆盖一个整数(如-0.5~0.5对应0),此时freq=FALSE的直方图高度和该整数的概率密度一致,可直接与泊松PMF数值对比。
  • 显式指定x参数:调用lines时不要依赖默认x序列,确保x轴范围和数据完全匹配。

内容的提问来源于stack exchange,提问作者Xascoria Dung

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 21:15:45