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).
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)
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
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
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
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
)
dados_scaled <- scale(dados_num)
heatmap(cor(dados_num))
pca <- prcomp(dados_scaled)
fviz_pca_biplot(pca, label = "var", repel = TRUE)
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
)
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)
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)
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
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.