Daha önceki yazılarımızda (“BİR AKTÜERDEN: SEN NEYMİŞSİN “R””) Size R Project’in sigorta şirketlerindeki farklı birçok uygulama alanından bahsetmiştik. Bu yazımız ile başlayarak, IBNR hesaplamalarındaki kullanımını Sizinle bir örnek üzerinden paylaşmak istiyoruz. İlk önce standart yöntem üzerinden bir örnek ile giriş yapıp ilerleyen yazılarımızda daha ileri metotların da uygulamalarını sunacağız. Yukarıda belirttiğimiz yazıda, programı bilgisayarınıza nasıl kurabileceğinizi anlatmıştık.
Şimdiki yazımıza R Project için bir hedef klasör belirleyerek başlayalım. Hedef klasör R’nin ilgili dosyaları yükleyeceği klasörü ifade etmektedir. Bunu sağ üst köşedeki “Dosya”/ “Dizin Değiştir” menüsüne girip, ilgili klasörü seçerek kolayca yapabilirsiniz. Artık R, yüklemek istediğiniz her “CSV” ya da “Excel” dosyasını bu klasörden okuyacaktır. Şimdi adım adım komutlar üzerinden ilerleyebiliriz.
Aşağıdaki iki komut ile karşılık hesaplamaları için gerekli tüm fonksiyonları içeren ana paketi bilgisayarınıza indirebilir ve aktive edebilirsiniz.
>install.packages(“ChainLadder”)
>library(ChainLadder)
Daha önce belirlemiş olduğumuz hedef klasörüne kullanmak istediğimiz tüm üçgenleri herhangi bir başlık olmadan “.csv” formatında yerleştirin (R kendi içinde kolon formundaki hasar datasını da üçgen formuna sokacak fonksiyonu barındırmaktadır. Bu işlemi sizinle ayrı bir yazıda paylaşacağız).
Aşağıdaki komutları kullanarak üçgenleri R’a aktarın. Biz bu çalışmada ödenen, muallak ve rücu-sovtaj tahsilatları olmak üzere üç farklı üçgen kullanacağız.
>odenen=read.table(“odenen.csv”,sep=”;”)
>muallak=read.table(“muallak.csv”,sep=”;”)
>rs=read.table(“rs.csv”,sep=”;”)
Bu veriyi yükledikten sonra aşağıdaki komutları kullanarak veriyi modellemeye hazır hale getirebilirsiniz.
>odenen=as.triangle(as.matrix(odenen))
> muallak=as.triangle(as.matrix(muallak))
> rs.inc=as.triangle(as.matrix(rs))
Yüklediğimiz ödeme veya rücu – sovtaj üçgenleri cari ise aşağıdaki fonksiyon ile kümülatif forma sokabilirsiniz.
>odenen.cum=incr2cum(odenen.inc)
Yukarıdaki fonksiyonun tam tersini (Cum2incr) kümülatif üçgenleri cariye çevirmek için de kullanabilirsiniz.
>rs.cum=incr2cum(rs.inc)
Aşağıda göreceğiniz plot() fonksiyonu ile farklı grafikler elde edebilirsiniz.
>plot(ödenen.cum,lattice=TRUE)
Bu örnekte oluşan hasar üçgeni üzerinden çalışacağımızdan, daha önceden yüklediğimiz üç farklı üçgeni aşağıdaki gibi tek bir üçgene çevirebilirsiniz.
>olusan=odenen.cum+muallak-rs.cum
Aşağıdaki ata() fonksiyonu (age-to-age’ in kısaltması) parantez içerisindeki üçgen üzerinden dönemsel gelişim faktörlerini çıkartır. Yeni üçgen üzerinde gelişim katsayılarını analiz edebilirsiniz.
>ata.olusan=ata(olusan)
Plot() fonksiyonu burada da işe yarayacaktır.
>plot(ata.olusan,lattice=TRUE)
chainladder() fonksiyonunu standart zincir merdiven metodunu uygulamak için kullanacağız. Bu fonksiyondaki “delta” alternatifi seçilen gelişim faktörünün nasıl hesaplanacağını belirler, açıklamak gerekir ise; 0 lineer regresyon sonucunu (bir önceki dönem ve bir sonraki dönem oluşan hasar meblağları sabit değer olmayan doğrusal regresyona sokulur ve hesaplanan katsayı seçilen gelişim faktörü olarak kullanılır), 1 ağırlıklı ortalama sonucunu, 2 ise standart ortalama sonucunu verir.
>ch.olusan=chainladder(olusan,delta=1)
Aşağıdaki komut ile hesaplanan gelişim faktörlerini görüntüleyebilirsiniz.
> ch.olusan$Models
Tabi şu ana kadar hiçbir faktör müdahalesinde bulunmadık. Halbuki çoğunlukla faktör elemesi yapıyoruz. Aşağıda göreceğiniz komut ile yeni bir obje oluşturun. “weights” objesi aslında tüm değerleri “ 1” olan yeni bir üçgendir. Yukarıdaki modelimizde hiçbir müdahalede bulunmadığımız için bu şekilde kullanılmıştır.
>weights.yeni=ch.olusan$weights
fix() fonksiyonu ile bu üçgeni açın ve elemek istediğiniz değerlere denk gelen hücreleri 1 yerine 0 yapın. Kısmi eleme yapmak isterseniz 0 ile 1 arasındaki değerleri de kullanabilirsiniz.
>fix(weights.yeni)
Aynı fonksiyonu sadece “weights=weights.yeni” ek argümanı ile tekrar çalıştırın. Artık yeni sonuçlar istediğiniz elemeler yapılmış olarak hesaplanacaktır.
>ch.olusan.yeni=chainladder(olusan,weights=weights.yeni)
pred() fonksiyonu ile nihai oluşah hasarları tahminleyebilirsiniz.
>pred=predict(ch.olusan.yeni)
write.table() fonsiyonunu kullanarak tamamlanmış üçgeni bir csv dosyası olarak kaydedin.
>write.table(pred,”pred.csv”,sep=”;”)
Standart yöntemi elbette ki bir Excel sayfasında da rahatlıkla uygulayabilirsiniz ancak R kullanımına bir giriş yapmak adına çok iyi bir pratik olacağından dolayı bu yöntem ile başlamayı tercih ettik. İlk bakışta programlama dili Sizi korkutmasın. Çoğu komutu otomatik işleyecek şekilde programlayabilirsiniz.
Her seferinde komutları tekrar tekrar yazmamak için “R Studio” programını tavsiye ederiz. “R Studio” yazdığınız kodları saklayan istediğinizde ekleme yaptığınız R ile entegre çalışan kullanıcı dostu bir ara yüzdür.
Şimdiye kadar yazdıklarımızı yeni script ile R-Studio’ya kaydedebilirsiniz. “setwd” komutunun içerisine klasör adresini yapıştırırsanız her seferinde klasör ayarı yapmanıza da gerek kalmaz.
Tek yapmanız gereken aşağıdaki kodları yeni bir scripte yapıştırmanız ve çalıştırmanız olacaktır.
setwd(“XXX”)
install.packages(“ChainLadder”)
library(ChainLadder)
odenen=read.table(“odenen.csv”,sep=”;”)
muallak=read.table(“muallak.csv”,sep=”;”)
rs=read.table(“rs.csv”,sep=”;”)
odenen=as.triangle(as.matrix(odenen))
muallak=as.triangle(as.matrix(muallak))
rs.inc=as.triangle(as.matrix(rs))
odenen.cum=incr2cum(odenen.inc)
rs.cum=incr2cum(rs.inc)
plot(ödenen.cum,lattice=TRUE)
olusan=odenen.cum+muallak-rs.cum
ata.olusan=ata(olusan)
plot(ata.olusan,lattice=TRUE)
ch.olusan=chainladder(olusan,delta=1)
ch.olusan$Models
weights.yeni=ch.olusan$weights
fix(weights.yeni)
ch.olusan.yeni=chainladder(olusan,weights=weights.yeni)
pred=predict(ch.olusan.yeni)
write.table(pred,”pred.csv”,sep=”;”)
Yazar: Primus Inter Pares
Tartışma
Henüz yorum yapılmamış.