R语言如何在日收益率直方图上正确绘制广义双曲分布拟合线
刻度不匹配核心原因
hist()函数默认绘制频数直方图,Y轴为样本出现次数,而ghyp包的lines()方法默认输出概率密度值,两者Y轴量级完全不同,是显示异常的主要原因。- 现有代码中直方图和拟合使用的数据源不一致(直方图用
df$dataset.d.return.aex,拟合用returns[,"d.return.aex"]),也可能导致曲线分布和直方图偏移。
正确实现方案
首先绘制密度刻度的直方图,将Y轴统一为概率密度维度,再绘制拟合曲线即可:
# 加载ghyp包 library(ghyp) # 1. 绘制密度型直方图,freq=FALSE指定Y轴为概率密度,xlim匹配你定义的x.grid范围 hist(df$dataset.d.return.aex, breaks=100, main='daily returns', freq = FALSE, xlim = c(-0.05, 0.05)) # 2. 统一使用直方图的数据源拟合对称广义双曲分布 ghypuv <- fit.ghypuv(data = df$dataset.d.return.aex, symmetric = TRUE) # 3. 绘制拟合分布曲线 lines(ghypuv, col="blue", lwd = 2)
自定义精度绘制方案(可选)
如果需要自定义曲线的采样精度,可以手动计算密度值再绘制,可控性更高:
# 你提前定义的采样网格 x.grid <- seq(-0.05,to=0.05,by=0.001) # 计算对应网格点的广义双曲分布密度值 ghyp_density <- dghyp(x.grid, object = ghypuv) # 绘制自定义精度的拟合曲线 lines(x.grid, ghyp_density, col = "red", lwd = 2, lty = 2)
内容的提问来源于stack exchange,提问作者Tobias
相关产品推荐
相关产品推荐

