######################################################################### ### Extremwerttheorie - Übungsblatt 6 ### ### SS 2017 Dr. Jürgen Kampf ### ######################################################################### ### Aufgabe 2: Pareto-Ansatz und Dänische Feuerversicherung ########################################################### # Teil a) # Laden der Daten library(evir) data(danish) # Log-Likelihood-Funktion Variante 1: Von Hand LLP=function(gamma, beta, threshold){ llsum=0 if(beta<0){return(-50000)} # Unzulässiges Argument => gebe sehr niedrigen Wert zurück excess=(danish-threshold)[danish>threshold] for(z in excess){ if(gamma==0){ llsum = llsum - log(beta) - z/beta } else{ if( 1+gamma*z/beta < 0 ){return(-50000)} # Unzulässiges Argument => gebe sehr niedrigen Wert zurück else{ llsum= llsum -log(beta) - (1+1/gamma)* log(1+gamma*z/beta) }} }# for z return(llsum)} # Log-Likelihood-Funktion Variante 2: Mit Hilfe des evir-Pakets LLP=function(gamma, beta, threshold){ llsum=0 if(beta<0){return(-50000)} # Unzulässiges Argument => gebe sehr niedrigen Wert zurück excess=(danish-threshold)[danish>threshold] for(z in excess){ if( 1+gamma*z/beta < 0 ){return(-50000)} # Unzulässiges Argument => gebe sehr niedrigen Wert zurück else{ llsum= llsum +log(dgpd(z, xi=gamma, beta=beta)) } }# for z return(llsum)} #Vorbereitung für das Optimieren: Umformatieren NLLP=function(args,threshold){ return(-LLP(args[1],args[2],threshold)) } #Optimierung optim(par=c(1,100), fn=NLLP, threshold=1.0) MLE=optim(par=c(1,100), fn=NLLP, threshold=1.0)$par # Teil b) #QQ-Plot len=length(danish) p=(1:len)/(len+1) plot( qgpd(p, xi=MLE[1], beta=MLE[2]), sort(danish-1.0)) abline(a=0,b=1) # Erweiterung: Da sich sehr viele Daten in der linken unteren Ecke des Plots ansammeln, # logarithmieren wir beide Achsen plot( log(qgpd(p, xi=MLE[1], beta=MLE[2])), log(sort(danish-1.0))) abline(a=0, b=1) # Wir sehen, dass die Verteilung der Exzesse gut durch eine verallgemeinerte Pareto-Verteilung # beschrieben wird.