Muitos que querem saber o quão próximo da realidade está o modelo matemático falam em assertividade, com a ideia de se o modelo está “acertando”. A palavra assertividade vem de “assertus” que significa afirmar. Em Psicologia, é a qualidade de algo (ou alguém) de fazer uma afirmação enfática sobre algo, e por ser uma afirmação, não significa que esteja correta ou errada, apenas que é defendida fortemente por uma pessoa.
Note que “assertividade” não é um termo originalmente da área de Estatística, portanto não tem uma definição formal matemática para ser quantificado (nota: a palavra “acertividade” não existe). Mas é possível fazer uma definição informal de um índice que quantifique o acerto de uma medida prevista com relação ao valor observado. Segue uma interpretação para esse conceito convertida em fórmulas.
Suponha a seguinte tabela com dados aleatórios, onde as colunas apresentam os valores que foram previstos para aquele mês e os valores que foram observados realmente para aquele mesmo mês. As assertividades foram calculadas conforme segue.
Considerando o valor observado em um determinado período de uma grandeza como 100%, descubra qual é o porcentual correspondente do valor previsto com relação ao observado através de uma regra de três:
Observado - 100% Previsto - x x = (Previsto/Observado) x 100%
Quanto mais próximo de 1 (ou 100%), mais próximos estão os valores previstos dos observados. Também pode-se inferir que:
– Se a razão entre o valor previsto e o observado for maior que 1 (ou seja, x for maior que 100%), a previsão está superestimando, pois o valor observado é menor que o previsto;
– Se a razão entre o valor previsto e o observado for menor que 1 (ou seja, x for menor que 100%), a previsão está subestimando, pois o valor observado é maior que o previsto;
Note que essa análise tem seus prós e contras. É possível avaliar quantitativamente se a previsão está acima ou abaixo do valor observado, mas valores acima de 100% podem soar estranhos, pois se está falando de acerto, como é possível “acertar acima de 100%”? Para eliminar esse tipo de interpretação, considere a seguinte regra:
– Se o valor observado for menor que o previsto, calcular a razão como Observado/Previsto; caso contrário, calcular como Previsto/Observado. Em fórmula para planilha, seria algo como “=SE(B2<C2;B2/C2;C2/B2)”, onde o valor observado é B2 e o previsto é C2.
Dessa forma, temos uma interpretação mais restrita, porém mais objetiva: quanto mais próximo o valor estiver de 1 (ou 100%), melhor a previsão. Uma vantagem desse segundo método é que, no caso de ser calculada uma média, não ocorre uma “compensação” de subestimativas e superestimativas. No primeiro método, a média entre valores acima de 1 e abaixo de 1 resultam em um valor próximo de 1, dando a falsa impressão de que as previsões, em média, estão boas.
Veja mais sobre Estatística clicando no link.
Segue uma rotina em shell script para baixar os dados observados e previstos, assim como calcular a assertividade. A rotina em python executa a escolha automaticamente de um menu HTML em um link da internet e salva os dados impressos em arquivo CSV – veja o script e mais detalhes no post sobre python. Já os dados de previsão estão em um banco de dados Postgres, sendo baixados através do comando “psql” executado em um servidor através da rotina “select_prev.sql” (apresentada na sequência). Depois, é calculada a assertividade, sendo os valores gravados em arquivo CSV e plotados em um gráfico como uma figura formato PNG – veja o script e mais detalhes no post Arquivos e gráficos em R. Por último, é criado um relatório em LaTeX com capa, metodologia, gráfico e tabelas – maiores detalhes no post sobre LaTeX.
#!/bin/bash ## Script para fazer assertividade echo "Atualizar dados observados - Baixando do site..." python get_obs.py >> obs.csv # Apagar linhas duplicadas, caso sejam incluídos dados que já tinha awk '!a[$0]++' obs.csv > obs_temp.csv mv obs_temp.csv obs.csv echo "Copiando dados de previsão de porcentagem com relação à MLT corrigida..." psql -h $host -U $user -W $dbname -f select_prev.sql sshpass -p "SENHA" scp user@pc:/path/prev.csv . echo "Calculando assertividades e fazendo gráfico..." Rscript assertividade.R echo "Criando relatório..." sed -f pt2tex relatorio.tex > relatorio_assert.tex pdflatex relatorio_assert.tex
O script “select_prev.sql” é composto de uma só linha que pesquisa no banco de dados os valores previstos e calcula uma média (AVG):
COPY (SELECT id_est,data_previsao,AVG(dados) as avg_prev FROM schema.dados_estacoes GROUP BY id_est,data_previsao ORDER BY data_previsao,id_est) TO '/path/prev.csv' WITH DELIMITER ',' CSV HEADER;
One comment