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)