Spaces:
Runtime error
Runtime error
File size: 3,131 Bytes
8ed06a5 68ca886 79f9fbf 8ed06a5 a60a352 8ed06a5 238dbc5 96a3404 79f9fbf 7fbd89c 9cfd29b 273ee45 9cfd29b fb7dc9e 9cfd29b 62a7194 9cfd29b de26c0b 9cfd29b de26c0b 9cfd29b de26c0b 9cfd29b de26c0b 9cfd29b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
import streamlit as st
import pandas as pd
import numpy as np
from modelo_risco.modelo_risco_coletivo import *
from util import string_to_list_int, string_to_list_float
import math
st.title('Modelo de Risco Coletivo')
x = string_to_list_int(st.text_input('Valores de 1 sinistro', value="1,2,3"))
px = string_to_list_float(st.text_input('Probabilidades da distribuição Valor de 1 sinistro', value="0.5,0.3,0.2"))
n = string_to_list_int(st.text_input('Quantidade de sinistros', value="0,1,2"))
pn = string_to_list_float(st.text_input('Probabilidades da distribuição Frequência de sinistros',value="0.4,0.3,0.3"))
if len(x) == len(px) and len(n) == len(pn):
if not math.isclose(sum(px), 1.0) or not math.isclose(sum(pn), 1.0):
st.warning('A soma das probabilidades precisa ser igual a 1.0')
else:
df_x = pd.DataFrame(
{
'X': x, 'PX': px,
}
)
df_n = pd.DataFrame({
'N': n, 'PN':pn,
})
st.write(df_x)
st.write(df_n)
modelo = ModeloRiscoCol(df_n['N'], df_n['PN'], df_x['X'], df_x['PX'])
momentos = pd.Series({'E[S]':modelo.esperanca(), 'V[S]': modelo.variancia(), 'Sigma[S]': modelo.desv_pad(), 'CV': modelo.coef_var()}, name='Scol')
st.write(momentos)
option = st.selectbox(
'O que você gostaria de calcular?',
('Prêmio puro', 'Prêmio comercial', 'Prêmio pela aproximação normal', 'Carregamento de segurança'))
st.write('Você selecionou:', option)
if option == 'Prêmio puro':
carreg_seg = st.number_input('Qual o valor do carregamento de segurança:', min_value=0.00, value=0.15)
st.write('carregamento de segurança de ', carreg_seg)
premio = modelo.premio_puro(carreg_seg)
st.write('Prêmio puro =', premio)
elif option == 'Prêmio comercial':
carreg_seg = st.number_input('Qual o valor do carregamento de segurança:', min_value=0.00, value=0.15)
carreg_adm = st.number_input('Qual o valor do carregamento administrativo:', min_value=0.00, value=0.15)
premio = modelo.premio_comercial(carreg_seg, carreg_adm)
st.write('Prêmio comercial =', premio)
elif option == 'Prêmio pela aproximação normal':
alfa = st.number_input('Qual a probabilidade de o sinistro agregado superar o prêmio puro total:', min_value=0.00,
max_value=1.00,value=0.05)
premio = modelo.premio_aprox_normal(alfa)
st.write('Prêmio =', premio)
else:
alfa = st.number_input('Qual a probabilidade de o sinistro agregado superar o prêmio puro total:', min_value=0.00,
max_value=1.00,value=0.05)
carreg_seg = modelo.carreg_seg(alfa)
st.write('Carregamento de segurança =', carreg_seg) |