Introdução

Este relatório apresenta uma análise multivariada aplicada a dados agroambientais da Amazônia, envolvendo estatística descritiva, análise de correlação, Análise de Componentes Principais (PCA), métodos de clusterização hierárquica e não hierárquica (K-means), além de uma introdução ao aprendizado supervisionado com K-Nearest Neighbors (KNN).

Carregando os pacotes

knitr::opts_chunk$set(warning = FALSE, message = FALSE)

library(tidyverse)
## Warning: pacote 'tidyverse' foi compilado no R versão 4.5.2
## Warning: pacote 'dplyr' foi compilado no R versão 4.5.2
## Warning: pacote 'lubridate' foi compilado no R versão 4.5.2
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.1     ✔ stringr   1.5.2
## ✔ ggplot2   4.0.0     ✔ tibble    3.3.0
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.1.0     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(FactoMineR)
library(factoextra)
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library(cluster)
library(psych)
## Warning: pacote 'psych' foi compilado no R versão 4.5.2
## 
## Anexando pacote: 'psych'
## 
## Os seguintes objetos são mascarados por 'package:ggplot2':
## 
##     %+%, alpha
library(GGally)
library(plotly)
## 
## Anexando pacote: 'plotly'
## 
## O seguinte objeto é mascarado por 'package:ggplot2':
## 
##     last_plot
## 
## O seguinte objeto é mascarado por 'package:stats':
## 
##     filter
## 
## O seguinte objeto é mascarado por 'package:graphics':
## 
##     layout
library(corrplot)
## Warning: pacote 'corrplot' foi compilado no R versão 4.5.2
## corrplot 0.95 loaded
library(class)

Leitura dos dados

dados <- read.csv(
  "https://raw.githubusercontent.com/leocbc/ANALISE-MULTIVARIADA/main/dataset_agroamazonia_novo500.csv"
)
head(dados)
##   Area_ID  Latitude Longitude  Especie      Solo Prod_Anual_Ton Biomassa_t_ha
## 1    B001 -3.006976 -58.86606 Castanha Gleissolo       24.65475      17.85033
## 2    B002 -2.040574 -59.42174     Açaí Gleissolo       32.32214      20.65256
## 3    B003 -2.737874 -59.57203     Açaí Argissolo       31.41310      16.82419
## 4    B004 -2.209061 -60.12578  Cupuaçu Argissolo       28.25085      18.30535
## 5    B005 -2.150542 -58.99749    Cacau Argissolo       28.31624      18.28941
## 6    B006 -2.436358 -60.15783  Cupuaçu  Neossolo       30.85703      20.05202
##   Teor_Carbono_pct Indice_Sustentabilidade Custo_Producao_R..ha
## 1         48.42404               0.8941890             3003.876
## 2         48.40052               0.6831990             3758.036
## 3         61.88544               0.5662440             4342.916
## 4         48.95000               0.6920021             3846.796
## 5         55.88174               0.5966441             3549.721
## 6         56.15684               0.6778461             3231.238
##   Preco_Venda_R..Ton CH4_emissao_kg_ha N2O_emissao_kg_ha Temp_Solo_C
## 1           883.9234          60.45112          3.892563    32.14220
## 2          1043.9335          58.29069          3.023518    28.77540
## 3           831.4906          71.84439          5.458852    24.89744
## 4           985.9614          51.82982          4.130885    25.48888
## 5           848.3334          67.67823          4.214354    27.84974
## 6           923.1993          54.06961          6.189865    24.85003
##   Umidade_Solo_pct Precipitacao_mm
## 1         42.28899        2166.962
## 2         33.43304        2181.809
## 3         49.26666        2199.824
## 4         30.78419        2135.606
## 5         45.67244        2147.427
## 6         36.80669        2825.800

Estatística Descritiva

A estatística descritiva permitiu uma primeira exploração do comportamento das variáveis, evidenciando diferenças expressivas de escala, amplitude e dispersão. Algumas variáveis apresentaram valores médios elevados, enquanto outras exibiram menor variabilidade, indicando heterogeneidade no conjunto de dados.

Essa diversidade de escalas reforça a importância da padronização dos dados, uma vez que métodos multivariados, como PCA e análise de agrupamento, são sensíveis à magnitude das variáveis. Sem a padronização, variáveis com maiores valores absolutos poderiam dominar indevidamente os resultados.

summary(dados)
##    Area_ID             Latitude        Longitude        Especie         
##  Length:500         Min.   :-3.500   Min.   :-60.50   Length:500        
##  Class :character   1st Qu.:-3.120   1st Qu.:-59.95   Class :character  
##  Mode  :character   Median :-2.739   Median :-59.48   Mode  :character  
##                     Mean   :-2.743   Mean   :-59.50                     
##                     3rd Qu.:-2.341   3rd Qu.:-59.02                     
##                     Max.   :-2.000   Max.   :-58.50                     
##      Solo           Prod_Anual_Ton   Biomassa_t_ha    Teor_Carbono_pct
##  Length:500         Min.   : 1.382   Min.   : 5.741   Min.   :36.26   
##  Class :character   1st Qu.:24.387   1st Qu.:16.472   1st Qu.:45.83   
##  Mode  :character   Median :28.663   Median :19.360   Median :49.02   
##                     Mean   :28.785   Mean   :19.213   Mean   :49.06   
##                     3rd Qu.:33.034   3rd Qu.:21.670   3rd Qu.:52.48   
##                     Max.   :48.246   Max.   :30.950   Max.   :61.89   
##  Indice_Sustentabilidade Custo_Producao_R..ha Preco_Venda_R..Ton
##  Min.   :0.1522          Min.   :1581         Min.   : 527.4    
##  1st Qu.:0.5511          1st Qu.:3161         1st Qu.: 819.1    
##  Median :0.6795          Median :3593         Median : 890.7    
##  Mean   :0.6770          Mean   :3619         Mean   : 896.2    
##  3rd Qu.:0.8094          3rd Qu.:4125         3rd Qu.: 967.0    
##  Max.   :1.0000          Max.   :5674         Max.   :1247.9    
##  CH4_emissao_kg_ha N2O_emissao_kg_ha  Temp_Solo_C    Umidade_Solo_pct
##  Min.   :24.94     Min.   :0.9063    Min.   :22.09   Min.   :20.36   
##  1st Qu.:52.68     1st Qu.:3.7445    1st Qu.:26.57   1st Qu.:39.19   
##  Median :61.24     Median :4.6303    Median :28.02   Median :43.86   
##  Mean   :60.90     Mean   :4.6472    Mean   :28.02   Mean   :43.62   
##  3rd Qu.:68.88     3rd Qu.:5.5133    3rd Qu.:29.35   3rd Qu.:48.18   
##  Max.   :97.19     Max.   :8.5953    Max.   :34.20   Max.   :63.93   
##  Precipitacao_mm
##  Min.   :1490   
##  1st Qu.:2188   
##  Median :2390   
##  Mean   :2381   
##  3rd Qu.:2570   
##  Max.   :3204

Seleção das variáveis numéricas

dados_num <- dados %>% select(where(is.numeric))
head(dados_num)
##    Latitude Longitude Prod_Anual_Ton Biomassa_t_ha Teor_Carbono_pct
## 1 -3.006976 -58.86606       24.65475      17.85033         48.42404
## 2 -2.040574 -59.42174       32.32214      20.65256         48.40052
## 3 -2.737874 -59.57203       31.41310      16.82419         61.88544
## 4 -2.209061 -60.12578       28.25085      18.30535         48.95000
## 5 -2.150542 -58.99749       28.31624      18.28941         55.88174
## 6 -2.436358 -60.15783       30.85703      20.05202         56.15684
##   Indice_Sustentabilidade Custo_Producao_R..ha Preco_Venda_R..Ton
## 1               0.8941890             3003.876           883.9234
## 2               0.6831990             3758.036          1043.9335
## 3               0.5662440             4342.916           831.4906
## 4               0.6920021             3846.796           985.9614
## 5               0.5966441             3549.721           848.3334
## 6               0.6778461             3231.238           923.1993
##   CH4_emissao_kg_ha N2O_emissao_kg_ha Temp_Solo_C Umidade_Solo_pct
## 1          60.45112          3.892563    32.14220         42.28899
## 2          58.29069          3.023518    28.77540         33.43304
## 3          71.84439          5.458852    24.89744         49.26666
## 4          51.82982          4.130885    25.48888         30.78419
## 5          67.67823          4.214354    27.84974         45.67244
## 6          54.06961          6.189865    24.85003         36.80669
##   Precipitacao_mm
## 1        2166.962
## 2        2181.809
## 3        2199.824
## 4        2135.606
## 5        2147.427
## 6        2825.800

Correlograma

cor_matrix <- cor(dados_num, use = "complete.obs")
p_matrix <- cor.mtest(dados_num)$p
corrplot(
  cor_matrix,
  p.mat = p_matrix,
  sig.level = 0.05,
  insig = "blank",
  type = "upper",
  order = "hclust",
  tl.col = "black",
  tl.srt = 45
)

Padronização dos dados

dados_scaled <- scale(dados_num)

Heatmap de Correlação

heatmap(cor(dados_num))

PCA

pca <- prcomp(dados_scaled)
fviz_pca_biplot(pca, label = "var", repel = TRUE)

Análise PCA

A Análise de Componentes Principais foi aplicada aos dados padronizados com o objetivo de sintetizar a informação contida nas variáveis originais em um número reduzido de componentes. Os primeiros componentes principais concentraram a maior parte da variância total dos dados, indicando que uma parcela significativa da informação pode ser representada em um espaço de menor dimensão.

O biplot da PCA permitiu visualizar simultaneamente as observações e as variáveis, evidenciando a contribuição diferencial das variáveis para os componentes principais e sugerindo padrões de separação parcial entre espécies. Esses resultados indicam que as variáveis ambientais e produtivas exercem influência distinta sobre a organização das observações no espaço multivariado.

plot_ly(
  x = pca$x[,1],
  y = pca$x[,2],
  z = pca$x[,3],
  type = "scatter3d",
  mode = "markers",
  color = dados$Especie
)

Clusterização Hierárquica

A análise de agrupamento hierárquico foi realizada com base na distância Euclidiana e no método de ligação de Ward. A escolha desse método se justifica por sua capacidade de minimizar a variância interna dos clusters, favorecendo a formação de grupos mais homogêneos.

O dendrograma resultante indicou a existência de quatro agrupamentos principais, sugerindo similaridade entre áreas com características agroambientais semelhantes. A estrutura hierárquica observada permite compreender gradualmente o processo de fusão dos grupos, fornecendo uma visão detalhada das relações de proximidade entre as observações.

dist_eucl <- dist(dados_scaled)
hc_ward <- hclust(dist_eucl, method = "ward.D2")
plot(hc_ward, labels = dados$Area_ID)
rect.hclust(hc_ward, k = 4, border = 2:5)

K-means

Complementarmente, aplicou-se o método de K-means considerando quatro clusters, número definido com base na interpretação do dendrograma hierárquico. O algoritmo particionou o conjunto de dados em grupos relativamente distintos, ainda que com alguma sobreposição entre eles.

A proporção da variância explicada entre os clusters indicou uma separação moderada, sugerindo que parte considerável da variabilidade permanece dentro dos grupos. Ainda assim, os resultados do K-means mostraram-se coerentes com a análise hierárquica, reforçando a existência de padrões estruturais no conjunto de dados.

set.seed(123)
k4 <- kmeans(dados_scaled, centers = 4, nstart = 25)
fviz_cluster(k4, data = dados_scaled)

KNN

Na etapa de aprendizado supervisionado, utilizou-se o algoritmo K-Nearest Neighbors (KNN) para classificar a variável Especie com base nas variáveis numéricas padronizadas. O conjunto de dados foi dividido em dados de treinamento (80%) e teste (20%), garantindo uma avaliação imparcial do modelo.

O desempenho do modelo foi avaliado por meio da matriz de confusão e do cálculo da acurácia. Os resultados indicaram que as variáveis utilizadas apresentam capacidade moderada de discriminação entre as espécies, evidenciando o potencial do KNN como ferramenta auxiliar na classificação e tomada de decisão em contextos agroambientais.

resposta <- dados$Especie
dados_scaled <- scale(dados_num)

set.seed(123)
indice <- sample(1:nrow(dados_scaled), size = 0.8 * nrow(dados_scaled))

treino_var <- dados_scaled[indice, ]
treino_res <- resposta[indice]

teste_var <- dados_scaled[-indice, ]
teste_res <- resposta[-indice]

knn_prediction <- knn(
  train = treino_var,
  test = teste_var,
  cl = treino_res,
  k = 3
)

confusion_matrix <- table(teste_res, knn_prediction)
accuracy <- sum(diag(confusion_matrix)) / sum(confusion_matrix)
accuracy
## [1] 0.19

Conclusão

A aplicação das técnicas de análise multivariada permitiu identificar padrões relevantes e estruturas latentes nos dados agroambientais analisados. A PCA mostrou-se eficiente na redução da dimensionalidade e na identificação das principais direções de variabilidade, enquanto os métodos de clusterização revelaram agrupamentos consistentes entre áreas e espécies.

A análise supervisionada por meio do KNN demonstrou potencial para a classificação de espécies com base em variáveis ambientais e produtivas, embora seus resultados dependam diretamente da qualidade e representatividade dos dados utilizados.

Como perspectivas futuras, recomenda-se a incorporação de novas variáveis, a avaliação de diferentes métricas de distância e algoritmos de classificação, bem como a validação dos resultados com dados independentes, visando aprimorar a robustez das inferências e aplicações práticas do modelo.