如何在R中绘制指定的含Gamma函数的微积分函数
R语言定义与绘制该函数的方法
你给出的表达式是自由度为ν的标准学生t分布的概率密度函数,公式标注中的argmin_b前缀疑似笔误,该函数关于b=0对称,在b=0处取最大值,当b趋近于正负无穷时函数值趋近于0,不存在有限的最小值。
下面是具体的实现步骤:
1. 自定义函数表达式
你可以直接按照公式结构写自定义函数,R内置了gamma()计算伽马函数、pi代表圆周率常量、sqrt()计算平方根,直接调用即可:
# 入参:b为自变量,nu为t分布的自由度 custom_t_pdf <- function(b, nu) { numerator <- gamma((nu + 1)/2) denominator <- sqrt(nu * pi) * gamma(nu/2) core_term <- (1 + b^2 / nu) ^ (-(nu + 1)/2) return(numerator / denominator * core_term) }
注:R本身有内置的t分布密度函数
dt(b, df = nu),计算结果和上述自定义函数完全一致,如果你不需要修改公式结构,直接调用内置函数效率更高。
2. 绘制函数曲线
以自由度为3的t分布为例,绘制曲线的代码如下:
# 生成自变量b的取值序列,覆盖-4到4的区间 b_seq <- seq(-4, 4, by = 0.01) # 计算对应函数值 y_values <- custom_t_pdf(b = b_seq, nu = 3) # 绘制基础曲线 plot( x = b_seq, y = y_values, type = "l", # 指定绘制线图 lwd = 2, # 线宽 col = "#2c7fb8", xlab = "b", ylab = "密度值", main = "标准学生t分布概率密度曲线(ν=3)" ) # 可叠加其他自由度的曲线做对比,比如自由度为1的柯西分布 lines(b_seq, custom_t_pdf(b_seq, nu = 1), col = "#d95f02", lwd = 2, lty = 2) # 添加图例 legend("topright", legend = c("自由度ν=3", "自由度ν=1(柯西分布)"), col = c("#2c7fb8", "#d95f02"), lwd = 2, lty = c(1, 2))
如果直接调用内置dt()函数,绘图代码可以简化为:
plot(b_seq, dt(b_seq, df = 3), type = "l", lwd = 2, col = "darkgreen")
内容的提问来源于stack exchange,提问作者VXL963
相关产品推荐
相关产品推荐

