Previsão de risco de fogo em Vegetação

Fonte: Queimadas 2010.

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

Introdução
  1. Descrição das variáveis
  2. 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 n4

Introduçã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.

dados_queimadas_v2 =filter(dados_queimadas_v1, diasemchuva >=0 | is.na(diasemchuva),riscofogo >=0 | is.na(riscofogo))

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)

regra_imputacao <- mice((dados_queimadas_v2[,-c(chr_col)]), 
                        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.

total_data <- complete(regra_imputacao, 1)
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()

dados_queimadas_v2_final <- cbind(dados_queimadas_v2[,c(chr_col)],total_data)
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.

diaschuva_municipio_antes<-aggregate(data = dados_queimadas_v2, diasemchuva ~ municipio, mean)
diaschuva_municipio_antes<-aggregate(data = dados_queimadas_v2_final, diasemchuva ~ municipio, mean)
diaschuva_estado_antes<- aggregate(data = dados_queimadas_v2, diasemchuva ~ estado, mean)
diaschuva_estado_depois<- aggregate(data = dados_queimadas_v2_final, diasemchuva ~ estado, mean)
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).

x = dados_queimadas_v2_final$diasemchuva
y = dados_queimadas_v2_final$riscofogo
cor(x,y)
## [1] 0.3184
x = dados_queimadas_v2_final$precipitacao
y = dados_queimadas_v2_final$riscofogo
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).

x = dados_queimadas_v2_final$frp
y = dados_queimadas_v2_final$riscofogo
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.

dados_queimadas_v3_final <-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)
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.

indice_divisao_dos_dados <- sample(x = nrow(dados_queimadas_v3_final),
                              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_treino <- dados_queimadas_v3_final[indice_divisao_dos_dados ,]
dados_teste <- dados_queimadas_v3_final[-indice_divisao_dos_dados ,]

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.

model_v1 <- lm(riscofogo ~ diasemchuva +precipitacao+ latitude + longitude + frp, data = dados_treino[,-c(1:6)])
previsao_treino_v1 <- predict(model_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.

teste_v1 <- dados_teste[,-c(1:6,9)] #retirando colunas de character e target
View(dados_teste)
View(teste_v1)
previsao_teste_v1 <- predict(model_v1,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.

step<-stepAIC(model_v1, direction='both', trace=FALSE)
summary(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.

dados_teste_com_previsoes <- cbind(dados_teste, previsao_teste_v1)

Colocando a variável target ao lado dos valores previstos.

dados_teste_com_previsoes<- dados_teste_com_previsoes %>%
        select(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.

model_v2 <- lm(riscofogo ~bioma  + diasemchuva + precipitacao + latitude + longitude + frp, data = dados_treino)
previsao_treino_v2 <- predict(model_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.

teste_v2 <- dados_teste[,-c(1:5,9)] #retirando coluna de character e target
View(dados_teste)
View(teste_v2)
previsao_teste_v2 <- predict(model_v2,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.

model_v3 <- lm(riscofogo ~diasemchuva + precipitacao + latitude + longitude , data = dados_treino)
previsao_treino_v3 <- predict(model_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.

teste_v3 <- dados_teste[,-c(1:6,9,12)]
View(dados_teste)
View(teste_v3)
previsao_teste_v3 <- predict(model_v3,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_v2 <- dados_treino
dados_treino_v2$latitude <- dados_treino$latitude^2
dados_treino_v2$longitude <- dados_treino$longitude^2
dados_teste_v2 <- dados_teste
dados_teste_v2$latitude <- dados_teste$latitude^2
dados_teste_v2$longitude <- dados_teste$longitude^2
model_v4 <- lm(riscofogo ~bioma  + diasemchuva + precipitacao + latitude + longitude + frp, data = dados_treino_v2)
previsao_treino_v4 <- predict(model_v4)
teste_v4 <- dados_teste_v2[,-c(1:5,9)] #retirando coluna de character e target
View(dados_teste_v2)
View(teste_v4)
previsao_teste_v4 <- predict(model_v4,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