Spaces:
Runtime error
Runtime error
| 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) |