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

偏态广义误差分布CDF求解(用于QQ图,R数值积分实现问询)

偏态广义误差分布CDF的R数值积分实现

你需要计算Theodossiou提出的偏态广义误差分布的累积分布函数(CDF),该分布的概率密度函数(PDF)已在R中实现,参数及代码如下:

psi <- -0.09547862
m <- 0.1811856
g <- -0.1288893
d <- 0.8029088

c <- (2/(1+exp(-g)))-1
p <- exp(psi)

# 定义偏态广义误差分布的PDF函数
pdf_sged <- function(x) {
  ((d^(1-(1/d)))/(2*p)) * gamma(1/d)^(-1) * exp(-(1/d)*((abs(x-m)^d)/((1+sign(x-m)*c)^(d)*p^(d))))
}

数值积分实现CDF

完全可以通过R内置的integrate()函数实现CDF的数值计算。CDF的定义是PDF从负无穷到目标值x的积分,我们可以将其封装为一个可复用的函数:

# 定义CDF函数
cdf_sged <- function(x) {
  # 对PDF从负无穷到x做数值积分
  integral_result <- integrate(pdf_sged, lower = -Inf, upper = x)
  # 返回积分结果的数值部分
  return(integral_result$value)
}

# 测试:计算x=0处的CDF值
cdf_sged(0)

批量计算与可视化验证

如果需要批量计算多个x值的CDF,可以用sapply()高效处理,还可以绘制曲线验证结果:

# 生成测试用的x取值序列
x_vals <- seq(-2, 2, by = 0.1)
# 批量计算对应CDF值
cdf_vals <- sapply(x_vals, cdf_sged)

# 绘制CDF曲线
plot(x_vals, cdf_vals, type = "l", xlab = "x", ylab = "CDF值", main = "偏态广义误差分布CDF曲线")

逆CDF(分位数函数)的实现

后续要绘制QQ图需要逆CDF,可以通过uniroot()函数求解cdf_sged(q) - p = 0得到对应分位数q:

# 定义逆CDF函数
inv_cdf_sged <- function(p) {
  # 设定求解区间(可根据分布参数调整范围,确保覆盖分位数)
  uniroot(function(q) cdf_sged(q) - p, interval = c(-10, 10))$root
}

# 测试:计算0.5分位数(中位数)
inv_cdf_sged(0.5)

通过上述代码,你可以得到CDF和逆CDF,进而完成数据拟合与QQ图评估的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 23:10:56