Previsão de risco de fogo em Vegetação
Aplicação de modelos de machine learning para prever o risco de queimadas e de incêndios no Brasil
Análise Exploratória de Dados sobre Queimadas
Experimento, em ciência de dados, para prever o risco de queimadas e de incêndios no Brasil
Entendimento (Insights) sobre o risco de queimadas e de incêndios no Brasil a partir da aplicação de modelos de aprendizado de máquina (Machine Learning)
Experimento de aplicação de modelos de machine learning em base de dados do Programa Queimadas / Inpe para entendimento sobre o risco de fogo no Brasil
Sumário
- Descrição das variáveis
- Análise Exploratória dos dados
-Aplicando Imputação em Valores Missing Usando Método PMM (Predictive Mean Matching)-Treinamento do modelo de regressão linear n1-Treinamento do modelo de regressão linear n2-Treinamento do modelo de regressão linear n3-Treinamento do modelo de regressão linear n4Introdução
Em meados de 2021, quando teve início a segunda temporada do Programa de Mentoria entre Alunos da DSA, a imprensa destacava a liderança do Brasil no ranking de queimadas da América do Sul e a crescente propagação de incêndios em áreas florestais pelo mundo. A escolha do tema deste projeto foi reforçada pelo registro, em 2020, se considerada a década que se encerrava, de recorde brasileiro do número de queimadas: 222.797 focos.
Pesquisa do MapBiomas revela que os incêndios já afetaram - contribuindo para o risco de extinção - 85% das espécies e dos animais na Amazônia. Todos os anos, o Brasil queima uma área superior à Inglaterra. Além disso, nos últimos 36 anos, 85% da área queimada estavam na Amazônia e no Cerrado. O país ainda está entre as dez primeiras posições no ranking dos países com maior emissão de gases do efeito estufa. Face aos alertas de especialistas e ambientalistas acerca dos impactos já verificados no clima e na biodiversidade, um campo propício à aplicação de ferramentas de ciência de dados e de machine learning foi identificado ao ser vislumbrada a tendência de aumento das queimadas e dos incêndios, seja em escala, seja em emissão de CO2.
A hipótese de trabalho lançada baseia-se no pressuposto de que indicadores de degradação ambiental podem auxiliar na criação de políticas balizadas pelo princípio do desenvolvimento econômico sustentável. Acredita-se que, por seu potencial de subsídio para análises geoeconômicas (portanto, ligados a aspectos geográficos e a aspectos socioeconômicos), esses instrumentos de avaliação e de monitoramento podem gerar insights para a elaboração de ações de proteção ao meio ambiente.
Entre as plataformas mapeadas de dados abertos ligados ao meio ambiente, optou-se pela Programa Queimadas, portal de monitoramento de focos de incêndio e queimadas disponibilizado pelo Instituto Nacional de Pesquisas Espaciais (Inpe). A partir da API disponível no portal, foi construído um fluxo de trabalho automatizado que, implementado em duas etapas, permitiu a geração da base de dados amostral utilizada nos experimentos propostos:
- ETAPA 1: EXTRAÇÃO diária, em dois horários (06:00 e 18:00), de dados da web.
- ETAPA 2: ATUALIZAÇÃO do diretório, salvando os dados capturados em arquivo.csv.
O projeto foi disponibilizado no diretório dsa2021 da plataforma Github que, além da vantagem da gratuidade para o armazenamento, possibilitou a implementação de fluxo de trabalho colaborativo integrado ao sistema de versionamento Git. Foi considerada ainda a facilidade de apresentação, para acesso público, dos resultados ao final do projeto.
A análise exploratória da base de dados amostral levou, a princípio, à investigação da natureza técnica de duas variáveis - riscofogo.
O homem usa o fogo desde o início da era agrícola, como forma de limpar o terreno e preparar o plantio. A queima incorpora ao solo, nutrientes contidos na vegetação nativa e favorece o desenvolvimento de novas culturas.
Mas o material proveniente da queima da vegetação, deve ser prontamente incorporado ao solo para não haver perdas e erosão por conta das chuvas.
O fogo pode acontecer por causas naturais como raios ou pela ação do homem. O fogo controlado e em áreas delimitadas ainda é usado como forma de manejo em diversas culturas.
Quando o fogo acontece de maneira descontrolada, os chamados incêndios florestais, este causa grandes impactos negativos como a destruição da floresta, morte de animais silvestres, aumento da poluição do ar, prejuízos à saúde, aumento de gases de efeito estufa, entre outros.
Temos acompanhado a ocorrência de vários focos de incêndio, ocorrendo em biomas como o Cerrado e a Amazônia.
Esse estudo tenta prever através do uso de aprendizado de máquina, analisando variáveis, o Risco Fogo.
A frp (Energia Radiativa do Fogo) – ao sugerir que elas poderiam ter papel central na estimação e na compreensão da natureza do fenômeno estudado. Relativa ao Risco de Fogo ou Risco de Fogo Meteorológico, a primeira está associada ao cálculo, sob a perspectiva meteorológica, da suscetibilidade da vegetação para a queimada e para o incêndio. O cálculo do Risco de Fogo está ligado a outras variáveis ambientais, como a precipitação, a temperatura e a umidade relativa do ar.
Já a Energia Radiativa do Fogo (FRP) mede, por unidade de tempo, a energia radiante emitida na queima da vegetação. A estimativa do total de biomassa queimada é feita integrando a dimensão temporal da FRP à Energia Radiativa do Fogo (FRE, do inglês Fire Radiative Energy). Esta representa a radiação eletromagnética transmitida pelo fogo, durante o ciclo de vida da queimada.
O indício da importância do Risco de Fogo – associado à Energia Radiativa do Fogo – levou à formulação da pergunta-problema e à definição do objetivo que nortearam os experimentos.
- PERGUNTA-PROBLEMA: Como os resultados obtidos nos experimentos de aplicação de modelos de machine learning permitem insights ligados à predição do Risco de Fogo?
- OBJETIVO: Aplicar modelos de machine learning em base de dados amostral extraída do Projeto Queimadas/Inpe para obter insights que possam, futuramente, embasar ações de proteção ao meio ambiente.
A utilização da linguagem R para o desenvolvimento das etapas de exploração dos dados e aplicação dos modelos de machine learning se deu pela experiência prévia da equipe. Como o dataset foi descrito como pequeno, optou-se pela linguagem R que tem como vantagem ser gratuita e open source, estando disponível um grande volume de pacotes para análise estatística e para aplicação de modelos de machine learning.
2. Descrição das variáveis
A importação do arquivo Focos_2021-06-26_2021-06-27.csv - coletada em 26 de junho de 2021 - gerou o data frame dados_queimadas_v1, a base de dados extraídas para a aplicação dos experimentos.A leitura identificou 627 observações e 12 variáveis (datahora, satélite, pais, estado, municipio, bioma, diassemchuva, precipitação, riscofogo, latitude, longitude, frp).
A seguir, estão listados os elementos de dado que compõem a base de dados amostral.
""
A análise visual do data frame indicou, de imediato, a presença de valores faltantes e de outliers, o que se confirmou na etapa seguinte do trabalho.
3. Análise Exploratória dos dados
Informando os tipos de dados armazenados nas variáveis.
Resumo estatístico descritivo trouxe, acima, o cálculo da média, da moda, da mediana, dos valores mínimos e máximos e dos quartis 1º e do 3º. Houve ainda a indicação de valores faltantes, o que suscita a necessidade de tratamento da amostra antes da aplicação dos experimentos. Avalia-se que o volume de dados faltantes é significativo uma vez que a base de dados é relativamente pequena.
Matriz, com apresentação das cinco primeiras linhas do data frame, também indicou a existência de valores discrepantes.
A presença de outliers e de dados faltantes nas variáveis diassemchuva, riscofogo e precipitacao indicou a necessidade de tratamento da base de dados amostral. Isso se confirmou com a distribuição assimétrica dos dados nos histogramas das três variáveis.
Geração do histograma, com diagnóstico de distribuição assimétrica dos dados para a variável diassemchuva.Concentração de dados à esquerda e presença de outlier à direita.
hist(dados_queimadas_v1$diasemchuva, main = "Histograma dias sem chuva", xlab = "Quantidade de Dias", ylab = "Frequência", col = "#6600cc", labels = TRUE)
Geração do histograma, com diagnóstico de distribuição assimétrica dos dados para a variável riscofogo. Concentração de dados à esquerda e presença de outlier à direita.hist(dados_queimadas_v1$precipitacao, main = "Histograma precipitação", xlab = "Quantidade de Dias", ylab = "Frequência", col = "#6600cc", labels = TRUE)
Geração do histograma, com diagnóstico de distribuição assimétrica dos dados para a variável precipitacao.Concentração de dados à direita e presença de outlier à esquerda.
Análise riscofogo
hist(dados_queimadas_v1$riscofogo, main = "Histograma Riscofogo", xlab = "Quantidade de Dias", ylab = "Frequência", col = "#6600cc", labels = TRUE)
De forma complementar, a função boxplot() ou diagrama de caixa permite visualizar - tendo em vista a descrição dos quartis, da mediana e outliers - a dispersão e os valores discrepantes, contribuindo para o diagnóstico da distribuição assimétrica dos dados.
boxplot(dados_queimadas_v1$diasemchuva)
boxplot(dados_queimadas_v1$riscofogo)
O histograma e o diagrama de caixas permitiram a identificação visual do problema dos valores discrepantes.
Dessa forma, foi aplicada a função filter() para filtrar valores maiores ou iguais a zero, permitindo corrigir a distorção provocada pelos outliers nas variáveis diasemchuva e riscofogo.
=filter(dados_queimadas_v1, diasemchuva >=0 | is.na(diasemchuva),riscofogo >=0 | is.na(riscofogo)) dados_queimadas_v2
Dados estatísticos após aplicação de filtro, que afeta os valores mínimos, uma vez que foram retirados os valores menores que zero.
summary(dados_queimadas_v2)
## datahora satelite pais estado ## Length:621 Length:621 Length:621 Length:621 ## Class :character Class :character Class :character Class :character ## Mode :character Mode :character Mode :character Mode :character ## ## ## ## ## municipio bioma diasemchuva precipitacao ## Length:621 Length:621 Min. : 0.00 Min. :0.00000 ## Class :character Class :character 1st Qu.:14.00 1st Qu.:0.00000 ## Mode :character Mode :character Median :24.00 Median :0.00000 ## Mean :24.27 Mean :0.06193 ## 3rd Qu.:37.00 3rd Qu.:0.00000 ## Max. :59.00 Max. :3.20000 ## NA's :185 NA's :185 ## riscofogo latitude longitude frp ## Min. :0.0000 Min. :-25.865 Min. :-72.32 Min. : 4.60 ## 1st Qu.:0.8000 1st Qu.:-14.645 1st Qu.:-54.00 1st Qu.: 14.50 ## Median :1.0000 Median :-11.721 Median :-49.77 Median : 24.30 ## Mean :0.8782 Mean :-12.241 Mean :-50.30 Mean : 75.34 ## 3rd Qu.:1.0000 3rd Qu.: -9.568 3rd Qu.:-46.94 3rd Qu.: 55.00 ## Max. :1.0000 Max. : 3.875 Max. :-35.59 Max. :5013.60 ## NA's :185
view(dados_queimadas_v1)
view(dados_queimadas_v2)
Análise dias sem chuva
O comparativo do histograma da variável diassemchuva antes e depois do filtro, permite perceber que, sem a presença de outlier, os dados ficam melhor distribuídos.
hist(dados_queimadas_v1$diasemchuva)
hist(dados_queimadas_v2$diasemchuva)
par(mfrow=c(1,2))
hist(dados_queimadas_v1$diasemchuva)
hist(dados_queimadas_v2$diasemchuva)
par(mfrow=c(1,1))
split.screen(figs=c(1,2))
## [1] 1 2
hist(dados_queimadas_v1$diasemchuva, main = "Histograma da variável Dias sem Chuva (sem filtro)", xlab = "Quantidade de dias", ylab = "Frequência", col = 'red')
hist(dados_queimadas_v2$diasemchuva, main = "Histograma da variável Dias sem Chuva (com filtro)", xlab = "Quantidade de dias", ylab = "Frequência", col = 'blue')
De forma complementar, a função boxplot() - ou diagrama de caixa - permite - tendo em vista a descrição dos quartis, da mediana e outliers - a dispersão e os valores discrepantes, contribuindo para o diagnóstico da distribuição assimétrica dos dados.
boxplot(dados_queimadas_v1$diasemchuva)
boxplot(dados_queimadas_v2$diasemchuva)
par(mfrow=c(1,2))
boxplot(dados_queimadas_v1$diasemchuva)
boxplot(dados_queimadas_v2$diasemchuva)
par(mfrow=c(1,1))
boxplot(dados_queimadas_v1$diasemchuva)
boxplot(dados_queimadas_v2$diasemchuva)
par(mfrow=c(1,1))
split.screen(figs=c(1,2))
## [1] 3 4
boxplot(dados_queimadas_v1$diasemchuva, col = 'red')
boxplot(dados_queimadas_v2$diasemchuva, col = 'blue')
De forma complementar, a função boxplot() - ou diagrama de caixa - permite - tendo em vista a descrição dos quartis, da mediana e outliers - a dispersão e os valores discrepantes, contribuindo para o diagnóstico da distribuição assimétrica dos dados. No caso da variável riscofogo, percebe-se a concentração de valores próximos ao valor máximo, bem como ainda se verifica a presença de valores discrepantes.
Diagrama de caixa da variável risco de fogo antes e depois da aplicação do filtro
boxplot(dados_queimadas_v1$riscofogo)
boxplot(dados_queimadas_v2$riscofogo)
par(mfrow=c(1,2))
boxplot(dados_queimadas_v1$riscofogo)
boxplot(dados_queimadas_v2$riscofogo)
par(mfrow=c(1,1))
split.screen(figs=c(1,2))
## [1] 5 6
boxplot(dados_queimadas_v1$riscofogo, col = 'red')
boxplot(dados_queimadas_v2$riscofogo, col = 'blue')
Após a remoção dos outliers, foi realizada a contagem dos valores NA, Encontrados em três variáveis, diasemchuva, precipitacao e riscofogo, os valores faltantes correspondem a 185 linhas, num total de 555. Se consideradas as 12 variáveis, um total de 2.220 informações são afetadas.
sapply(dados_queimadas_v2, function(x)sum(is.na(x)))
## datahora satelite pais estado municipio bioma ## 0 0 0 0 0 0 ## diasemchuva precipitacao riscofogo latitude longitude frp ## 185 185 185 0 0 0
sum(is.na(dados_queimadas_v2)) %>% kable()
x 555 Aplicando Imputação em Valores Missing Usando Método PMM (Predictive Mean Matching)
A imputação dos dados faltantes foi realizada a partir do método Predictive Mean Matching (PMM). Esse procedimento atribui valores às posições afetadas pela ocorrência de NA por uma estimativa que busca manter a distribuição verificada na amostra.
1º O primeiro passo foi encontrar as variáveis com dados do tipo caracter e pegar o nome das colunas.
```r chr_col <- as.integer(0) chrnames <- names(Filter(is.character, dados_queimadas_v2)) chrnames ``` ``` ## [1] "datahora" "satelite" "pais" "estado" "municipio" "bioma" ``` ```r k = 1 ```
2º Depois, foi identificado o índice dessas colunas
```r for(i in chrnames){ while (k <= 6){ #nesse dataset temos apenas 6 grep(i, colnames(dados_queimadas_v2)) chr_col[k] <- grep(i, colnames(dados_queimadas_v2)) k = k + 1 break } } ```
A variável atribuída chr_col retorna as colunas cujos dados são do tipo caracter.
chr_col
## [1] 1 2 3 4 5 6
Definindo a regra de imputação: o m é o número de imputações a serem feitas; maxit é o número de iterações; e meth é o método aplicado (sabe-se que, no pacote Mice, o método default é o PMM)
<- mice((dados_queimadas_v2[,-c(chr_col)]), regra_imputacao m = 1, maxit = 50, meth = 'pmm',)
## ## iter imp variable ## 1 1 diasemchuva precipitacao riscofogo ## 2 1 diasemchuva precipitacao riscofogo ## 3 1 diasemchuva precipitacao riscofogo ## 4 1 diasemchuva precipitacao riscofogo ## 5 1 diasemchuva precipitacao riscofogo ## 6 1 diasemchuva precipitacao riscofogo ## 7 1 diasemchuva precipitacao riscofogo ## 8 1 diasemchuva precipitacao riscofogo ## 9 1 diasemchuva precipitacao riscofogo ## 10 1 diasemchuva precipitacao riscofogo ## 11 1 diasemchuva precipitacao riscofogo ## 12 1 diasemchuva precipitacao riscofogo ## 13 1 diasemchuva precipitacao riscofogo ## 14 1 diasemchuva precipitacao riscofogo ## 15 1 diasemchuva precipitacao riscofogo ## 16 1 diasemchuva precipitacao riscofogo ## 17 1 diasemchuva precipitacao riscofogo ## 18 1 diasemchuva precipitacao riscofogo ## 19 1 diasemchuva precipitacao riscofogo ## 20 1 diasemchuva precipitacao riscofogo ## 21 1 diasemchuva precipitacao riscofogo ## 22 1 diasemchuva precipitacao riscofogo ## 23 1 diasemchuva precipitacao riscofogo ## 24 1 diasemchuva precipitacao riscofogo ## 25 1 diasemchuva precipitacao riscofogo ## 26 1 diasemchuva precipitacao riscofogo ## 27 1 diasemchuva precipitacao riscofogo ## 28 1 diasemchuva precipitacao riscofogo ## 29 1 diasemchuva precipitacao riscofogo ## 30 1 diasemchuva precipitacao riscofogo ## 31 1 diasemchuva precipitacao riscofogo ## 32 1 diasemchuva precipitacao riscofogo ## 33 1 diasemchuva precipitacao riscofogo ## 34 1 diasemchuva precipitacao riscofogo ## 35 1 diasemchuva precipitacao riscofogo ## 36 1 diasemchuva precipitacao riscofogo ## 37 1 diasemchuva precipitacao riscofogo ## 38 1 diasemchuva precipitacao riscofogo ## 39 1 diasemchuva precipitacao riscofogo ## 40 1 diasemchuva precipitacao riscofogo ## 41 1 diasemchuva precipitacao riscofogo ## 42 1 diasemchuva precipitacao riscofogo ## 43 1 diasemchuva precipitacao riscofogo ## 44 1 diasemchuva precipitacao riscofogo ## 45 1 diasemchuva precipitacao riscofogo ## 46 1 diasemchuva precipitacao riscofogo ## 47 1 diasemchuva precipitacao riscofogo ## 48 1 diasemchuva precipitacao riscofogo ## 49 1 diasemchuva precipitacao riscofogo ## 50 1 diasemchuva precipitacao riscofogo
Por fim, é aplicada a regra de imputação a partir da variável total_dataI. A visualização e o somatório de ocorrência de NA retornam 0, o que significa que os valores faltantes foram preenchidos. Como não foi aplicada a função set.seed, a cada vez que rodar o método, os valores gerados serão diferentes, aleatórios.
<- complete(regra_imputacao, 1) total_data View(total_data) sum(is.na(total_data))
## [1] 0
Após a imputação, as variáveis categóricas foram juntadas, novamente, ao dataset por meio da função cbind()
<- cbind(dados_queimadas_v2[,c(chr_col)],total_data) dados_queimadas_v2_final View(dados_queimadas_v2_final) View(dados_queimadas_v2) sum(is.na(dados_queimadas_v2_final))
## [1] 0
summary(dados_queimadas_v2_final)
## datahora satelite pais estado ## Length:621 Length:621 Length:621 Length:621 ## Class :character Class :character Class :character Class :character ## Mode :character Mode :character Mode :character Mode :character ## ## ## ## municipio bioma diasemchuva precipitacao ## Length:621 Length:621 Min. : 0.00 Min. :0.00000 ## Class :character Class :character 1st Qu.:15.00 1st Qu.:0.00000 ## Mode :character Mode :character Median :26.00 Median :0.00000 ## Mean :24.65 Mean :0.06473 ## 3rd Qu.:38.00 3rd Qu.:0.00000 ## Max. :59.00 Max. :3.20000 ## riscofogo latitude longitude frp ## Min. :0.0000 Min. :-25.865 Min. :-72.32 Min. : 4.60 ## 1st Qu.:0.8000 1st Qu.:-14.645 1st Qu.:-54.00 1st Qu.: 14.50 ## Median :1.0000 Median :-11.721 Median :-49.77 Median : 24.30 ## Mean :0.8647 Mean :-12.241 Mean :-50.30 Mean : 75.34 ## 3rd Qu.:1.0000 3rd Qu.: -9.568 3rd Qu.:-46.94 3rd Qu.: 55.00 ## Max. :1.0000 Max. : 3.875 Max. :-35.59 Max. :5013.60
A aplicação da função summary() nos dada frames dados_queimadas_v2 (com filtro e sem imputação) e dados_queimadas_v2_final (com filtro e com a imputação) permite verificar que não houve alteração sensível no comportamento das variáveis.
Comparativo do histograma da variável diassemchuva em três momentos da manipulação dos dados: (a) para o data frame original, (b) para o data frame após a aplicação do filtro para retirada de valores negativos e (c) após a aplicação do método de importação para a estimação de valores para os NA.
hist(dados_queimadas_v1$diasemchuva)
hist(dados_queimadas_v2$diasemchuva)
hist(dados_queimadas_v2_final$diasemchuva)
par(mfrow=c(1,2))
hist(dados_queimadas_v1$diasemchuva)
hist(dados_queimadas_v2$diasemchuva)
hist(dados_queimadas_v2_final$diasemchuva)
par(mfrow=c(1,1))
split.screen(figs=c(2,2))
## [1] 7 8 9 10
hist(dados_queimadas_v1$diasemchuva, main = "Histograma da variável Dias sem Chuva (sem filtro)", xlab = "Quantidade de dias", ylab = "Frequência", col = 'red')
hist(dados_queimadas_v2$diasemchuva, main = "Histograma da variável Dias sem Chuva (com filtro)", xlab = "Quantidade de dias", ylab = "Frequência", col = 'blue')
hist(dados_queimadas_v2_final$diasemchuva, main = "Histograma da variável Dias sem Chuva (com filtro e imputação)", xlab = "Quantidade de dias", ylab = "Frequência", col = 'green')
Comparativo do histograma da variável riscofogo em três momentos da manipulação dos dados: (a) para o data frame original, (b) para o data frame após a aplicação do filtro para retirada de valores negativos e (c) após a aplicação do método de importação para a estimação de valores para os NA.
hist(dados_queimadas_v1$riscofogo)
hist(dados_queimadas_v2$riscofogo)
hist(dados_queimadas_v2_final$riscofogo)
par(mfrow=c(1,2))
hist(dados_queimadas_v1$riscofogo)
hist(dados_queimadas_v2$riscofogo)
hist(dados_queimadas_v2_final$riscofogo)
par(mfrow=c(1,1))
split.screen(figs=c(2,2))
## [1] 11 12 13 14
hist(dados_queimadas_v1$riscofogo, main = "Histograma da variável Risco de Fogo (sem filtro)", xlab = "Quantidade de dias", ylab = "Frequência", col = 'red')
hist(dados_queimadas_v2$riscofogo, main = "Histograma da variável Risco de Fogo (com filtro)", xlab = "Quantidade de dias", ylab = "Frequência", col = 'blue')
hist(dados_queimadas_v2_final$riscofogo, main = "Histograma da variável Risco de Fogo (com filtro e imputacao)", xlab = "Quantidade de dias", ylab = "Frequência", col = 'green')
Comparativo do histograma da variável precipitacao em três momentos da manipulação dos dados: (a) para o data frame original, (b) para o data frame após a aplicação do filtro para retirada de valores negativos e (c) após a aplicação do método de importação para a estimação de valores para os NA. A distribuição não é impactada.hist(dados_queimadas_v1$precipitacao)
hist(dados_queimadas_v2$precipitacao)
hist(dados_queimadas_v2_final$precipitacao)
par(mfrow=c(1,2))
hist(dados_queimadas_v1$precipitacao)
hist(dados_queimadas_v2$precipitacao)
hist(dados_queimadas_v2_final$precipitacao)
par(mfrow=c(1,1))
split.screen(figs=c(2,2))
## [1] 15 16 17 18
hist(dados_queimadas_v1$precipitacao, main = "Histograma da variável Precipitação (sem filtro)", xlab = "Quantidade de dias", ylab = "Frequência", col = 'red')
hist(dados_queimadas_v2$precipitacao, main = "Histograma da variável Precipitação (com filtro)", xlab = "Quantidade de dias", ylab = "Frequência", col = 'blue')
hist(dados_queimadas_v2_final$precipitacao, main = "Histograma da variável Precipitação (com filtro e imputação)", xlab = "Quantidade de dias", ylab = "Frequência", col = 'green')
Comparativo do histograma da variável frp em três momentos da manipulação dos dados: (a) para o data frame original, (b) para o data frame após a aplicação do filtro para retirada de valores negativos e (c) após a aplicação do método de importação para a estimação de valores para os NA. A distribuição não é impactada.
hist(dados_queimadas_v1$frp)
hist(dados_queimadas_v2$frp)
hist(dados_queimadas_v2_final$frp)
par(mfrow=c(1,2))
hist(dados_queimadas_v1$frp)
hist(dados_queimadas_v2$frp)
hist(dados_queimadas_v2_final$frp)
par(mfrow=c(1,1))
split.screen(figs=c(2,2))
## [1] 19 20 21 22
screen(1) hist(dados_queimadas_v1$frp, main = "Histograma da variável Energia Radiativa do Fogo (sem filtro)", xlab = "Quantidade de dias", ylab = "Frequência", col = 'red')
screen(2) hist(dados_queimadas_v2$frp, main = "Histograma da variável Energia Radiativa do Fogo (com filtro)", xlab = "Quantidade de dias", ylab = "Frequência", col = 'blue')
screen(3) hist(dados_queimadas_v2_final$frp, main = "Histograma da variável Energia Radiativa do Fogo (com filtro e imputação)", xlab = "Quantidade de dias", ylab = "Frequência", col = 'green')
A retomada da plotagem da função boxplot() permite avaliar a distribuição dos dados após a aplicação do filtro para retirada de valores negativos e da imputação de valores para posições com registros NA. Verifica-se ainda a presença de outliers nas variáveis precipitacao, riscofogo e frp.
boxplot(dados_queimadas_v2_final$diasemchuva, main = "Boxplot da variável Dias sem Chuva")
boxplot(dados_queimadas_v2_final$precipitacao, main = "Boxplot da variável Precipitação")
boxplot(dados_queimadas_v2_final$riscofogo, main = "Boxplot da variável Risco de Fogo")
boxplot(dados_queimadas_v2_final$frp, main = "Boxplot da variável Frequência Radiativa do Fogo")
Na sequência, foram aplicadas técnicas, como média, variância e desvio padrão, visando exploração dos dados a fim de se chegar a insights.
<-aggregate(data = dados_queimadas_v2, diasemchuva ~ municipio, mean) diaschuva_municipio_antes<-aggregate(data = dados_queimadas_v2_final, diasemchuva ~ municipio, mean) diaschuva_municipio_antes
<- aggregate(data = dados_queimadas_v2, diasemchuva ~ estado, mean) diaschuva_estado_antes<- aggregate(data = dados_queimadas_v2_final, diasemchuva ~ estado, mean) diaschuva_estado_depois
aggregate(data = dados_queimadas_v2_final, cbind(diasemchuva,precipitacao,riscofogo,frp) ~ estado, mean)
## estado diasemchuva precipitacao riscofogo frp ## 1 ACRE 21.40000 0.68000000 0.4800000 21.04000 ## 2 AMAZONAS 17.00000 0.06666667 0.3833333 16.23333 ## 3 BAHIA 38.33333 0.00000000 1.0000000 25.81667 ## 4 CEARA 44.00000 0.00000000 1.0000000 6.00000 ## 5 ESPIRITO SANTO 16.33333 0.00000000 1.0000000 104.96667 ## 6 GOIAS 16.37500 0.00000000 0.9593750 34.74063 ## 7 MARANHAO 24.04878 0.07804878 0.9219512 48.02195 ## 8 MATO GROSSO 28.68493 0.05296804 0.8283105 149.15936 ## 9 MATO GROSSO DO SUL 15.23077 0.25384615 0.8769231 35.56923 ## 10 MINAS GERAIS 17.10417 0.00000000 0.9854167 25.56250 ## 11 PARA 8.28000 0.46400000 0.3640000 27.36400 ## 12 PARAIBA 28.66667 0.06666667 1.0000000 15.00000 ## 13 PARANA 10.18182 0.00000000 0.6727273 29.08182 ## 14 PERNAMBUCO 33.00000 0.00000000 0.9666667 13.30000 ## 15 PIAUI 30.16667 0.01388889 0.9305556 34.06111 ## 16 RIO DE JANEIRO 8.00000 0.03333333 1.0000000 32.90000 ## 17 RIO GRANDE DO NORTE 26.50000 0.00000000 0.9000000 39.60000 ## 18 RONDONIA 16.10000 0.43000000 0.3700000 20.36000 ## 19 RORAIMA 24.00000 0.20000000 0.5000000 7.70000 ## 20 SAO PAULO 12.70370 0.05185185 0.9259259 67.02963 ## 21 TOCANTINS 29.08036 0.00000000 0.9821429 33.66339
aggregate(data = dados_queimadas_v2_final, cbind(diasemchuva,precipitacao,riscofogo,frp) ~ municipio, mean)
## municipio diasemchuva precipitacao riscofogo frp ## 1 ABAETETUBA 0.000000 2.350000000 0.0000000 15.300000 ## 2 ABAIARA 44.000000 0.000000000 1.0000000 6.000000 ## 3 ABREULANDIA 42.000000 0.000000000 1.0000000 20.000000 ## 4 ACARA 2.000000 0.000000000 0.0000000 22.600000 ## 5 AGUA BOA 3.000000 0.000000000 1.0000000 33.600000 ## 6 ALDEIAS ALTAS 35.000000 0.300000000 1.0000000 18.400000 ## 7 ALMAS 40.000000 0.000000000 0.9600000 61.460000 ## 8 ALTA FLORESTA 25.000000 1.966666667 0.6666667 59.933333 ## 9 ALTAIR 15.000000 0.000000000 1.0000000 91.983333 ## 10 ALTO BOA VISTA 21.000000 0.000000000 1.0000000 71.900000 ## 11 ALTO PARNAIBA 11.000000 0.000000000 1.0000000 83.300000 ## 12 AMAJARI 24.000000 0.200000000 0.5000000 7.700000 ## 13 AMAMBAI 2.000000 0.000000000 1.0000000 17.300000 ## 14 ANTONIO JOAO 9.000000 0.000000000 0.5000000 28.900000 ## 15 APARECIDA DO TABOADO 15.000000 0.000000000 1.0000000 17.700000 ## 16 ARAGUACEMA 41.000000 0.000000000 1.0000000 20.700000 ## 17 ARAGUAINA 12.000000 0.000000000 1.0000000 10.200000 ## 18 ARAPONGAS 2.000000 0.000000000 0.6000000 6.600000 ## 19 ARICANDUVA 35.000000 0.000000000 1.0000000 31.900000 ## 20 ARINOS 10.000000 0.000000000 1.0000000 10.400000 ## 21 ASSAI 35.000000 0.000000000 1.0000000 21.600000 ## 22 ASSIS BRASIL 15.000000 0.000000000 0.6000000 21.066667 ## 23 AURORA DO TOCANTINS 38.000000 0.000000000 1.0000000 15.700000 ## 24 BAIANOPOLIS 39.000000 0.000000000 1.0000000 18.750000 ## 25 BAIXA GRANDE 21.000000 0.000000000 1.0000000 13.600000 ## 26 BALSAS 6.600000 0.000000000 0.9900000 43.870000 ## 27 BARRA 51.500000 0.000000000 1.0000000 29.750000 ## 28 BARREIRAS 39.000000 0.000000000 1.0000000 28.800000 ## 29 BELEM 22.000000 0.500000000 1.0000000 53.100000 ## 30 BELEM DO BREJO DO CRUZ 35.000000 0.000000000 1.0000000 16.900000 ## 31 BIQUINHAS 15.500000 0.000000000 1.0000000 16.550000 ## 32 BOCA DO ACRE 11.000000 0.000000000 0.6000000 18.200000 ## 33 BOCAIUVA 37.000000 0.000000000 1.0000000 19.200000 ## 34 BOCAIUVA DO SUL 14.000000 0.000000000 1.0000000 28.900000 ## 35 BOM JESUS DO ARAGUAIA 33.900000 0.000000000 1.0000000 45.670000 ## 36 BRUMADINHO 14.000000 0.000000000 0.9000000 19.600000 ## 37 BURITAMA 19.750000 0.000000000 0.5500000 144.925000 ## 38 BURITI BRAVO 36.000000 0.000000000 1.0000000 36.800000 ## 39 BURITI DOS MONTES 47.000000 0.000000000 1.0000000 24.800000 ## 40 CACHOEIRA DA PRATA 14.000000 0.000000000 1.0000000 16.500000 ## 41 CAMETA 2.000000 0.100000000 0.0000000 17.300000 ## 42 CAMPINAPOLIS 32.666667 0.000000000 1.0000000 30.083333 ## 43 CAMPO NOVO DO PARECIS 23.636364 0.000000000 0.8272727 114.245455 ## 44 CAMPOS DOS GOYTACAZES 6.000000 0.000000000 1.0000000 14.400000 ## 45 CANAVIEIRA 15.000000 0.000000000 1.0000000 22.800000 ## 46 CANDEIAS DO JAMARI 5.500000 1.800000000 0.3000000 11.050000 ## 47 CAPIVARI 3.000000 0.300000000 0.9750000 80.475000 ## 48 CARANDAI 4.000000 0.000000000 0.9000000 20.700000 ## 49 CARIRI DO TOCANTINS 39.000000 0.000000000 1.0000000 17.200000 ## 50 CAROLINA 35.000000 0.000000000 1.0000000 86.200000 ## 51 CATOLE DO ROCHA 15.000000 0.200000000 1.0000000 14.800000 ## 52 CAVALCANTE 11.200000 0.000000000 0.9800000 9.160000 ## 53 CENTENARIO 34.000000 0.000000000 1.0000000 93.800000 ## 54 CHAPADA DOS GUIMARAES 19.333333 0.066666667 1.0000000 57.000000 ## 55 CIDADE OCIDENTAL 11.000000 0.000000000 0.9500000 27.000000 ## 56 CLAUDIA 34.333333 0.000000000 0.7500000 29.916667 ## 57 COCOS 36.000000 0.000000000 1.0000000 12.300000 ## 58 COLINAS DO TOCANTINS 0.000000 0.000000000 0.9000000 10.150000 ## 59 COMODORO 25.000000 0.000000000 0.7090909 370.690909 ## 60 CONCEICAO DO TOCANTINS 37.000000 0.000000000 1.0000000 13.800000 ## 61 CONFRESA 34.000000 0.000000000 1.0000000 15.950000 ## 62 CORINTO 30.000000 0.000000000 1.0000000 29.750000 ## 63 CORRENTINA 40.333333 0.000000000 1.0000000 30.933333 ## 64 CORUMBA 19.571429 0.028571429 0.9714286 22.814286 ## 65 CRISTALANDIA 39.000000 0.000000000 0.9000000 11.900000 ## 66 CRISTALANDIA DO PIAUI 43.000000 0.000000000 1.0000000 22.500000 ## 67 CRISTALINA 10.000000 0.000000000 1.0000000 10.800000 ## 68 CRUZEIRO DO SUL 48.000000 3.100000000 0.1000000 23.800000 ## 69 CUIABA 18.000000 0.000000000 1.0000000 19.600000 ## 70 CURUA 6.000000 0.700000000 0.1000000 8.200000 ## 71 DARCINOPOLIS 3.000000 0.000000000 0.9500000 29.000000 ## 72 DIANOPOLIS 30.333333 0.000000000 1.0000000 30.333333 ## 73 DOIS IRMAOS DO BURITI 5.000000 3.100000000 0.1000000 134.700000 ## 74 DOM AQUINO 23.000000 0.000000000 1.0000000 16.700000 ## 75 DOM ELISEU 10.800000 0.000000000 0.6800000 74.040000 ## 76 FATIMA 11.000000 0.000000000 1.0000000 8.900000 ## 77 FEIJO 14.000000 0.300000000 0.5000000 18.200000 ## 78 FELIZ NATAL 28.916667 0.258333333 0.7666667 109.400000 ## 79 FERNANDO FALCAO 32.333333 0.000000000 0.9333333 76.433333 ## 80 FLORIANO 20.000000 0.000000000 1.0000000 18.200000 ## 81 FORMOSA DO RIO PRETO 39.000000 0.000000000 1.0000000 16.700000 ## 82 FORMOSO DO ARAGUAIA 39.000000 0.000000000 1.0000000 39.620000 ## 83 FUNILANDIA 35.000000 0.000000000 1.0000000 21.000000 ## 84 GAUCHA DO NORTE 30.400000 0.000000000 0.9400000 33.420000 ## 85 GENERAL CARNEIRO 25.636364 0.000000000 0.9909091 248.009091 ## 86 GOIANORTE 39.000000 0.000000000 1.0000000 12.100000 ## 87 GUADALUPE 36.000000 0.000000000 1.0000000 37.100000 ## 88 GUAJARA-MIRIM 28.000000 0.000000000 0.0000000 7.200000 ## 89 GUARAI 36.000000 0.000000000 1.0000000 17.400000 ## 90 IBATE 6.000000 0.000000000 1.0000000 71.000000 ## 91 IBITINGA 15.000000 0.000000000 1.0000000 4.700000 ## 92 IBOTIRAMA 44.333333 0.000000000 1.0000000 28.233333 ## 93 IGARAPAVA 8.500000 0.000000000 1.0000000 15.000000 ## 94 INACIOLANDIA 21.250000 0.000000000 0.9250000 158.825000 ## 95 INHAUMA 14.000000 0.000000000 1.0000000 17.300000 ## 96 IPAMERI 13.666667 0.000000000 1.0000000 13.900000 ## 97 IPIRANGA DO NORTE 31.000000 0.000000000 0.8000000 18.900000 ## 98 ITAITUBA 3.000000 0.000000000 0.3000000 9.400000 ## 99 ITAPACI 32.000000 0.000000000 1.0000000 6.000000 ## 100 ITAPIRATINS 2.000000 0.000000000 0.8500000 11.500000 ## 101 ITAPUA DO OESTE 6.000000 0.200000000 0.6000000 88.700000 ## 102 ITAUEIRA 31.333333 0.000000000 0.9666667 34.433333 ## 103 ITUIUTABA 15.000000 0.000000000 1.0000000 48.250000 ## 104 JANUARIA 11.000000 0.000000000 1.0000000 41.040000 ## 105 JARAGUA 19.500000 0.000000000 1.0000000 23.400000 ## 106 JARDIM OLINDA 18.500000 0.000000000 1.0000000 84.050000 ## 107 JEQUITIBA 35.000000 0.000000000 1.0000000 20.200000 ## 108 JERUMENHA 30.166667 0.083333333 0.8166667 24.700000 ## 109 JUARA 13.250000 0.000000000 0.4750000 46.075000 ## 110 JUINA 25.000000 0.000000000 0.7000000 33.200000 ## 111 LABREA 5.000000 0.000000000 0.5500000 29.150000 ## 112 LAGOA DA CONFUSAO 38.600000 0.000000000 0.9600000 38.840000 ## 113 LAGOA GRANDE 33.000000 0.000000000 0.9666667 13.300000 ## 114 LANDRI SALES 29.800000 0.000000000 0.8400000 58.000000 ## 115 LIZARDA 36.750000 0.000000000 1.0000000 19.825000 ## 116 LONDRINA 6.500000 0.000000000 0.8000000 13.700000 ## 117 LOURDES 15.000000 0.000000000 1.0000000 60.700000 ## 118 LUZIANIA 11.000000 0.000000000 1.0000000 6.466667 ## 119 MACHADINHO D'OESTE 27.500000 0.250000000 0.0500000 11.450000 ## 120 MAIRIPOTABA 12.000000 0.000000000 1.0000000 13.600000 ## 121 MANAQUIRI 33.000000 0.100000000 0.2500000 7.850000 ## 122 MARCELANDIA 28.777778 0.044444444 0.7555556 168.305556 ## 123 MARIANOPOLIS DO TOCANTINS 39.000000 0.000000000 1.0000000 20.650000 ## 124 MATEIROS 22.478261 0.000000000 0.9913043 58.626087 ## 125 MATUPA 31.666667 0.000000000 0.8000000 50.933333 ## 126 MAURILANDIA 15.000000 0.000000000 1.0000000 9.300000 ## 127 MAURILANDIA DO TOCANTINS 20.000000 0.000000000 0.9000000 37.800000 ## 128 MINEIROS 14.750000 0.000000000 0.8750000 47.150000 ## 129 MIRADOR 39.500000 0.000000000 1.0000000 55.325000 ## 130 MIRANDOPOLIS 15.000000 0.100000000 0.9000000 10.500000 ## 131 MONTE ALEGRE 3.666667 0.066666667 0.1333333 10.933333 ## 132 MONTE ALEGRE DE MINAS 15.000000 0.000000000 1.0000000 92.900000 ## 133 MONTE DO CARMO 38.000000 0.000000000 1.0000000 20.200000 ## 134 MUNIZ FREIRE 9.500000 0.000000000 1.0000000 131.650000 ## 135 NATIVIDADE 39.000000 0.000000000 1.0000000 10.300000 ## 136 NIQUELANDIA 20.000000 0.000000000 1.0000000 6.500000 ## 137 NOVA BANDEIRANTES 6.000000 0.000000000 0.4000000 23.500000 ## 138 NOVA MARINGA 27.333333 0.000000000 0.7500000 268.300000 ## 139 NOVA NAZARE 36.666667 0.000000000 0.8666667 24.500000 ## 140 NOVA SERRANA 17.000000 0.000000000 1.0000000 7.800000 ## 141 NOVA UBIRATA 39.000000 0.000000000 1.0000000 13.900000 ## 142 NOVA VENECIA 30.000000 0.000000000 1.0000000 51.600000 ## 143 NOVA XAVANTINA 30.666667 0.000000000 1.0000000 26.066667 ## 144 NOVO PROGRESSO 15.000000 0.000000000 0.6000000 13.200000 ## 145 NOVO REPARTIMENTO 0.000000 0.300000000 0.1000000 19.800000 ## 146 NOVO SANTO ANTONIO 39.333333 0.000000000 1.0000000 19.800000 ## 147 OBIDOS 6.000000 0.300000000 0.1000000 9.100000 ## 148 OEIRAS 25.750000 0.000000000 0.9250000 33.375000 ## 149 OLIVEIRA DE FATIMA 17.000000 0.000000000 1.0000000 6.900000 ## 150 ONDA VERDE 15.000000 0.000000000 1.0000000 22.050000 ## 151 ORIXIMINA 38.000000 0.000000000 0.0000000 21.700000 ## 152 OURILANDIA DO NORTE 1.000000 0.450000000 0.9000000 12.300000 ## 153 PALMEIRA 3.500000 0.000000000 0.3000000 26.350000 ## 154 PARAISO DO TOCANTINS 39.000000 0.000000000 1.0000000 7.800000 ## 155 PARANA 13.500000 0.000000000 0.8500000 10.350000 ## 156 PARANATINGA 39.200000 0.020000000 0.8400000 39.460000 ## 157 PARAUNA 30.000000 0.000000000 1.0000000 9.400000 ## 158 PARNARAMA 25.800000 0.000000000 0.7600000 46.040000 ## 159 PASTOS BONS 22.000000 0.000000000 1.0000000 39.050000 ## 160 PATROCINIO 15.000000 0.000000000 1.0000000 6.500000 ## 161 PEIXE 38.000000 0.000000000 1.0000000 46.750000 ## 162 PETROPOLIS 9.000000 0.050000000 1.0000000 42.150000 ## 163 PICOS 26.000000 0.000000000 1.0000000 9.000000 ## 164 PIUM 32.666667 0.000000000 1.0000000 24.633333 ## 165 PONTA GROSSA 2.000000 0.000000000 0.5000000 10.000000 ## 166 PONTE ALTA DO BOM JESUS 38.000000 0.000000000 1.0000000 16.000000 ## 167 PONTE ALTA DO TOCANTINS 40.750000 0.000000000 1.0000000 26.425000 ## 168 PORTEL 1.000000 3.200000000 0.0000000 6.200000 ## 169 PORTO ALEGRE DO NORTE 36.000000 0.000000000 0.9000000 6.850000 ## 170 PORTO DOS GAUCHOS 26.500000 0.000000000 0.6500000 31.450000 ## 171 PORTO NACIONAL 11.000000 0.000000000 1.0000000 14.800000 ## 172 PORTO VELHO 8.500000 0.000000000 0.6000000 19.300000 ## 173 PRESIDENTE OLEGARIO 15.000000 0.000000000 1.0000000 21.800000 ## 174 QUERENCIA 22.500000 0.000000000 0.7928571 829.392857 ## 175 QUITANDINHA 2.000000 0.000000000 0.1000000 4.600000 ## 176 RECURSOLANDIA 13.666667 0.000000000 1.0000000 25.800000 ## 177 RIACHO DOS CAVALOS 36.000000 0.000000000 1.0000000 13.300000 ## 178 RIBEIRAO PRETO 15.000000 0.000000000 1.0000000 12.000000 ## 179 RIO CRESPO 22.000000 0.000000000 0.6000000 12.050000 ## 180 RIO SONO 22.000000 0.000000000 1.0000000 11.000000 ## 181 RIO VERDE DE MATO GROSSO 15.000000 0.000000000 1.0000000 86.400000 ## 182 SACRAMENTO 14.500000 0.000000000 0.8750000 9.900000 ## 183 SANTA BARBARA D'OESTE 4.000000 0.100000000 1.0000000 15.300000 ## 184 SANTA CARMEM 29.600000 0.000000000 0.7800000 31.120000 ## 185 SANTA CRUZ DO XINGU 0.750000 0.050000000 0.6250000 33.275000 ## 186 SANTA FILOMENA 42.000000 0.000000000 1.0000000 38.600000 ## 187 SANTA ISABEL 48.000000 0.000000000 1.0000000 11.500000 ## 188 SANTA MARIA DAS BARREIRAS 35.000000 0.000000000 1.0000000 7.200000 ## 189 SANTA QUITERIA DO MARANHAO 32.000000 0.050000000 1.0000000 55.150000 ## 190 SANTA RITA 7.000000 2.800000000 0.1000000 28.400000 ## 191 SANTANA DO PIAUI 32.500000 0.000000000 0.9000000 23.250000 ## 192 SANTO ANTONIO DO DESCOBERTO 11.000000 0.000000000 0.7000000 5.100000 ## 193 SAO DESIDERIO 39.000000 0.000000000 1.0000000 24.000000 ## 194 SAO FELIX DE BALSAS 40.000000 0.000000000 1.0000000 27.033333 ## 195 SAO FELIX DO ARAGUAIA 36.555556 0.005555556 0.9111111 53.144444 ## 196 SAO FELIX DO TOCANTINS 38.000000 0.000000000 1.0000000 32.400000 ## 197 SAO GONCALO DO ABAETE 37.000000 0.000000000 1.0000000 31.200000 ## 198 SAO JOAO DO SOTER 7.000000 0.000000000 0.6000000 44.950000 ## 199 SEBASTIAO LEAL 15.000000 0.000000000 1.0000000 22.200000 ## 200 SENADOR JOSE PORFIRIO 7.000000 0.000000000 0.2000000 23.500000 ## 201 SINOP 24.000000 0.000000000 0.7333333 50.500000 ## 202 SUCUPIRA 39.000000 0.000000000 0.9000000 10.300000 ## 203 TABAPORA 35.000000 0.000000000 0.7000000 22.600000 ## 204 TABAPUA 15.000000 0.000000000 1.0000000 15.700000 ## 205 TAGUATINGA 37.000000 0.000000000 1.0000000 41.600000 ## 206 TAIPU 22.666667 0.000000000 0.8666667 46.700000 ## 207 TANGARA DA SERRA 27.000000 0.000000000 1.0000000 29.650000 ## 208 TAPAUA 15.000000 0.200000000 0.1000000 5.200000 ## 209 TERESINA 21.000000 0.000000000 1.0000000 45.366667 ## 210 TESOURO 28.000000 0.000000000 1.0000000 21.600000 ## 211 TIMON 22.000000 0.000000000 1.0000000 28.800000 ## 212 TOCANTINIA 31.076923 0.000000000 0.9923077 14.546154 ## 213 TOME-ACU 3.000000 0.700000000 0.1000000 14.600000 ## 214 TREMEDAL 22.500000 0.000000000 1.0000000 41.250000 ## 215 TUPACIGUARA 15.000000 0.000000000 1.0000000 11.950000 ## 216 TURIUBA 15.000000 0.000000000 1.0000000 31.600000 ## 217 TUTOIA 41.000000 0.000000000 1.0000000 11.400000 ## 218 UBERABA 14.900000 0.000000000 1.0000000 22.910000 ## 219 UNIAO DO SUL 28.812500 0.075000000 0.7687500 77.093750 ## 220 UPANEMA 38.000000 0.000000000 1.0000000 18.300000 ## 221 URUCUI 37.750000 0.000000000 1.0000000 34.075000 ## 222 VALPARAISO DE GOIAS 11.000000 0.000000000 1.0000000 7.900000 ## 223 VILA RICA 38.000000 0.000000000 0.9000000 24.000000 ## 224 VITORIA DO MEARIM 36.000000 0.000000000 1.0000000 55.250000
var(dados_queimadas_v2_final$riscofogo)
## [1] 0.05657691
var(dados_queimadas_v2_final$diasemchuva)
## [1] 186.6761
var(dados_queimadas_v2_final$precipitacao)
## [1] 0.1349317
var(dados_queimadas_v2_final$frp)
## [1] 78911.65
sd(dados_queimadas_v2_final$riscofogo)
## [1] 0.237859
sd(dados_queimadas_v2_final$diasemchuva)
## [1] 13.66295
sd(dados_queimadas_v2_final$precipitacao)
## [1] 0.3673306
sd(dados_queimadas_v2_final$frp)
## [1] 280.9122
Calculando o coeficiente de assimetria. A função skewness(), que indica o comportamento dos desvios em relação à média, agrega informação às tendências já observadas.
As variáveis frp e precipitação, com os coeficientes mais elevados e positivos, apresentam assimetria negativa o que vai ao encontro do desenho observado nos histogramas, pela grande concentração de dados à esquerda e com uma cauda pronunciada à direita.
A variável riscofogo, apresenta assimetria negativa, com comportamento inverso, ou seja, valores concentrados à direita e uma cauda sinuosa à esquerda. Embora não se trate de uma simetria, a variável diassemchuva possui maior dispersão e distribuição dos dados.
skewness(dados_queimadas_v2_final$diasemchuva)
## [1] -0.1514387
skewness(dados_queimadas_v2_final$precipitacao)
## [1] 7.304613
skewness(dados_queimadas_v2_final$riscofogo)
## [1] -2.051531
skewness(dados_queimadas_v2_final$frp)
## [1] 12.77149
Curtose - função kurtosis() - está associada ao grau de achatamento em relação à normal padrão. Observa-se a distribuição mais afunilada, se valores maiores que zero (como nas variáveis riscofogo, precipitação e frp), ou o desenho mais achatado, se menores que zero (como ocorre com a variável diassemchuva).
Embora muito destaque seja dado à formação do pico, a curtose está mais intimamente ligada ao peso das caudas na distribuição e, portanto, diz da concentração ou dispersão dos valores em relação às medidas de tendência central.
kurtosis(dados_queimadas_v2_final$diasemchuva)
## [1] -1.231653
kurtosis(dados_queimadas_v2_final$riscofogo)
## [1] 3.726532
kurtosis(dados_queimadas_v2_final$precipitacao )
## [1] 54.02088
kurtosis(dados_queimadas_v2_final$frp)
## [1] 194.5906
A correlação entre as variáveis diasemchuva e riscofogo é fraca (0.34) e positiva (quando uma variável aumenta a outra também aumenta).
= dados_queimadas_v2_final$diasemchuva x = dados_queimadas_v2_final$riscofogo y cor(x,y)
## [1] 0.3184
= dados_queimadas_v2_final$precipitacao x = dados_queimadas_v2_final$riscofogo y cor(x,y)
## [1] -0.4146544
A correlação entre as variáveis precipitacao e riscofogo é fraca (-0.328) e negativa (quando uma variável aumenta a outra diminui).
= dados_queimadas_v2_final$frp x = dados_queimadas_v2_final$riscofogo y cor(x,y)
## [1] -0.06923721
A correlação entre as variáveis frp e riscofogo é fraca (-0.04) e negativa (quando uma variável aumenta a outra diminui).
cor(dados_queimadas_v2_final[c( "diasemchuva", "precipitacao", "riscofogo", "latitude","longitude","frp" )])
## diasemchuva precipitacao riscofogo latitude longitude ## diasemchuva 1.00000000 -0.15003298 0.31840002 0.18104054 0.05828814 ## precipitacao -0.15003298 1.00000000 -0.41465436 0.13511512 -0.14686186 ## riscofogo 0.31840002 -0.41465436 1.00000000 -0.25002846 0.43980307 ## latitude 0.18104054 0.13511512 -0.25002846 1.00000000 0.07450248 ## longitude 0.05828814 -0.14686186 0.43980307 0.07450248 1.00000000 ## frp 0.02460223 0.02511743 -0.06923721 -0.01971455 -0.11317572 ## frp ## diasemchuva 0.02460223 ## precipitacao 0.02511743 ## riscofogo -0.06923721 ## latitude -0.01971455 ## longitude -0.11317572 ## frp 1.00000000
Ao ser gerada a matriz de correlação entre as variáveis diasemchuva, precipitacao, riscofogo, latitude e longitude não se observa nenhuma relação ao mesmo tempo forte e positiva.
Entretanto, chama atenção o fato de a variável riscofogo ter uma relação positiva e moderada com as variáveis longitude e diasemchuva e uma relação negativa e moderada com a variável precipitação.
Ainda que seja fraca, vale destacar a correlação da variável riscofogo com as variáveis latitude e frp , ambas negativas.
pairs.panels(dados_queimadas_v2_final[c( "diasemchuva", "precipitacao", "riscofogo", "latitude","longitude","frp" )])
A função pairs() oferece um painel a partir do qual é possível visualizar como as variáveis de um conjunto de dados estão correlacionadas. Com maior coeficiente de correlação, destaca-se a relação entre riscofogo e longitude, sugerindo a relevância da localização geográfica na avaliação do fenômeno estudado.
Com a função prop.table(), foi verificado se a variável-alvo está balanceada. Muita concentração em 1.
prop.table(table(dados_queimadas_v2_final$riscofogo)) * 100
## ## 0 0.1 0.2 0.3 0.4 0.5 0.6 ## 1.6103060 2.4154589 1.1272142 0.4830918 1.6103060 1.2882448 6.7632850 ## 0.7 0.8 0.9 1 ## 6.2801932 8.6956522 5.6360709 64.0901771
prop.table(table(dados_queimadas_v2_final$diasemchuva)) * 100
## ## 0 1 2 3 4 5 6 ## 1.7713366 1.1272142 2.4154589 2.7375201 2.4154589 0.3220612 2.5764895 ## 7 8 9 10 11 12 13 ## 1.1272142 0.3220612 0.6441224 0.4830918 4.9919485 1.4492754 0.3220612 ## 14 15 16 17 18 19 20 ## 2.2544283 12.2383253 0.9661836 1.1272142 0.8051530 0.6441224 0.9661836 ## 21 22 23 24 25 26 27 ## 1.7713366 2.5764895 1.2882448 1.1272142 0.9661836 2.2544283 0.9661836 ## 28 29 30 31 32 33 34 ## 1.4492754 0.9661836 1.1272142 0.6441224 2.7375201 1.7713366 4.6698873 ## 35 36 37 38 39 40 41 ## 4.3478261 1.7713366 1.6103060 5.1529791 10.4669887 1.6103060 1.9323671 ## 42 43 44 45 46 47 48 ## 1.2882448 0.8051530 1.7713366 0.4830918 0.9661836 0.8051530 0.3220612 ## 50 52 55 59 ## 0.1610306 0.1610306 0.1610306 0.1610306
Muita concentração em 0
prop.table(table(dados_queimadas_v2_final$precipitacao)) * 100
## ## 0 0.1 0.2 0.3 0.4 0.5 0.7 ## 90.6602254 2.7375201 2.2544283 1.2882448 0.1610306 0.9661836 0.3220612 ## 2.3 2.4 2.6 2.8 3.1 3.2 ## 0.1610306 0.1610306 0.1610306 0.3220612 0.6441224 0.1610306
Verificando a frequência dos valores atribuídos à var1 - riscofogo - antes e depois da imputação. Percebe-se maior concentração de valores próximos a um.
as.data.frame(table(dados_queimadas_v2$riscofogo))
## Var1 Freq ## 1 0 5 ## 2 0.1 9 ## 3 0.2 3 ## 4 0.3 2 ## 5 0.4 4 ## 6 0.5 6 ## 7 0.6 25 ## 8 0.7 30 ## 9 0.8 45 ## 10 0.9 28 ## 11 1 279
as.data.frame(table(dados_queimadas_v2_final$riscofogo))
## Var1 Freq ## 1 0 10 ## 2 0.1 15 ## 3 0.2 7 ## 4 0.3 3 ## 5 0.4 10 ## 6 0.5 8 ## 7 0.6 42 ## 8 0.7 39 ## 9 0.8 54 ## 10 0.9 35 ## 11 1 398
Transformando variável do tipo character - bioma - em factor atribuindo uma codificação para elas. Isso é importante para algoritmos que não trabalham com valores categóricos e necessitam de dados de entrada numéricos.
<-data.frame(dados_queimadas_v2_final) dados_queimadas_v3_final $bioma <- as.factor(dados_queimadas_v3_final$bioma) dados_queimadas_v3_final$diasemchuva<- as.numeric(dados_queimadas_v3_final$diasemchuva) dados_queimadas_v3_final
str(dados_queimadas_v3_final)
## 'data.frame': 621 obs. of 12 variables: ## $ datahora : chr "2021/06/26 17:00:00" "2021/06/26 17:00:00" "2021/06/26 17:00:00" "2021/06/26 17:00:00" ... ## $ satelite : chr "AQUA_M-T" "AQUA_M-T" "AQUA_M-T" "AQUA_M-T" ... ## $ pais : chr "Brasil" "Brasil" "Brasil" "Brasil" ... ## $ estado : chr "SAO PAULO" "MATO GROSSO DO SUL" "SAO PAULO" "SAO PAULO" ... ## $ municipio : chr "IBITINGA" "ANTONIO JOAO" "SANTA BARBARA D'OESTE" "CAPIVARI" ... ## $ bioma : Factor w/ 5 levels "Amazonia","Caatinga",..: 3 3 4 4 4 4 4 4 4 4 ... ## $ diasemchuva : num 15 9 4 3 3 3 3 2 7 6 ... ## $ precipitacao: num 0 0 0.1 0.3 0.3 0.3 0.3 0 0 0 ... ## $ riscofogo : num 1 0.5 1 1 1 1 0.9 1 0.8 0.8 ... ## $ latitude : num -21.9 -22.3 -22.8 -22.9 -22.9 ... ## $ longitude : num -48.8 -56 -47.5 -47.5 -47.5 ... ## $ frp : num 4.7 28.9 15.3 74.7 52.9 ...
View(dados_queimadas_v3_final)
Dividindo os dados em treino 60% e teste 40%. Foram utilizados outros percentuais - 90/10 ou 80/20 - mas, em função do tamanho da amostra, optou-se por 60/40 (pela melhor performance). Além disso, optou-se pela seleção aleatória e sem reposição.
<- sample(x = nrow(dados_queimadas_v3_final), indice_divisao_dos_dados size = 0.6 * nrow(dados_queimadas_v3_final), replace = FALSE)#amostra sem reposição
Separando os dados no data frame de treino - dados_treino (60%) - e no data frame de teste - dados_teste (40%).
<- dados_queimadas_v3_final[indice_divisao_dos_dados ,] dados_treino <- dados_queimadas_v3_final[-indice_divisao_dos_dados ,] dados_teste
Treinamento do modelo de regressão linear Nº1
Ajustando o modelo de regressão linear múltiplo e atribuindo os dados ao data frame dados_treino.
<- lm(riscofogo ~ diasemchuva +precipitacao+ latitude + longitude + frp, data = dados_treino[,-c(1:6)]) model_v1 <- predict(model_v1) previsao_treino_v1
Testando o modelo Nº1 de regressão linear: o modelo foi alimentado com as variáveis riscofogo, diassemchuva, precipitação, latitude, longitude e frp. Foram retiradas as colunas de dados do tipo character e a variável target (que se deseja prever).
A relevância dos dados de entrada é medida pelo R2, R-squared ou coeficiente de determinação. Essa é a medida percentual (varia de zero a um) que indica o quanto o modelo consegue explicar a variação da variável resposta. O R2 também é chamado de coeficiente de determinação. O R2 obtido foi de 0.4692, ou seja, o modelo ajustado com esses preditores consegue explicar 46,92% do riscofogo.
<- dados_teste[,-c(1:6,9)] #retirando colunas de character e target teste_v1 View(dados_teste) View(teste_v1) <- predict(model_v1,teste_v1) previsao_teste_v1 summary(model_v1)
## ## Call: ## lm(formula = riscofogo ~ diasemchuva + precipitacao + latitude + ## longitude + frp, data = dados_treino[, -c(1:6)]) ## ## Residuals: ## Min 1Q Median 3Q Max ## -0.85541 -0.07991 0.03181 0.10100 0.43957 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 1.308e+00 8.363e-02 15.640 < 2e-16 *** ## diasemchuva 5.834e-03 6.627e-04 8.804 < 2e-16 *** ## precipitacao -1.775e-01 2.411e-02 -7.360 1.23e-12 *** ## latitude -1.554e-02 1.902e-03 -8.168 5.15e-15 *** ## longitude 1.526e-02 1.606e-03 9.501 < 2e-16 *** ## frp 2.960e-06 4.086e-05 0.072 0.942 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Residual standard error: 0.1696 on 366 degrees of freedom ## Multiple R-squared: 0.4897, Adjusted R-squared: 0.4827 ## F-statistic: 70.24 on 5 and 366 DF, p-value: < 2.2e-16
summary(model_v1)
## ## Call: ## lm(formula = riscofogo ~ diasemchuva + precipitacao + latitude + ## longitude + frp, data = dados_treino[, -c(1:6)]) ## ## Residuals: ## Min 1Q Median 3Q Max ## -0.85541 -0.07991 0.03181 0.10100 0.43957 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 1.308e+00 8.363e-02 15.640 < 2e-16 *** ## diasemchuva 5.834e-03 6.627e-04 8.804 < 2e-16 *** ## precipitacao -1.775e-01 2.411e-02 -7.360 1.23e-12 *** ## latitude -1.554e-02 1.902e-03 -8.168 5.15e-15 *** ## longitude 1.526e-02 1.606e-03 9.501 < 2e-16 *** ## frp 2.960e-06 4.086e-05 0.072 0.942 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Residual standard error: 0.1696 on 366 degrees of freedom ## Multiple R-squared: 0.4897, Adjusted R-squared: 0.4827 ## F-statistic: 70.24 on 5 and 366 DF, p-value: < 2.2e-16
Detectando a colinearidade: quando duas ou mais variáveis preditoras são altamente correlacionadas, aumenta o erro padrão gerando estimativas instáveis para avaliar valores maiores que 5.
Os vifs - fator de inflação da variância - medem o quanto o coeficiente de regressão aumenta se houver correlação entre os preditores. Não há multicolinearidade se todos os vifs forem 1. Entretanto, os preditores estarão correlacionados, se todos os vifs forem maiores que 1.
kable(vif(model_v1 ),align='c')
x diasemchuva 1.066411 precipitacao 1.121661 latitude 1.108797 longitude 1.052768 frp 1.020710 Fazendo seleção de atributos com o método Akaike(AIC) que mede a qualidade do modelo estatístico. Quanto menor o valor, maior a qualidade e a simplicidade.
<-stepAIC(model_v1, direction='both', trace=FALSE) stepsummary(step)
## ## Call: ## lm(formula = riscofogo ~ diasemchuva + precipitacao + latitude + ## longitude, data = dados_treino[, -c(1:6)]) ## ## Residuals: ## Min 1Q Median 3Q Max ## -0.85499 -0.07951 0.03197 0.10093 0.43956 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 1.307291 0.083057 15.740 < 2e-16 *** ## diasemchuva 0.005837 0.000661 8.830 < 2e-16 *** ## precipitacao -0.177524 0.024063 -7.378 1.09e-12 *** ## latitude -0.015538 0.001899 -8.181 4.67e-15 *** ## longitude 0.015244 0.001591 9.583 < 2e-16 *** ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Residual standard error: 0.1693 on 367 degrees of freedom ## Multiple R-squared: 0.4897, Adjusted R-squared: 0.4841 ## F-statistic: 88.03 on 4 and 367 DF, p-value: < 2.2e-16
Incluindo uma coluna com os valores previstos no dataset.
<- cbind(dados_teste, previsao_teste_v1) dados_teste_com_previsoes
Colocando a variável target ao lado dos valores previstos.
<- dados_teste_com_previsoes %>% dados_teste_com_previsoesselect(datahora,satelite,pais,estado,municipio,bioma,diasemchuva,precipitacao,latitude,longitude,frp,riscofogo,previsao_teste_v1)
View(dados_teste_com_previsoes)
Treinamento do modelo de regressão linear Nº2
Ajustando o modelo de regressão linear múltiplo e atribuindo os dados ao data frame model_v2.
<- lm(riscofogo ~bioma + diasemchuva + precipitacao + latitude + longitude + frp, data = dados_treino) model_v2 <- predict(model_v2) previsao_treino_v2
Testando o modelo Nº2 de regressão linear: modelo foi alimentado com as variáveis riscofogo, bioma, diassemchuva, precipitação, latitude, longitude e frp. Foram retiradas as colunas de dados do tipo character e a variável target (que se deseja prever), mas foi incluída a variável bioma, que inicialmente era do tipo string e foi transformada com a função factor().
O R2 obtido foi de 0.5583, ou seja, o modelo ajustado com esses preditores consegue explicar 55,83% do riscofogo , o que significa que este modelo apresenta uma acurácia superior ao modelo anterior.
<- dados_teste[,-c(1:5,9)] #retirando coluna de character e target teste_v2 View(dados_teste) View(teste_v2) <- predict(model_v2,teste_v2) previsao_teste_v2 View(previsao_teste_v1)
summary(model_v2)
## ## Call: ## lm(formula = riscofogo ~ bioma + diasemchuva + precipitacao + ## latitude + longitude + frp, data = dados_treino) ## ## Residuals: ## Min 1Q Median 3Q Max ## -0.74031 -0.05470 0.01535 0.09728 0.43063 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 1.257e+00 1.104e-01 11.386 < 2e-16 *** ## biomaCaatinga -2.262e-02 4.744e-02 -0.477 0.63379 ## biomaCerrado 8.033e-02 2.439e-02 3.293 0.00109 ** ## biomaMata Atlantica -9.212e-02 4.982e-02 -1.849 0.06525 . ## biomaPantanal 1.639e-01 8.445e-02 1.941 0.05309 . ## diasemchuva 5.286e-03 6.422e-04 8.231 3.41e-15 *** ## precipitacao -1.598e-01 2.321e-02 -6.884 2.58e-11 *** ## latitude -1.665e-02 2.378e-03 -7.000 1.25e-11 *** ## longitude 1.504e-02 2.082e-03 7.225 2.99e-12 *** ## frp 1.235e-05 3.902e-05 0.316 0.75181 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Residual standard error: 0.1617 on 362 degrees of freedom ## Multiple R-squared: 0.541, Adjusted R-squared: 0.5296 ## F-statistic: 47.41 on 9 and 362 DF, p-value: < 2.2e-16
Treinamento do modelo de regressão linear Nº3
Ajustando o modelo de regressão linear múltiplo e atribuindo os dados ao data frame model_v3.
<- lm(riscofogo ~diasemchuva + precipitacao + latitude + longitude , data = dados_treino) model_v3 <- predict(model_v3) previsao_treino_v3
Testando o modelo Nº3 de regressão linear: modelo foi alimentado com as variáveis riscofogo, diassemchuva, precipitação, latitude e longitude. Não foram incluídas as colunas de dados bioma e frp.
O R2 obtido foi de 0.492, ou seja, o modelo ajustado com esses preditores consegue explicar 49,2% do riscofogo, o que significa que este modelo apresenta uma acurácia inferior aos modelos anteriores.
<- dados_teste[,-c(1:6,9,12)] teste_v3 View(dados_teste) View(teste_v3) <- predict(model_v3,teste_v3) previsao_teste_v3 View(previsao_teste_v3)
summary(model_v3)
## ## Call: ## lm(formula = riscofogo ~ diasemchuva + precipitacao + latitude + ## longitude, data = dados_treino) ## ## Residuals: ## Min 1Q Median 3Q Max ## -0.85499 -0.07951 0.03197 0.10093 0.43956 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 1.307291 0.083057 15.740 < 2e-16 *** ## diasemchuva 0.005837 0.000661 8.830 < 2e-16 *** ## precipitacao -0.177524 0.024063 -7.378 1.09e-12 *** ## latitude -0.015538 0.001899 -8.181 4.67e-15 *** ## longitude 0.015244 0.001591 9.583 < 2e-16 *** ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Residual standard error: 0.1693 on 367 degrees of freedom ## Multiple R-squared: 0.4897, Adjusted R-squared: 0.4841 ## F-statistic: 88.03 on 4 and 367 DF, p-value: < 2.2e-16
Treinamento do modelo de regressão linear Nº4
Ajustando o modelo de regressão linear múltiplo e atribuindo os dados ao data frame dados_treino_v2,
Testando o modelo Nº4 de regressão linear: modelo foi alimentado com as variáveis riscofogo, bioma, diassemchuva, precipitação, latitude, longitude e frp. As variáveis latitude e longitude foram elevadas ao quadrado, por serem números negativos. Foi retirada coluna de variável do tipo character e a variável target (que se deseja prever).
O R2 obtido foi de 0,4659 , ou seja, o modelo ajustado com esses preditores consegue explicar 46,59% do riscofogo, o que significa que este modelo apresenta uma acurácia inferior aos modelos 2.
<- dados_treino dados_treino_v2 $latitude <- dados_treino$latitude^2 dados_treino_v2$longitude <- dados_treino$longitude^2 dados_treino_v2<- dados_teste dados_teste_v2 $latitude <- dados_teste$latitude^2 dados_teste_v2$longitude <- dados_teste$longitude^2 dados_teste_v2
<- lm(riscofogo ~bioma + diasemchuva + precipitacao + latitude + longitude + frp, data = dados_treino_v2) model_v4 <- predict(model_v4) previsao_treino_v4
<- dados_teste_v2[,-c(1:5,9)] #retirando coluna de character e target teste_v4 View(dados_teste_v2) View(teste_v4) <- predict(model_v4,teste_v4) previsao_teste_v4 summary(model_v4)
## ## Call: ## lm(formula = riscofogo ~ bioma + diasemchuva + precipitacao + ## latitude + longitude + frp, data = dados_treino_v2) ## ## Residuals: ## Min 1Q Median 3Q Max ## -0.74892 -0.05508 0.01749 0.10398 0.47115 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 9.124e-01 6.148e-02 14.840 < 2e-16 *** ## biomaCaatinga 3.635e-03 4.711e-02 0.077 0.9385 ## biomaCerrado 1.008e-01 2.457e-02 4.101 5.09e-05 *** ## biomaMata Atlantica -6.036e-02 5.382e-02 -1.122 0.2628 ## biomaPantanal 1.842e-01 8.714e-02 2.113 0.0352 * ## diasemchuva 5.503e-03 6.679e-04 8.238 3.23e-15 *** ## precipitacao -1.737e-01 2.355e-02 -7.376 1.12e-12 *** ## latitude 5.054e-04 9.853e-05 5.129 4.75e-07 *** ## longitude -1.235e-04 1.953e-05 -6.322 7.60e-10 *** ## frp 1.601e-05 4.004e-05 0.400 0.6894 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Residual standard error: 0.166 on 362 degrees of freedom ## Multiple R-squared: 0.5164, Adjusted R-squared: 0.5044 ## F-statistic: 42.95 on 9 and 362 DF, p-value: < 2.2e-16
summary(model_v4)
## ## Call: ## lm(formula = riscofogo ~ bioma + diasemchuva + precipitacao + ## latitude + longitude + frp, data = dados_treino_v2) ## ## Residuals: ## Min 1Q Median 3Q Max ## -0.74892 -0.05508 0.01749 0.10398 0.47115 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 9.124e-01 6.148e-02 14.840 < 2e-16 *** ## biomaCaatinga 3.635e-03 4.711e-02 0.077 0.9385 ## biomaCerrado 1.008e-01 2.457e-02 4.101 5.09e-05 *** ## biomaMata Atlantica -6.036e-02 5.382e-02 -1.122 0.2628 ## biomaPantanal 1.842e-01 8.714e-02 2.113 0.0352 * ## diasemchuva 5.503e-03 6.679e-04 8.238 3.23e-15 *** ## precipitacao -1.737e-01 2.355e-02 -7.376 1.12e-12 *** ## latitude 5.054e-04 9.853e-05 5.129 4.75e-07 *** ## longitude -1.235e-04 1.953e-05 -6.322 7.60e-10 *** ## frp 1.601e-05 4.004e-05 0.400 0.6894 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Residual standard error: 0.166 on 362 degrees of freedom ## Multiple R-squared: 0.5164, Adjusted R-squared: 0.5044 ## F-statistic: 42.95 on 9 and 362 DF, p-value: < 2.2e-16
Conclusão
Os insights gerados com base de dados oriunda da plataforma Programa Queimadas / Inpe podem ser sistematizados a partir de três momentos-chave deste estudo: (a) a extração dos dados; (b) a análise exploratória dos dados; (c) a aplicação de experimentos de regressão linear.
No processo decisório de seleção e de implementação de ferramentas e de métodos em ciência de dados e em machine learning, foram se desvelando limites, deslimites e demandas - neste caso, nem todas cumpridas - ao objetivo traçado de predição do fenômeno dos incêndios e das queimadas em contexto brasileiro. Isso permitiu a identificação, em cada uma dessas etapas, de insights, de lacunas / falhas e de perspectivas futuras de investigação.
1a ETAPA: extração automatizada de dados a partir da plataforma de dados abertos
(A) INSIGHTS:
Base de dados amostral pequena;
Volume de dados faltantes significativo;
Valores negativos discrepantes acusando presença de outliers.
Como o dataset foi descrito como pequeno, optou-se pela linguagem R, bem como pelo uso das plataformas Github e Git para o armazenamento e para o fluxo de trabalho colaborativo, com o benefício da possibilidade de versionamento.
(B) LACUNAS / FALHAS:
Investigação da natureza dos outliers e dos dados faltantes;
Investigação / Pesquisa da natureza do fenômeno estudado e das variáveis que compõem a base de dados abertos do Programa Queimadas/Inpe.
Entrevista / Pesquisa para identificar o modelo de negócios que sustenta a plataforma Programa Queimadas / Inpe para melhor direcionamento do fluxo de trabalho diário automatizado para extração e para o armazenamento dos dados coletados em arquivo *.csv no diretório do Github.
(C) PERSPECTIVAS FUTURAS DE INVESTIGAÇÃO:
Entrevista com especialistas para compreender o modelo de negócios que sustenta a base de dados da plataforma Programa Queimadas / Inpe: o processo de coleta dos dados, a natureza e o sistema de valoração das variáveis da base de dados e as razões dos NAs e outliers.
Entrevista com especialistas para compreender a natureza do fenômeno estudado - queimadas e incêndios - no contexto brasileiro: sazonalidade, especificidades regionais e aspectos históricos e culturais.
Entrevista com especialistas para compreender a relação entre o fenômeno estudado, os indicadores geoeconômicos, as políticas públicas e as práticas de desenvolvimento econômico sustentável para a proteção do meio ambiente.
Extração de dados a partir da perspectiva regional. Muito embora a exploração inicial dos dados possa sugerir a influência de aspectos regionais geo-climáticos, o grau de profundidade da investigação, os métodos e ferramentas aplicados e os dados obtidos não permitem ampliar as inferências realizadas com os experimentos.
2a ETAPA: análise exploratória de dados.
(A) INSIGHTS:
Distribuição assimétrica dos dados, com outliers e concentração de dados sugerindo erro na coleta e / ou provável tendência de comportamento das variáveis.
Quadro comparativo do comportamento das variáveis antes de depois da aplicação do filtro de valores negativos e da imputação para dados ausentes.
Identificação e implementação de funções e de métodos para correção dos dados faltantes e outliers, tendo a preocupação de manter o perfil de distribuição da amostra, para posterior aplicação dos modelos de regressão linear.
(B)LACUNAS / FALHAS:
Explorar as medidas de dispersão e as medidas de tendência central, bem como de gráficos, e estabelecer relações a partir do comportamento das variáveis tendo em vista que este pode estar ligado a aspectos geo-climáticos regionais e à sazonalidade do fenômeno estudado.
Explorar os sistemas de valoração das variáveis (riscofogo, precipitação, diasemchuva, longitude e latitude) para ver como eles refletem aspectos geo-climáticos regionais e a sazonalidade do fenômeno estudado.
(C) PERSPECTIVAS FUTURAS DE INVESTIGAÇÃO:
Verificar se o comportamento das variáveis - revelado pelas medidas de dispersão e pelas medidas de tendência central, bem como de gráficos - pode estar associado a aspectos geo-climáticos regionais e à sazonalidade do fenômeno estudado.
Compreender os sistemas de valoração das variáveis e como eles podem estar ligados a aspectos geo-climáticos regionais e à sazonalidade do fenômeno estudado.
3a ETAPA: experimentos com aplicação de modelos de regressão linear.
(A) INSIGHTS:
Divisão do dataset para treinamento e para teste em 60% / 40%, uma vez que esta proporção resultou em melhor performance se comparada com as proporções 90% / 10% e 80% / 20%, que também foram experimentadas.
Embora os modelos empregados não tenham se mostrado com elevada acurácia na predição do fenômeno estudado, os experimentos sugerem correlação entre a variável target - riscofogo - e variáveis preditoras - longitude, diasemchuva, bioma e precipitação.
(B) LACUNAS / FALHAS:
Houve a tentativa de aplicar o modelo de árvore de decisão, mas a equipe não conseguiu incorporar os resultados obtidos com esse experimento.
(C) PERSPECTIVAS FUTURAS DE INVESTIGAÇÃO:
Aplicar o modelo de árvore de decisão. Verificar como os resultados obtidos na aplicação dos experimentos podem estar associados a aspectos geo-climáticos regionais e à sazonalidade do fenômeno estudado a fim de balizar ações de proteção ao meio ambiente.
Portanto, conclui-se que este trabalho é uma exploração, ainda inicial, de ferramentas e de métodos em ciência de dados e em machine learning. Acredita-se que ele abre espaço para a formulação de relatórios técnicos acerca do fenômeno estudado. Vale destacar que o alerta de especialistas para os impactos das queimadas e incêndios nas mudanças climáticas verificadas em todo o planeta impõe ações de proteção ao meio ambiente não somente por parte dos gestores públicos brasileiros, mas a toda a sociedade, seja a nível nacional, seja a nível internacional.
A equipe se mostra interessada, sobretudo pelo compromisso ético em aplicar as técnicas e os métodos em prol de uma demanda premente para o desenvolvimento econômico sustentável, em dar continuidade ao trabalho iniciado dentro dos esforços lançados pela Data Science Academy, na segunda temporada do Programa de Mentoria entre Alunos. Acredita-se que, por sua natureza multidisciplinar, com profissionais de diferentes áreas - direito, tecnologia da informação, estatística, engenharia agronômica e comunicação social - o grupo possa ampliar o escopo das análises apresentadas.
Por isso, diante dos desafios experimentados (delimitação do tema, investigação do fenômeno, escolha de ferramentas e métodos, obtenção de insights, etc), ao longo de quatro meses, a equipe agradece o espaço de mentoria que possibilitou a formação de um grupo de trabalho, com diferentes competências - ainda que em diferentes estágios de formação em ciência de dados - e em um ambiente colaborativo.Referências
Monitoramento dos Focos Ativos por Países:
https://queimadas.dgi.inpe.br/queimadas/portal-static/estatisticas_paises/Risco de Fogo - Programa Queimadas - INPE:
https://queimadas.dgi.inpe.br/queimadas/fip-risco/
- Análise Exploratória dos dados