#' @title Summary_Results
#' @description It generates a summary of the results obtained by the paid MackNet model.
#' @param Cumulative.T Cumulative payments triangle.
#' @param Original.Cumulative.T.Val Upper and lower cumulative payment triangle. This information is needed to obtain the error generated by the paid MackNet model.
#' @param Reservest.D It contains the total reserves sampled by the MackNet model.
#' @param Reservest_1.D It contains the total reserves in t+1 sampled by the MackNet model.
#' @param Payments.D It contains the total following year payments sampled by the MackNet model.
#' @param Reservest.D.Vector It contains the reserves by accident year sampled by the MackNet model.
#' @param Payments.D.Vector It contains the following year payments by accident year sampled by the MackNet model.
#' @param Reservest_1.D.Vector It contains the reserves by accident year sampled by the MackNet model.
#' @param Ultimatest.D.Vector It contains the ultimate cost by accident year sampled by the MackNet model.
#' @param Ultimatest.D It contains the ultimate cost sampled by the MackNet model.
#' @param TrianglesBackup This array contains all the triangles sampled by the MackNet model.
#' @param Simulations Number of triangle samples to be produced by the MackNet model.
#' @return The formula generates the following outputs: \itemize{
#' \item \code{CDR} Claims Development Result distribution function.
#' \item \code{CDR_Convergence} Mean convergence of the Claim Development Result
#' \item \code{Summary} Summary of the results obtained
#' }
#' @import keras
#' @import abind
#' @export
Summary_Results=function(Cumulative.T,Original.Cumulative.T.Val,Reservest.D,Reservest_1.D,Payments.D,Reservest.D.Vector,Payments.D.Vector,
Reservest_1.D.Vector,Ultimatest.D.Vector,Ultimatest.D,TrianglesBackup,Simulations){
#----------------------------------------CDR analisis----------------------------------------#
#CDR analisis
CDR=mean(Reservest.D)-Reservest_1.D-Payments.D
#CDR convergence
Mean.Convergence=Percentile.Convergence=0
for (i in 1:Simulations){
Mean.Convergence[i]=mean(CDR[1:i]);Percentile.Convergence[i]=quantile(CDR[1:i],0.005)
}
#CDR analisis per accident year
Reserve.Mean.AY=apply(Reservest.D.Vector,1,mean); sum(Reserve.Mean.AY)-mean(Reservest.D)
CDR.Mean.AY=apply(Reserve.Mean.AY-Payments.D.Vector-Reservest_1.D.Vector,1,mean)
CDR.SD.AY=apply(Reserve.Mean.AY-Payments.D.Vector-Reservest_1.D.Vector,1,sd)
CDR.Percentile.AY=apply(Reserve.Mean.AY-Payments.D.Vector-Reservest_1.D.Vector,1,quantile,probs=0.005)
#CDR final table
table=rbind(cbind(CDR.Mean.AY,CDR.SD.AY,CDR.Percentile.AY),cbind(mean(CDR),sd(CDR), quantile(CDR,0.005)))
table=as.data.frame(table,row.names = c(1:dim(Cumulative.T)[1],"Total"))
table$Risk=table$CDR.Percentile.AY-table$CDR.Mean.AY
#---------------------------------Reserves and payment analysis------------------------------#
#Reserves and payment analisis per accident year
Reserve.Mean.AY=apply(Reservest.D.Vector,1,mean)
Reserve.Mean.t1.AY=apply(Reservest_1.D.Vector,1,mean)
Payment.Mean.AY=apply(Payments.D.Vector,1,mean)
#Reserves and payments final table
table2=rbind(cbind(Payment.Mean.AY,Reserve.Mean.AY,Reserve.Mean.t1.AY),cbind(mean(Payments.D),mean(Reservest.D),mean(Reservest_1.D)))
Final.Table=cbind(table,table2)
#----------------------------------Individual Backtest result--------------------------------#
Percentiles.Dist=Individual.backtest(TrianglesBackup,Full.Incremental(Original.Cumulative.T.Val))
set.seed(33433);Theoretical=runif(10000)
ks.Individual.Test=c(rep(0,dim(Final.Table)[1]-1),ks.test(Percentiles.Dist,y="punif")$p.value)
Final.Table=cbind(Final.Table,ks.Individual.Test)
#-----------------------------------------LOB Backtest---------------------------------------#
Percentiles.LoB.Backtest=LoB.Backtest(Reservest.D,Reservest.D.Vector,Reserve.t.Vector(Full.Incremental(Original.Cumulative.T.Val)))
Percentiles.LoB.Backtest.Payments=LoB.Backtest(Payments.D,Payments.D.Vector,Payment.Vector(Full.Incremental(Original.Cumulative.T.Val)))
Percentiles.LoB.Backtest.Reserve.t1=LoB.Backtest(Payments.D,Reservest_1.D.Vector,Reserve.t_1.Vector(Full.Incremental(Original.Cumulative.T.Val)))
Risk.Between.Reserve=Final.Table$Risk/Final.Table$Reserve.Mean.AY
Final.Table=cbind(Final.Table,Percentiles.LoB.Backtest,Percentiles.LoB.Backtest.Payments,Percentiles.LoB.Backtest.Reserve.t1,Risk.Between.Reserve)
#--------------------------------------MSE Calculation---------------------------------------#
#The MSE of the predicted reserves and payments is calculated
SE.Reserves=c(((Reserve.Mean.AY-Reserve.t.Vector(Full.Incremental(Original.Cumulative.T.Val))))^2,
((sum(Reserve.Mean.AY)-sum(Reserve.t.Vector(Full.Incremental(Original.Cumulative.T.Val)))))^2)
SE.Payments=c(((Payment.Mean.AY-Payment.Vector(Full.Incremental(Original.Cumulative.T.Val))))^2,
((sum(Payment.Mean.AY)-sum(Payment.Vector(Full.Incremental(Original.Cumulative.T.Val)))))^2)
SE.Reserves.t1=c(((Reserve.Mean.t1.AY-Reserve.t_1.Vector(Full.Incremental(Original.Cumulative.T.Val))))^2,
((sum(Reserve.Mean.t1.AY)-sum(Reserve.t_1.Vector(Full.Incremental(Original.Cumulative.T.Val)))))^2)
Ratio.Reserves=c(((Reserve.Mean.AY-Reserve.t.Vector(Full.Incremental(Original.Cumulative.T.Val)))/Reserve.t.Vector(Full.Incremental(Original.Cumulative.T.Val)))^2,
((sum(Reserve.Mean.AY)-sum(Reserve.t.Vector(Full.Incremental(Original.Cumulative.T.Val))))/sum(Reserve.t.Vector(Full.Incremental(Original.Cumulative.T.Val))))^2)
Ratio.Payments=c(((Payment.Mean.AY-Payment.Vector(Full.Incremental(Original.Cumulative.T.Val)))/Payment.Vector(Full.Incremental(Original.Cumulative.T.Val)))^2,
((sum(Payment.Mean.AY)-sum(Payment.Vector(Full.Incremental(Original.Cumulative.T.Val))))/sum(Payment.Vector(Full.Incremental(Original.Cumulative.T.Val))))^2)
Ratio.Reserves.t1=c(((Reserve.Mean.t1.AY-Reserve.t_1.Vector(Full.Incremental(Original.Cumulative.T.Val)))/Reserve.t_1.Vector(Full.Incremental(Original.Cumulative.T.Val)))^2,
((sum(Reserve.Mean.t1.AY)-sum(Reserve.t_1.Vector(Full.Incremental(Original.Cumulative.T.Val))))/sum(Reserve.t_1.Vector(Full.Incremental(Original.Cumulative.T.Val))))^2)
Final.Table=cbind(Final.Table,SE.Reserves,SE.Payments,SE.Reserves.t1,Ratio.Reserves,Ratio.Payments,Ratio.Reserves.t1)
#----------------------------------Ult MSE Calculation---------------------------------------#
Ultimate = c(apply(Ultimatest.D.Vector,1,mean),sum(apply(Ultimatest.D.Vector,1,mean)))
UltimateVal = c(Original.Cumulative.T.Val[,dim(Original.Cumulative.T.Val)[1]],sum(Original.Cumulative.T.Val[,dim(Original.Cumulative.T.Val)[1]]))
SE.Ult=(Ultimate-UltimateVal)^2
Ratio.Ult=((Ultimate-UltimateVal)/UltimateVal)^2
Percentiles.LoB.Backtest.Ult=LoB.Backtest(Ultimatest.D,Ultimatest.D.Vector,Original.Cumulative.T.Val[,dim(Original.Cumulative.T.Val)[1]])
Final.Table=cbind(Final.Table,SE.Ult,Ratio.Ult,Percentiles.LoB.Backtest.Ult)
#------------------------------------RR MY Calculation---------------------------------------#
RR_MY=c(apply(Reservest.D.Vector-Reserve.Mean.AY,1,quantile,probs=0.995),quantile(Reservest.D,0.995)-mean(Reservest.D))
RR_SD=c(apply(Reservest.D.Vector-Reserve.Mean.AY,1,sd),sd(Reservest.D))
Final.Table=cbind(Final.Table,RR_MY,RR_SD)
return(list(CDR=CDR,CDR_Convergence=Mean.Convergence,Summary=Final.Table))
}
#' @title Summary_Results_Incurred
#' @description It generates a summary of the results obtained by the incurred MackNet model.
#' @param Cumulative.T Cumulative payments triangle.
#' @param Original.Cumulative.T.Val.Incurred Upper and lower incurred cost triangle. This information is needed to obtain the error generated by the paid MackNet model.
#' @param Reservest.D It contains the total reserves sampled by the MackNet model.
#' @param Reservest.D.Vector It contains the reserves by accident year sampled by the MackNet model.
#' @param Ultimatest.D.Vector It contains the ultimate cost by accident year sampled by the MackNet model.
#' @param Ultimatest.D It contains the ultimate cost sampled by the MackNet model.
#' @param Ultimatest_1.D.Vector It contains the ultimate cost in t+1 by accident year sampled by the MackNet model.
#' @param Ultimatest_1.D It contains the ultimate cost in t+1 sampled by the MackNet model.
#' @param TrianglesBackup This array contains all the triangles sampled by the MackNet model.
#' @param Simulations Number of triangle samples to be produced by the MackNet model.
#' @return The formula generates the following outputs: \itemize{
#' \item \code{CDR} Claims Development Result distribution function.
#' \item \code{CDR_Convergence} Mean convergence of the Claim Development Result
#' \item \code{Summary} Summary of the results obtained
#' }
#' @import keras
#' @import abind
#' @export
Summary_Results_Incurred=function(Cumulative.T,Original.Cumulative.T.Val.Incurred,Reservest.D,Reservest.D.Vector,
Ultimatest.D,Ultimatest.D.Vector,Ultimatest_1.D,Ultimatest_1.D.Vector,TrianglesBackup,Simulations){
#----------------------------------------CDR analisis----------------------------------------#
#CDR analisis
CDR=Ultimatest.D-Ultimatest_1.D
#CDR convergence
Mean.Convergence=Percentile.Convergence=0
for (i in 1:Simulations){
Mean.Convergence[i]=mean(CDR[1:i]);Percentile.Convergence[i]=quantile(CDR[1:i],0.005)
}
#CDR analisis per accident year
Reserve.Mean.AY=apply(Reservest.D.Vector,1,mean)
CDR.Mean.AY=apply(Ultimatest.D.Vector-Ultimatest_1.D.Vector,1,mean)
CDR.SD.AY=apply(Ultimatest.D.Vector-Ultimatest_1.D.Vector,1,sd)
CDR.Percentile.AY=apply(Ultimatest.D.Vector-Ultimatest_1.D.Vector,1,quantile,probs=0.005)
#CDR final table
table=rbind(cbind(CDR.Mean.AY,CDR.SD.AY,CDR.Percentile.AY),cbind(mean(CDR),sd(CDR), quantile(CDR,0.005)))
table=as.data.frame(table,row.names = c(1:dim(Cumulative.T)[1],"Total"))
table$Risk=table$CDR.Percentile.AY-table$CDR.Mean.AY
#---------------------------------Reserves and payment analysis------------------------------#
#Reserves and payment analisis per accident year
Reserve.Mean.AY=apply(Reservest.D.Vector,1,mean)
#Reserves and payments final table
table2=rbind(cbind(Reserve.Mean.AY),cbind(mean(Reservest.D)));Final.Table=cbind(table,table2)
#----------------------------------Individual Backtest result--------------------------------#
Percentiles.Dist=Individual.backtest(TrianglesBackup,Full.Incremental(Original.Cumulative.T.Val.Incurred))
set.seed(33433);Theoretical=runif(10000)
ks.Individual.Test=c(rep(0,dim(Final.Table)[1]-1),ks.test(Percentiles.Dist,y="punif")$p.value)
Final.Table=cbind(Final.Table,ks.Individual.Test)
#-----------------------------------------LOB Backtest---------------------------------------#
Percentiles.LoB.Backtest=LoB.Backtest(Reservest.D,Reservest.D.Vector,Original.Cumulative.T.Val.Incurred[,dim(Original.Cumulative.T.Val.Incurred)[1]]-LastDiagonal.Vector(Cumulative.T))
Risk.Between.Reserve=Final.Table$Risk/Final.Table$Reserve.Mean.AY
Final.Table=cbind(Final.Table,Percentiles.LoB.Backtest,Risk.Between.Reserve)
#------------------------------------RR MY Calculation---------------------------------------#
RR_MY=c(apply(Reservest.D.Vector-Reserve.Mean.AY,1,quantile,probs=0.995),quantile(Reservest.D,0.995)-mean(Reservest.D))
RR_SD=c(apply(Reservest.D.Vector-Reserve.Mean.AY,1,sd),sd(Reservest.D))
Final.Table=cbind(Final.Table,RR_MY,RR_SD)
return(list(CDR=CDR,CDR_Convergence=Mean.Convergence,Summary=Final.Table))
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.