27 de setembro de 2024

Introdução

Objetivo

  • O objetivo do curso é apresentar uma série de funções e aplicações computacionais presentes no dia a dia de trabalho de um atuário e profissionais que venham a trabalhar com cálculo de risco.

  • O curso vai abordar tópicos básicos de manipulação e análise de bases de dados no R, juntamente com as principais funções para aplicações de cálculos de risco, matemática atuarial e tarifação de seguros.

  • Pré-requisitos: Técnicas Atuariais I

Informações

Site: http://www.est.ufmg.br/~thaispaiva/MetComp/

  • informações gerais;
  • cronograma atualizado;
  • materiais de aula (slides, arquivos de código, etc.).

Moodle: Turma TOPICOS ESPECIAIS EM ATUARIA - TA

  • anúncios e comunicação;
  • entrega de atividades.

Bibliografia

  • Charpentier, A. (Ed.). (2014). Computational Actuarial Science with R. CRC Press.

  • Hothorn, T., & Everitt, B. S. (2014). A Handbook of Statistical Analyses using R. CRC press.

Avaliação

Atividade Nota
Participação 10 pts
Listas semanais 50 pts
Trabalho Final 40 pts

R para Atuária?

Por que usar R

  • R é um software livre e open-source.

  • Isso faz com que o R possa ser instalado gratuitamente na maioria dos computadores e servidores.

  • Por ser independente do sistema operacional e open-source, é a linguagem ideal para pesquisa reproduzível.

  • E porque atuários devem usar o R?

    • R permite que seus usuários façam análises complexas sem saber a fundo os detalhes de sistemas computacionais.

Métodos Computacionais para Atuária

  • Para ilustrar a importância de métodos computacionais para atuária, vamos considerar um exemplo:

    • Suponha que você precise calcular o quantil 99,5% de uma soma aleatória de indenizações (popular entre atuários que precisam calcular Value-at-Risk).

    • Do ponto de vista probabilístico, precisamos encontrar, para todo \(s \in \mathbb{R}\):

\[ F(s) = \mathbb{P}(S \leq s), \mbox{ onde }\,\, S = \sum_{i=1}^N X_i \]

Exemplo - Soma de Indenizações

  • Sob independência, podemos usar uma fórmula para a convolução:

\[ F(s) = \sum_{n=0}^{\infty} F_X^{*n}(s) \,.\, \mathbb{P}(N=n) \]

  • Precisamos estimar:
    1. a distribuição das indenizações \(X_i\);
    2. e a distribuição do número de sinistros \(N\).

Exemplo - Soma de Indenizações

  • Vamos simular uma amostra de 200 indenizações:
# fixar a semente
set.seed(1)
# gerar uma amostra de tamanho 200
X = rexp(200, rate=1/100)
head(X)
## [1]  75.51818 118.16428  14.57067  13.97953  43.60686 289.49685
  • Média?
mean(X)
## [1] 99.99842
  • Vamos supor que essas são as nossas observações.

Exemplo - Soma de Indenizações

  • Vamos estimar a distribuição dos \(X_i's\).

  • Uma distribuição razoável para indenizações é a Gama(\(\alpha\),\(\beta\)).

  • Um método para encontrar \(\hat{\alpha}\) e \(\hat{\beta}\) é resolvendo as equações normais abaixo: \[ \log{\hat{\alpha}} - \frac{\Gamma'(\hat{\alpha})}{\Gamma(\hat{\alpha})} - \log{\bar{X}} + \overline{\log{X}} = 0 \] \[\hat{\beta} = \frac{\hat{\alpha}}{\bar{X}} \]

Exemplo - Soma de Indenizações

# equação em função de x=alfa
f = function(x){
  log(x) - digamma(x) - log(mean(X)) + mean(log(X))
}

# encontrar a raiz da equação
alpha = uniroot(f, interval = c(1e-8,1e8))$root
alpha # estimador para alfa
## [1] 1.308995
beta = alpha/mean(X) # estimador para beta
beta
## [1] 0.01309016

Exemplo - Soma de Indenizações

  • Com os valores de \(\hat{\alpha}\) e \(\hat{\beta}\), temos uma distribuição estimada para as indenizações \(X_i\).

\[X_i \sim Gamma (\hat{\alpha}, \hat{\beta}) \]

  • Para o número de sinistros, vamos assumir que \[N \sim Poisson(\lambda = 100) \]
  • Agora, precisamos calcular o quantil 99,5% da soma aleatória \(S=\sum_{i=1}^N X_i\). Isso pode ser feito facilmente de maneira computacional.

Exemplo - Soma de Indenizações

  • Uma maneira é calcular numericamente (para um número fixo de termos) a fórmula da convolução:

\[ F(s) = \mathbb{P}(S \leq s) = \sum_{n=0}^{\infty} F_{X}^{*n}(s) \,.\, \mathbb{P}(N=n) \]

  • O segundo termo é a função de probabilidade da Poisson.

Exemplo - Soma de Indenizações

  • Função para calcular a distribuição acumulada de \(S\):
# função da distribuição acumulada de S
F = function(x, lambda=100, nmax=1000){
  n = 0:nmax
  return( sum(pgamma(x, n*alpha, beta)*dpois(n, lambda)) )
}
  • Agora precisamos encontrar \(x\) tal que \(F(x)=0.995\) (ou equivalentemente encontrar a raiz da função \(F(x)-0.995=0\)).
# encontrando o quantil .995
uniroot(function(x) F(x)-.995, c(1e-8,1e8) )$root
## [1] 13654.43

Exemplo - Soma de Indenizações

  • Isso quer dizer que, com os valores estimados de \(\hat{\alpha}=\) 1.31, \(\hat{\beta}=\) 0.01, e assumindo \(\lambda=100\), temos um quantil estimado para a soma aleatória das indenizações.

\[\mathbb{P} \left( S = \sum_{i=1}^N X_i \leq 13654.43 \right) = 0.995 \]

Exercícios

Estendendo o exemplo

  1. Repetir o exemplo da aula, mudando o valor da semente.

  2. Você pode mudar também o tamanho da amostra e a média que usamos para gerar as primeiras observações e estimar \(\hat{\alpha}\) e \(\hat{\beta}\). Veja o que muda nas estimativas dos parâmetros.

  3. Repita os passos para encontrar o novo valor do quantil.

    1. O que acontece se mudarmos o valor de \(\lambda\)?
    2. O que acontece se aumentarmos o valor de nmax?

A linguagem R

A linguagem R

  • R é uma linguagem para manipulação de dados, análise estatística e visualização gráfica.

  • R foi baseado no ambiente S (Statistics), criado na década de 70.

  • R é uma linguagem interpretada (interpreted language): as expressões digitadas no console são executados imediatamente pelo interpretador. Por exemplo, se você digitar 2+3 na linha de comando, o computador irá retornar 5.

A linguagem R

  • R é uma linguagem orientada a objetos (object-oriented language):

    • são criados objetos (veremos mais detalhes sobre eles nas próximas aulas) que contém informações úteis e que podem ser chamados por outras funções;
    • por exemplo, quando ajustamos um modelo de regressão no R com a função lm (Linear Models), a função retorna um objeto que contém várias informações (por exemplo, os coeficientes estimados \(\hat{\beta}\), os resíduos \(\hat{e}\), a matriz de variância estimada \(var(\hat{\beta})\), etc.).

Vetores e Matrizes

  • Os objetos mais usados no R são vetores. Eles podem conter números inteiros, números reais, resultados de um teste lógico (TRUE-FALSE).

  • Eles podem ser usados em expressões aritméticas, onde as operações são feitas elemento a elemento:

    por exemplo, o comando a*b irá retornar um vetor com os elementos \([a_i \cdot b_i]\).

  • Matrizes são a extensão bidimensional dos vetores.

Vetores em Cálculos Atuariais

  • Em aplicações de Ciências Atuariais, várias quantidades podem ser escritas como vetores ou matrizes.

    • Por exemplo, a probabilidade que uma pessoa de idade \(x\) irá sobreviver \(k\) anos é denotada por \({}_{k}p_x\) (função de \(x\) e \(k\) inteiros), e pode ser armazenada em uma matriz p.

Vetores em Cálculos Atuariais

  • Suponha que queremos calcular a expectativa de vida em anos inteiros, dada por:

    \[ e_x = \sum_{k=1}^{\infty} {}_{k}p_x\]

  • Com a matriz p, basta fazer:

life.exp = function(x){
  sum(p[1:nrow(p),x])
}

R para Ciências Atuariais

  • Vários cálculos do cotidiano de um atuário, como precificação de seguros e cálculo de reservas, são feitos baseados em dados passados para criar modelos para descrever o comportamento futuro (predictive modelling).

  • O objetivo é inferir dos dados as características para melhor explicar o risco e calcular o prêmio para diferentes segurados, ou calcular reservas para diferentes tipos de sinistros.

  • Nesse curso, vamos aprender como calcular essas quantidades usando o R.

Pacotes do R

  • Um pacote é um conjunto de funções (incluindo arquivos de ajuda e bancos de dados) para fazer algumas operações específicas.

  • O R já vem com alguns pacotes carregados por default:

getOption("defaultPackages")
## [1] "datasets"  "utils"     "grDevices" "graphics"  "stats"     "methods"
  • Para ver todos os pacotes instalados:
(.packages(all.available = TRUE))

Pacotes do R

  • Para instalar outros pacotes de um repositório na internet:
install.packages("quantreg", dependencies=TRUE)
  • A opção dependencies=TRUE significa que vai instalar também os outros pacotes que forem usados pelas funções do pacote quantreg.

  • Você só precisa instalar o pacote uma vez. Mas precisa carregá-lo toda vez que for usar! Para isso, você pode usar qualquer um dos comandos:

library(quantreg)
require(quantreg)

Exercício

  • Para a próxima aula:

    1. Revisar os conceitos da aula de hoje;

    2. Instalar (ou atualizar) a versão mais recente do R e RStudio (links na seção Ferramentas do site).

    3. Fazer os exercícios da primeira parte da aula.