R语言对巨灾风险下的再保险合同定价研究案例:广义线性模型和帕累托分布Pareto distributions分析

简介: R语言对巨灾风险下的再保险合同定价研究案例:广义线性模型和帕累托分布Pareto distributions分析

该示例对1900 -2005年间的“ 美国标准化飓风损失 ”数据集进行研究(2008),我们使用了广义线性模型和帕累托分布Pareto distributions分析。该数据集以xls格式提供,首先我们来导入它,

数据导入和清理

1. > library(gdata)
2. > db=read.xls(data.xls",sheet=1)

excel电子表格的问题在于某些列可能具有预先指定的格式(例如,损失为000,000,000格式)

1. > tail(db)
2. Year Hurricane.Description State Category Base.Economic.Damage
3. 202 2005                 Cindy    LA        1          320,000,000
4. 203 2005                Dennis    FL        3        2,230,000,000
5. 204 2005               Katrina LA,MS        3       81,000,000,000
6. 205 2005               Ophelia    NC        1        1,600,000,000
7. 206 2005                  Rita    TX        3       10,000,000,000
8. 207 2005                 Wilma    FL        3       20,600,000,000
9. Normalized.PL05 Normalized.CL05  X X.1
10. 202     320,000,000     320,000,000 NA  NA
11. 203   2,230,000,000   2,230,000,000 NA  NA
12. 204  81,000,000,000  81,000,000,000 NA  NA
13. 205   1,600,000,000   1,600,000,000 NA  NA
14. 206  10,000,000,000  10,000,000,000 NA  NA
15. 207  20,600,000,000  20,600,000,000 NA  NA

要获取我们可以使用的格式的数据,考虑以下函数,

1. > stupidcomma = function(x){
2. + x=as.character(x)
3. + for(i in 1:10){x=sub(",","",as.character(x))}
4. + return(as.numeric(x))}

然后将这些值转换为数字,

1. > base=db[,1:4]
2. > base$Base.Economic.Damage=Vectorize(stupidcomma)(db$Base.Economic.Damage)
3. > base$Normalized.PL05=Vectorize(stupidcomma)(db$Normalized.PL05)
4. > base$Normalized.CL05=Vectorize(stupidcomma)(db$Normalized.CL05)

从现在开始,这是我们将使用的数据集,

1. > tail(base)
2. Year Hurricane.Description State Category Base.Economic.Damage
3. 202 2005                 Cindy    LA        1             3.20e+08
4. 203 2005                Dennis    FL        3             2.23e+09
5. 204 2005               Katrina LA,MS        3             8.10e+10
6. 205 2005               Ophelia    NC        1             1.60e+09
7. 206 2005                  Rita    TX        3             1.00e+10
8. 207 2005                 Wilma    FL        3             2.06e+10
9. Normalized.PL05 Normalized.CL05
10. 202        3.20e+08        3.20e+08
11. 203        2.23e+09        2.23e+09
12. 204        8.10e+10        8.10e+10
13. 205        1.60e+09        1.60e+09
14. 206        1.00e+10        1.00e+10
15. 207        2.06e+10        2.06e+10

数据探索

我们可以直观地看到1900年至2005年的207次飓风的损失(这里的x轴不是时间,是损失的指数)

> plot(base$Normalized.PL05/1e9,type="h",ylim=c(0,155))

 

通常,计算保险合同的纯保费时有两个部分。索赔数量(或此处的飓风)以及每项索赔的个人损失。我们已经看到了个人损失,现在让我们集中讨论年度频率。

1. > db[88:93,]
2. years counts
3. 88  2003      3
4. 89  2004      6
5. 90  2005      6
6. 91  1902      0
7. 92  1905      0
8. 93  1907      0

平均而言,我们每年大约遭受2次(主要)飓风,

1. > mean(db$counts)
2. [1] 1.95283

广义线性模型预测

在预测模型中(此处,我们希望为2014年的再保险合同定价),我们可能需要考虑飓风发生频率的某些可能趋势。我们可以考虑用glm预测线性趋势或指数趋势

我们可以绘制这三个预测,并预测2014年(主要)飓风的数量,

1. constant   linear exponential
2. 126  1.95283 3.573999    4.379822
3. > points(rep((1890:2030)[126],3),prediction,col=c("black","red","blue"),pch=19)

 

观察到改变模型将改变纯粹的溢价:如果预测不变,我们预计飓风将少于2,但是随着指数趋势的发展,我们预计将超过4。

这是预期的频率。现在,我们应该找到一个合适的模型来计算再保险条约的纯保费,并具有(高)免赔额和有限(但大)赔付额。合适的模型是一个帕累托分布(见Hagstrœm(1925年)。

估计帕累托分布尾部指数

 

显然,主要飓风造成的损失惨重。

现在,考虑一家拥有5%市场份额的保险公司。我们将考虑\ tilde Y_i = Y_i / 20。损失如下。考虑一个再保险条约,其免赔额为2(十亿),有限承保范围为4(十亿),

 

对于我们的帕累托模型,仅考虑5亿美元以上的损失,

1. xi      beta
2. 0.4424669 0.6705315

八分之一的飓风达到了该水平

[1] 0.1256039

计算再保险合同的预期价值

鉴于损失超过5亿,我们现在可以计算再保险合同的预期价值,


现在,我们预计每年的飓风会少于2

1. > predictions[1]
2. [1] 1.95283

每个飓风给我们的保险公司带来超过5亿的损失的机率是12.5%,

1. > mean(base$Normalized.PL05/1e9/20>.5)
2. [1] 0.1256039

并假设飓风造成的损失超过5亿美元,那么再保险公司的预期还款额(百万)

1. > E(2,6,gpd.PL[1],gpd.PL[2])*1e3
2. [1] 330.9865

所以再保险合同的纯保费就是

1. [1] 81.18538

覆盖40亿,超过2个。

相关文章
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
12天前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
37 3
|
2月前
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
R语言在数据科学中的应用实例:探索与预测分析
【8月更文挑战第31天】通过上述实例,我们展示了R语言在数据科学中的强大应用。从数据准备、探索、预处理到建模与预测,R语言提供了完整的解决方案和丰富的工具集。当然,数据科学远不止于此,随着技术的不断发展和业务需求的不断变化,我们需要不断学习和探索新的方法和工具,以更好地应对挑战,挖掘数据的潜在价值。 未来,随着大数据和人工智能技术的普及,R语言在数据科学领域的应用将更加广泛和深入。我们期待看到更多创新的应用实例,为各行各业的发展注入新的动力。
|
6月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
6月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为
|
3月前
|
数据采集 存储 数据可视化
R语言时间序列分析:处理与建模时间序列数据的深度探索
【8月更文挑战第31天】R语言作为一款功能强大的数据分析工具,为处理时间序列数据提供了丰富的函数和包。从数据读取、预处理、建模到可视化,R语言都提供了灵活且强大的解决方案。然而,时间序列数据的处理和分析是一个复杂的过程,需要结合具体的应用场景和需求来选择合适的方法和模型。希望本文能为读者在R语言中进行时间序列分析提供一些有益的参考和启示。
|
3月前
|
资源调度 数据挖掘
R语言回归分析:线性回归模型的构建与评估
【8月更文挑战第31天】线性回归模型是统计分析中一种重要且实用的工具,能够帮助我们理解和预测自变量与因变量之间的线性关系。在R语言中,我们可以轻松地构建和评估线性回归模型,从而对数据背后的关系进行深入的探索和分析。
|
3月前
|
机器学习/深度学习 数据采集
R语言逻辑回归、GAM、LDA、KNN、PCA主成分分类分析预测房价及交叉验证
上述介绍仅为简要概述,每个模型在实施时都需要仔细调整与优化。为了实现高度精确的预测,模型选择与调参是至关重要的步骤,并且交叉验证是提升模型稳健性的有效途径。在真实世界的房价预测问题中,可能还需要结合地域经济、市场趋势等宏观因素进行综合分析。
67 3
|
6月前
|
数据采集 数据可视化
利用R语言进行因子分析实战(数据+代码+可视化+详细分析)
利用R语言进行因子分析实战(数据+代码+可视化+详细分析)

热门文章

最新文章