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

R语言绘制伽马分布PDF叠加直方图出现报错如何解决

报错原因

curve()函数要求输入的计算表达式必须包含自变量x,你直接传入裸函数名pdf1时,函数没有接收到输入向量,无法生成对应长度的计算结果,就会触发该报错。该问题和函数是否向量化无关,dgamma本身就是支持向量输入的向量化函数,不需要额外调用Vectorize处理。

解决步骤

要实现伽马PDF叠加直方图,需要注意两个要点:一是直方图要切换为密度尺度(默认是频数控尺,和PDF的y轴尺度不匹配);二是curve函数要传入包含自变量x的表达式,叠加时指定add=TRUE。

完整可运行代码如下:

# 1. 准备样本数据
x <- c(200,79,102,60,120,81,34,21,127,98,60,34,50,38,101,31,58,50,52,85,69,47,88,85,120,40,70,80,75,91,14,50,20,45,51,63,65,49,85,20,56,45,54,50,48,104,69,87,76,63,84,60,21,30,28,14,58,200,69,75,28,83,102,104,98,40,56,74,45,40,57,105,75,16,243,63,30,45,70,31,30,107,50,30,75,63,124,69,73,26,131,65,80,26,30,40,165,10,90,46,21,23,80,31,90,120,60,43,145,30,40,18,150,30,45,127)

# 2. 拟合伽马分布,提取参数
gamma.fit <- MASS::fitdistr(x,densfun="gamma")
shape_est <- gamma.fit$estimate[["shape"]]
rate_est <- gamma.fit$estimate[["rate"]]

# 3. 绘制密度直方图
hist(x, freq = FALSE, breaks = 15, col = "lightblue", main = "样本分布与伽马拟合结果", xlab = "观测值", ylab = "密度")

# 4. 叠加伽马分布PDF
curve(dgamma(x, shape = shape_est, rate = rate_est), add = TRUE, col = "red", lwd = 2)

如果你要使用自定义的pdf1函数,只需要把第4步的代码改成如下形式即可(重点是给函数传入自变量x):

pdf1 <- function(x) dgamma(x,shape=shape_est,rate=rate_est)
curve(pdf1(x), add = TRUE, col = "red", lwd = 2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:45:03