如何将循环生成的分位数点绘制在同一张R语言损失超越曲线中?
解决方案:生成单张损失超越曲线
以下是修正后的R代码,可将所有数据点整合到同一张图表中:
# 模拟复合损失数据:泊松事件次数 × 对数正态单次损失 x <- rpois(10000, 3) * rlnorm(10000, 100, 10) # 定义概率序列(10% 到 100%,步长10%) prob_seq <- seq(0.1, 1, 0.1) # 批量计算对数损失的分位数,无需循环 log_loss_quantiles <- quantile(log(x), prob_seq) # 整理成数据框统一存储 curve_data <- data.frame( 概率 = prob_seq, 对数损失值 = as.numeric(log_loss_quantiles) ) # 绘制带点线的损失超越曲线 plot(curve_data$对数损失值, curve_data$概率, type = "b", xlab = "对数损失值", ylab = "概率", main = "损失超越曲线", pch = 16, col = "#2E86AB")
代码修改说明
- 移除循环,直接用
quantile的向量输入批量计算分位数,效率更高; - 用数据框统一存储概率和对应损失值,避免循环中重复生成独立图表;
- 使用
type = "b"同时绘制数据点和连线,清晰呈现曲线趋势。
风险量化中的技术解释
- 复合损失模型:
rpois(10000, 3)模拟风险事件的发生次数(泊松分布适配低频离散的事件计数场景,比如操作风险事故次数);rlnorm(10000, 100, 10)模拟单次事件的损失金额(对数正态分布天然适配厚尾特征,能准确反映实际风险中大额损失的概率分布),两者相乘生成总损失样本,是保险、金融风控领域常用的损失建模方法。 - 对数转换与分位数:对损失取
log(x)是为了压缩极端大额损失的数值跨度,让分布规律更易观察;quantile(log(x), prob_seq)计算的分位数,对应“某一概率下的损失阈值”——比如prob=0.1对应的分位数,表示有10%的损失(对数后)低于该值,90%的损失高于该值,这正是损失超越曲线的核心数据逻辑。 - 损失超越曲线的价值:这条曲线是风险量化的核心可视化工具,能直观展示不同损失水平对应的发生概率,帮助风险管理者快速判断极端损失的可能性,为经济资本计提、风险限额设定提供数据支撑。
内容的提问来源于stack exchange,提问作者Professor W
相关产品推荐
相关产品推荐

