13 R Modulo 4.2 - Estrutura do habitat
13.1 Sobre os dados
Usaremos para esse tutorial dois conjuntos de dados. A Matriz ambiental (ppbio06p-amb.xlsx) de dados coletados no Programa de Pesquisa em Biodiversidade - PPBio (Veja Programa de Pesquisa em Biodiversidade – PPBio). Esses são dados de variáveis ambientais distribuidas em diversas unidades amostrais (UA’s ou sítios). Essa é a matriz bruta de dados, porque os valores ainda não foram transformados (SOKAL; ROHLF, 1995). Note que as variáveis foram medidas em diferentes unidades (cm, m, °C, mg/L, etc.), com uma alta amplitude de variação, sugerido uso de matriz transformada e/ou reescalada. Além disso usaremos a tabela de agrupamentos (ppbio06-grupos).
Revise as informações sobre as bases de dados no Capítulo 3. As dases de dados para esse Módulo podem ser baixadam na Seção 3.2.
13.2 Organização básica
dev.off() #apaga os graficos, se houver algum
rm(list=ls(all=TRUE)) #limpa a memória
cat("\014") #limpa o console 13.2.1 Instalando os pacotes necessários para esse módulo.
Se você ja fez o módulo anterior, não vai precisar instalar nenhum pacote novo. Os pacotes necessários serão carregados ao longo desse módulo.
install.packages("psych")
install.packages("corrplot")Agora vamos definir o diretório de trabalho. Esse código é usado para obter e definir o diretório de trabalho atual no R. O comando getwd() retorna o caminho do diretório onde o R está lendo e salvando arquivos. O comando setwd() muda esse diretório de trabalho para o caminho especificado entre aspas. No seu caso, você deve ajustar o caminho para o seu próprio diretório de trabalho. Lembre de usar a barra “/” entre os diretórios. E não a contra-barra “\”.
13.3 Importando a planilha
Note que o símbolo # em programação R significa que o texto que vem depois dele é um comentário e não será executado pelo programa. Isso é útil para explicar o código ou deixar anotações.
- Ajuste a primeira linha do código abaixo para refletir “C:/Seu/Diretório/De/Trabalho/Planilha.xlsx”.
- Ajuste o parâmetro sheet = "Sheet1" para refletir a aba correta do arquivo .xlsx a ser importado. Vamos trabalhar com os dados do ano 1.
#dir <- getwd() #criamos um vetor com o diretório de trbalho
#shell.exec(dir) #abre o diretorio de trabalho no Windows Explorer
library(openxlsx)
ppbio <- read.xlsx("D:/Elvio/OneDrive/Disciplinas/_EcoNumerica/5.Matrizes/ppbio06p-amb.xlsx",
rowNames = T, colNames = T,
sheet = "ano1")
str(ppbio)
#View(ppbio)
ppbio[1:5,1:5] #[1:5,1:5] mostra apenas as linhas e colunas de 1 a 5.## 'data.frame': 23 obs. of 30 variables:
## $ h.macroph : num 8.33 0 5.83 0 0 ...
## $ h.grass : num 20 23.3 0 20 0 ...
## $ h.subveg : num 10 3 16.7 0 0 ...
## $ h.overhveg : num 0 26.7 33.3 0 33.3 ...
## $ h.litter : num 0.667 2.333 23.667 0 1 ...
## $ h.filalgae : num 0 3.33 25 0 0 ...
## $ h.attalgae : num 12 0.667 3.333 1 0 ...
## $ h.roots : num 0 3.33 0 0 5 ...
## $ h.lrgdeb : num 1.67 1.67 0 0 3.33 ...
## $ h.smldeb : num 1.67 2 10 0 7 ...
## $ s.mud : num 65 16.667 81.667 40 0.667 ...
## $ s.sand : num 30 70 8.33 40 87.67 ...
## $ s.smlgrav : num 0 5 1.67 0 3.33 ...
## $ s.lrggrav : num 0 5 0 0 3.33 ...
## $ s.cobbles : num 1.67 3.33 0 20 5 ...
## $ s.rocks : num 0 0 0 0 0 ...
## $ s.bedrock : num 3.33 0 8.33 0 0 ...
## $ m.elev : num 226 169 270 226 169 270 226 169 270 226 ...
## $ m.river : num 163 83 110 163 83 ...
## $ m.stream : num 163.2 13.6 37.1 163.2 13.6 ...
## $ m.distsource: num 84.45 6.15 8.85 84.45 6.15 ...
## $ m.distmouth : num 217 186 255 217 186 ...
## $ m.maxslope : num 30 60 60 30 60 60 30 60 60 30 ...
## $ m.maxdepth : num 106 60 154 105 68 118 110 79 109 74 ...
## $ m.habdepth : num 81.3 22.7 54.7 67 32.7 ...
## $ m.width : num 19.6 17.2 102 16.1 18.5 ...
## $ a.veloc : num 0.167 0.159 0.1 0.125 0 ...
## $ a.temp : num 32.9 35.2 34 32 29 ...
## $ a.do : num 6.51 6.86 4.82 5.38 3.02 ...
## $ a.transp : num 46 26 61 44 33 ...
## h.macroph h.grass h.subveg h.overhveg h.litter
## S-R-CT1 8.333333 20.00000 10.00000 0.00000 0.6666667
## S-R-CP1 0.000000 23.33333 3.00000 26.66667 2.3333333
## S-A-TA1 5.833333 0.00000 16.66667 33.33333 23.6666660
## S-R-CT2 0.000000 20.00000 0.00000 0.00000 0.0000000
## S-R-CP2 0.000000 0.00000 0.00000 33.33333 1.0000000
Exibindo os dados importados (esses comando são “case-sensitive” ignore.case(object)).
13.4 Reset point
m_amb <- ppbio
#pat <- "^S"
#m_amb <- m_amb[!grepl(pat, rownames(m_amb)), ] #exclui quem começa com patAqui cria-se um novo objeto do R (m_trab, ou a matriz de trabalho, para esse momento) que substitui a matriz de dados original, por uma nova matriz que pode ser a matriz relativizada, transformada, transposta, etc. Dessa forma, mantemos a matriz de dados original caso precisemos dela novamente (Veja a Tabela 3.1).
Revise Seção 3.2.2 e a Tabela de Abreviações (@ref(tab:200m_2)) na mesma Seção que resumem os tipos de matrizes e suas abreviações, para os nossos códigos.
13.5 Correlograma e remoção de variáveis redundantes ou desnecessárias
##
## Attaching package: 'psych'
## The following object is masked from 'package:mdatools':
##
## pca
## The following object is masked from 'package:car':
##
## logit
## The following objects are masked from 'package:ggplot2':
##
## %+%, alpha
colnames(m_amb)
pairs.panels(m_amb[,1:10],
method = "pearson", # correlation method
scale = FALSE, lm = FALSE,
hist.col = "#00AFBB", pch = 19,
density = TRUE, # show density plots
ellipses = TRUE, # show correlation ellipses
alpha = 0.5)
cor <- cor(m_amb)
cor
library(corrplot)## corrplot 0.92 loaded
corrplot(cor, method = "circle")
#win.print()
#corrplot(cor, method = "circle")
#dev.off()## [1] "h.macroph" "h.grass" "h.subveg" "h.overhveg" "h.litter"
## [6] "h.filalgae" "h.attalgae" "h.roots" "h.lrgdeb" "h.smldeb"
## [11] "s.mud" "s.sand" "s.smlgrav" "s.lrggrav" "s.cobbles"
## [16] "s.rocks" "s.bedrock" "m.elev" "m.river" "m.stream"
## [21] "m.distsource" "m.distmouth" "m.maxslope" "m.maxdepth" "m.habdepth"
## [26] "m.width" "a.veloc" "a.temp" "a.do" "a.transp"
## h.macroph h.grass h.subveg h.overhveg h.litter
## h.macroph 1.00000000 -0.246531504 -0.13690655 -0.0460990189 -0.062637491
## h.grass -0.24653150 1.000000000 0.48407509 -0.1460764735 -0.001721976
## h.subveg -0.13690655 0.484075094 1.00000000 0.0635287907 0.399197150
## h.overhveg -0.04609902 -0.146076474 0.06352879 1.0000000000 0.603643875
## h.litter -0.06263749 -0.001721976 0.39919715 0.6036438749 1.000000000
## h.filalgae 0.30739321 -0.225737505 -0.06840003 0.3151725645 0.391954687
## h.attalgae -0.20061743 -0.203856535 -0.15804953 -0.0588612264 -0.074417928
## h.roots -0.17114523 -0.042846121 -0.12422422 0.7224571129 -0.020670464
## h.lrgdeb 0.03975689 0.517038783 -0.13497524 -0.0002521598 -0.076622164
## h.smldeb -0.11282416 0.430029457 0.32450367 0.3420275576 0.524639005
## s.mud -0.02825772 -0.213876066 0.09356431 -0.3318047182 0.081241055
## s.sand 0.10165279 0.290788117 -0.02468805 0.2908755666 -0.108025446
## s.smlgrav 0.02303766 -0.230252599 -0.26591389 0.1532179364 0.008573628
## s.lrggrav 0.05597825 -0.088160779 -0.19524294 0.1761326511 -0.054082053
## s.cobbles -0.24512665 -0.007205913 -0.15483540 0.0694742877 -0.093430622
## s.rocks -0.23075335 -0.259155527 -0.21954489 -0.0873692368 -0.121239165
## s.bedrock -0.03652910 -0.083573123 0.30828355 0.5073656218 0.900953133
## m.elev -0.08310889 0.403591279 0.35058982 -0.4003114855 -0.131742426
## m.river -0.23257092 0.335464812 0.24926832 -0.5955683647 -0.242615414
## m.stream -0.06608660 -0.004596811 -0.07497728 -0.2227767752 -0.096058730
## m.distsource -0.16898179 0.005784151 -0.10079544 -0.2397842969 -0.143925113
## m.distmouth -0.09461959 0.058821726 -0.01701650 -0.2886438017 0.009362746
## m.maxslope 0.06917689 -0.432093408 -0.28679549 0.2396730909 0.112055941
## m.maxdepth 0.03186630 0.402241943 0.19851159 -0.0016801722 0.489997569
## m.habdepth -0.18039247 -0.045055633 -0.13643528 0.0703614430 0.206858486
## m.width 0.10609087 0.339661628 0.37489017 -0.2460756693 -0.036647042
## a.veloc -0.13503225 0.204580859 0.11506415 0.3775858154 0.314867909
## a.temp 0.18273224 0.093689794 0.10708693 0.3872777253 0.376177481
## a.do 0.26259801 -0.202794752 -0.60025144 -0.2351348072 -0.186841357
## a.transp 0.30879962 -0.007818165 0.06381010 -0.0405424177 0.149062804
## h.filalgae h.attalgae h.roots h.lrgdeb h.smldeb
## h.macroph 0.307393212 -0.2006174303 -0.17114523 0.0397568923 -0.1128241586
## h.grass -0.225737505 -0.2038565351 -0.04284612 0.5170387832 0.4300294573
## h.subveg -0.068400029 -0.1580495292 -0.12422422 -0.1349752429 0.3245036701
## h.overhveg 0.315172564 -0.0588612264 0.72245711 -0.0002521598 0.3420275576
## h.litter 0.391954687 -0.0744179283 -0.02067046 -0.0766221642 0.5246390055
## h.filalgae 1.000000000 0.1650218328 -0.12170792 0.0330671467 0.0566631854
## h.attalgae 0.165021833 1.0000000000 -0.15141029 -0.1110887477 -0.0007226332
## h.roots -0.121707915 -0.1514102880 1.00000000 0.0359061688 0.1278778876
## h.lrgdeb 0.033067147 -0.1110887477 0.03590617 1.0000000000 0.5126858957
## h.smldeb 0.056663185 -0.0007226332 0.12787789 0.5126858957 1.0000000000
## s.mud -0.203493831 0.0966629147 -0.45742597 -0.2661041300 -0.1358265852
## s.sand 0.131463557 -0.2065073854 0.42226823 0.3631216979 0.2116433147
## s.smlgrav 0.056355761 -0.2466165417 0.37504581 -0.2178131916 -0.1938969370
## s.lrggrav 0.071026543 -0.2019284184 0.45157180 -0.1064395977 -0.1131217094
## s.cobbles 0.193135679 0.4075488652 0.08813464 -0.1218105205 -0.2307397229
## s.rocks 0.144067566 0.5595435077 -0.15324139 -0.1450923302 -0.0896567456
## s.bedrock 0.338537041 -0.0146391847 -0.09492929 -0.0956520825 0.3503440506
## m.elev -0.203448440 0.0716487680 -0.36640440 0.2656332571 0.1727891903
## m.river -0.405669260 -0.0195694902 -0.51853032 0.1309548871 -0.0189887633
## m.stream -0.185417996 -0.0598126521 -0.21720079 -0.1720191090 -0.1810175388
## m.distsource -0.254533090 -0.0572352576 -0.18429493 -0.1776252995 -0.2083808690
## m.distmouth -0.217780469 -0.2330343386 -0.33511609 0.1038897654 0.0767920775
## m.maxslope 0.145284072 -0.1601113205 0.18673984 -0.1907894213 -0.1808970343
## m.maxdepth 0.114574709 -0.2474674119 -0.35179352 0.5122182964 0.6060301921
## m.habdepth 0.002882856 0.0164745166 -0.09468290 0.0036984721 0.0212264396
## m.width -0.011447418 0.0797573366 -0.28844323 0.2562191774 0.1713597968
## a.veloc -0.002302649 -0.0605797247 0.20772262 -0.1007706522 -0.0883913083
## a.temp -0.047385170 -0.3528557182 0.21266182 -0.0633115802 0.0495255921
## a.do 0.075932799 0.2107159895 -0.19965987 -0.0527554510 -0.2305667359
## a.transp 0.486443594 0.1991293428 -0.26299621 0.2727840805 0.2437019444
## s.mud s.sand s.smlgrav s.lrggrav s.cobbles
## h.macroph -0.02825772 0.10165279 0.023037659 0.05597825 -0.245126650
## h.grass -0.21387607 0.29078812 -0.230252599 -0.08816078 -0.007205913
## h.subveg 0.09356431 -0.02468805 -0.265913890 -0.19524294 -0.154835404
## h.overhveg -0.33180472 0.29087557 0.153217936 0.17613265 0.069474288
## h.litter 0.08124106 -0.10802545 0.008573628 -0.05408205 -0.093430622
## h.filalgae -0.20349383 0.13146356 0.056355761 0.07102654 0.193135679
## h.attalgae 0.09666291 -0.20650739 -0.246616542 -0.20192842 0.407548865
## h.roots -0.45742597 0.42226823 0.375045814 0.45157180 0.088134635
## h.lrgdeb -0.26610413 0.36312170 -0.217813192 -0.10643960 -0.121810520
## h.smldeb -0.13582659 0.21164331 -0.193896937 -0.11312171 -0.230739723
## s.mud 1.00000000 -0.95732831 -0.196136235 -0.20727196 -0.436951580
## s.sand -0.95732831 1.00000000 0.077601964 0.06113988 0.208220232
## s.smlgrav -0.19613624 0.07760196 1.000000000 0.91794933 -0.018580075
## s.lrggrav -0.20727196 0.06113988 0.917949325 1.00000000 0.092736437
## s.cobbles -0.43695158 0.20822023 -0.018580075 0.09273644 1.000000000
## s.rocks -0.05450604 -0.08712170 -0.290187186 -0.20917141 0.471919983
## s.bedrock 0.20788751 -0.23158686 -0.068825165 -0.12957657 -0.117937719
## m.elev 0.46647761 -0.31506556 -0.363536747 -0.35844427 -0.418891510
## m.river 0.52267706 -0.35870643 -0.487625688 -0.54998626 -0.404162728
## m.stream 0.25913400 -0.29280195 -0.351718673 -0.23344861 0.162336709
## m.distsource 0.20798419 -0.24660914 -0.335764568 -0.23558448 0.197820570
## m.distmouth -0.12783195 0.26298990 -0.055199753 -0.33221276 -0.343006017
## m.maxslope -0.48822579 0.47051421 0.480231912 0.19989479 0.003285850
## m.maxdepth -0.08984828 0.15690152 -0.233610098 -0.23813743 -0.181918712
## m.habdepth -0.29918013 0.24152725 -0.124634583 -0.20123580 0.329637349
## m.width 0.49913277 -0.37568825 -0.310246711 -0.23740245 -0.381602616
## a.veloc -0.07881376 0.02561095 -0.011480476 0.04477510 0.201826380
## a.temp -0.20642510 0.16196759 0.223976700 0.27319038 0.054683155
## a.do 0.29936318 -0.31184728 0.228246923 0.14674375 -0.188261015
## a.transp -0.07274786 0.08367750 -0.090575822 -0.07405382 0.010898759
## s.rocks s.bedrock m.elev m.river m.stream
## h.macroph -0.230753352 -0.03652910 -0.08310889 -0.23257092 -0.066086599
## h.grass -0.259155527 -0.08357312 0.40359128 0.33546481 -0.004596811
## h.subveg -0.219544891 0.30828355 0.35058982 0.24926832 -0.074977285
## h.overhveg -0.087369237 0.50736562 -0.40031149 -0.59556836 -0.222776775
## h.litter -0.121239165 0.90095313 -0.13174243 -0.24261541 -0.096058730
## h.filalgae 0.144067566 0.33853704 -0.20344844 -0.40566926 -0.185417996
## h.attalgae 0.559543508 -0.01463918 0.07164877 -0.01956949 -0.059812652
## h.roots -0.153241391 -0.09492929 -0.36640440 -0.51853032 -0.217200787
## h.lrgdeb -0.145092330 -0.09565208 0.26563326 0.13095489 -0.172019109
## h.smldeb -0.089656746 0.35034405 0.17278919 -0.01898876 -0.181017539
## s.mud -0.054506037 0.20788751 0.46647761 0.52267706 0.259134004
## s.sand -0.087121705 -0.23158686 -0.31506556 -0.35870643 -0.292801947
## s.smlgrav -0.290187186 -0.06882517 -0.36353675 -0.48762569 -0.351718673
## s.lrggrav -0.209171407 -0.12957657 -0.35844427 -0.54998626 -0.233448612
## s.cobbles 0.471919983 -0.11793772 -0.41889151 -0.40416273 0.162336709
## s.rocks 1.000000000 -0.12799218 -0.21907348 -0.13545807 0.215737335
## s.bedrock -0.127992185 1.00000000 -0.19742578 -0.20071090 0.131806173
## m.elev -0.219073482 -0.19742578 1.00000000 0.85251041 -0.351025053
## m.river -0.135458068 -0.20071090 0.85251041 1.00000000 0.017040248
## m.stream 0.215737335 0.13180617 -0.35102505 0.01704025 1.000000000
## m.distsource 0.248398309 0.08398842 -0.36628911 0.04500187 0.987553629
## m.distmouth -0.128592531 -0.03694612 0.21088433 0.43005863 -0.285305822
## m.maxslope -0.063334534 0.04208746 -0.45271956 -0.37494422 -0.445502469
## m.maxdepth -0.078095404 0.47564528 0.08022982 0.12595144 0.094085376
## m.habdepth 0.133210844 0.41315901 -0.52848500 -0.21000817 0.395997655
## m.width -0.267413674 -0.09980488 0.92959448 0.66160089 -0.341120113
## a.veloc -0.203924152 0.50163597 -0.39264584 -0.27533927 0.410516289
## a.temp -0.221454717 0.41538130 -0.60522317 -0.50743529 0.318565681
## a.do 0.004835464 -0.06655234 -0.04245875 -0.05281226 0.104875559
## a.transp -0.016360295 0.14038232 0.16444871 -0.08762683 -0.339047044
## m.distsource m.distmouth m.maxslope m.maxdepth m.habdepth
## h.macroph -0.168981791 -0.094619591 0.069176887 0.031866297 -0.180392470
## h.grass 0.005784151 0.058821726 -0.432093408 0.402241943 -0.045055633
## h.subveg -0.100795436 -0.017016500 -0.286795491 0.198511591 -0.136435275
## h.overhveg -0.239784297 -0.288643802 0.239673091 -0.001680172 0.070361443
## h.litter -0.143925113 0.009362746 0.112055941 0.489997569 0.206858486
## h.filalgae -0.254533090 -0.217780469 0.145284072 0.114574709 0.002882856
## h.attalgae -0.057235258 -0.233034339 -0.160111320 -0.247467412 0.016474517
## h.roots -0.184294932 -0.335116093 0.186739840 -0.351793522 -0.094682904
## h.lrgdeb -0.177625299 0.103889765 -0.190789421 0.512218296 0.003698472
## h.smldeb -0.208380869 0.076792078 -0.180897034 0.606030192 0.021226440
## s.mud 0.207984189 -0.127831955 -0.488225793 -0.089848279 -0.299180125
## s.sand -0.246609145 0.262989896 0.470514210 0.156901516 0.241527247
## s.smlgrav -0.335764568 -0.055199753 0.480231912 -0.233610098 -0.124634583
## s.lrggrav -0.235584477 -0.332212758 0.199894791 -0.238137430 -0.201235803
## s.cobbles 0.197820570 -0.343006017 0.003285850 -0.181918712 0.329637349
## s.rocks 0.248398309 -0.128592531 -0.063334534 -0.078095404 0.133210844
## s.bedrock 0.083988424 -0.036946118 0.042087459 0.475645280 0.413159010
## m.elev -0.366289105 0.210884333 -0.452719558 0.080229817 -0.528485000
## m.river 0.045001873 0.430058635 -0.374944223 0.125951443 -0.210008174
## m.stream 0.987553629 -0.285305822 -0.445502469 0.094085376 0.395997655
## m.distsource 1.000000000 -0.208886217 -0.380287859 0.070018120 0.454126171
## m.distmouth -0.208886217 1.000000000 0.575655522 0.409794260 0.329568908
## m.maxslope -0.380287859 0.575655522 1.000000000 -0.033910389 0.326367540
## m.maxdepth 0.070018120 0.409794260 -0.033910389 1.000000000 0.425648040
## m.habdepth 0.454126171 0.329568908 0.326367540 0.425648040 1.000000000
## m.width -0.403406954 -0.091476026 -0.569731109 0.010919605 -0.663930169
## a.veloc 0.409162331 -0.251728578 -0.087772483 0.109911454 0.516555276
## a.temp 0.303332037 -0.107191864 0.190578794 0.204458211 0.390454228
## a.do 0.054863239 -0.066103944 -0.039194058 -0.068299977 -0.098869325
## a.transp -0.402578165 0.084213818 0.008475289 0.389325169 0.109987158
## m.width a.veloc a.temp a.do a.transp
## h.macroph 0.106090873 -0.135032245 0.18273224 0.262598008 0.308799625
## h.grass 0.339661628 0.204580859 0.09368979 -0.202794752 -0.007818165
## h.subveg 0.374890169 0.115064150 0.10708693 -0.600251445 0.063810096
## h.overhveg -0.246075669 0.377585815 0.38727773 -0.235134807 -0.040542418
## h.litter -0.036647042 0.314867909 0.37617748 -0.186841357 0.149062804
## h.filalgae -0.011447418 -0.002302649 -0.04738517 0.075932799 0.486443594
## h.attalgae 0.079757337 -0.060579725 -0.35285572 0.210715990 0.199129343
## h.roots -0.288443233 0.207722616 0.21266182 -0.199659873 -0.262996213
## h.lrgdeb 0.256219177 -0.100770652 -0.06331158 -0.052755451 0.272784080
## h.smldeb 0.171359797 -0.088391308 0.04952559 -0.230566736 0.243701944
## s.mud 0.499132769 -0.078813761 -0.20642510 0.299363179 -0.072747855
## s.sand -0.375688250 0.025610951 0.16196759 -0.311847278 0.083677500
## s.smlgrav -0.310246711 -0.011480476 0.22397670 0.228246923 -0.090575822
## s.lrggrav -0.237402453 0.044775100 0.27319038 0.146743753 -0.074053824
## s.cobbles -0.381602616 0.201826380 0.05468315 -0.188261015 0.010898759
## s.rocks -0.267413674 -0.203924152 -0.22145472 0.004835464 -0.016360295
## s.bedrock -0.099804876 0.501635966 0.41538130 -0.066552340 0.140382315
## m.elev 0.929594477 -0.392645839 -0.60522317 -0.042458750 0.164448713
## m.river 0.661600887 -0.275339274 -0.50743529 -0.052812259 -0.087626835
## m.stream -0.341120113 0.410516289 0.31856568 0.104875559 -0.339047044
## m.distsource -0.403406954 0.409162331 0.30333204 0.054863239 -0.402578165
## m.distmouth -0.091476026 -0.251728578 -0.10719186 -0.066103944 0.084213818
## m.maxslope -0.569731109 -0.087772483 0.19057879 -0.039194058 0.008475289
## m.maxdepth 0.010919605 0.109911454 0.20445821 -0.068299977 0.389325169
## m.habdepth -0.663930169 0.516555276 0.39045423 -0.098869325 0.109987158
## m.width 1.000000000 -0.326799203 -0.51641177 -0.002086238 0.232399977
## a.veloc -0.326799203 1.000000000 0.64196801 0.063666386 -0.111321669
## a.temp -0.516411771 0.641968008 1.00000000 -0.072530252 -0.241797672
## a.do -0.002086238 0.063666386 -0.07253025 1.000000000 0.109896052
## a.transp 0.232399977 -0.111321669 -0.24179767 0.109896052 1.000000000


13.6 Deletando variáveis colineares
Primeiro vamos listar as variáveis com correlação maior que 70% ou r > 0.7.
# Get upper triangle (to avoid duplicate pairs)
r <- 0.7
cor_pairs <- which(abs(cor) > r & abs(cor) < 1, arr.ind = TRUE)
# Extract unique variable pairs
results <- data.frame(
var1 = rownames(cor)[cor_pairs[, 1]],
var2 = colnames(cor)[cor_pairs[, 2]],
correlation = cor[cor_pairs]
)
# Remove duplicates (e.g. A-B and B-A)
results <- results[results$var1 < results$var2, ]
# Sort by absolute correlation (descending)
results <- results[order(-abs(results$correlation)), ]
results## var1 var2 correlation
## 12 m.distsource m.stream 0.9875536
## 5 s.mud s.sand -0.9573283
## 14 m.elev m.width 0.9295945
## 6 s.lrggrav s.smlgrav 0.9179493
## 8 h.litter s.bedrock 0.9009531
## 11 m.elev m.river 0.8525104
## 3 h.overhveg h.roots 0.7224571
Agora que temos as variáveis correlacionadas, prosseguimos para deleta-las.
colnames(m_amb)
del_cols <- c("m.distsource", "m.elev") #exemplo, "g.river_length","g.altitude"
m_amb_part <- m_amb[, !(colnames(m_amb) %in% del_cols)]## [1] "h.macroph" "h.grass" "h.subveg" "h.overhveg" "h.litter"
## [6] "h.filalgae" "h.attalgae" "h.roots" "h.lrgdeb" "h.smldeb"
## [11] "s.mud" "s.sand" "s.smlgrav" "s.lrggrav" "s.cobbles"
## [16] "s.rocks" "s.bedrock" "m.elev" "m.river" "m.stream"
## [21] "m.distsource" "m.distmouth" "m.maxslope" "m.maxdepth" "m.habdepth"
## [26] "m.width" "a.veloc" "a.temp" "a.do" "a.transp"
13.7 Somando variáveis redundantes
Algumas dessa variáveis são redundantes, vamos soma-las.
m_amb_part$s.gravel <- m_amb_part$s.smlgrav + m_amb_part$s.lrggrav + m_amb_part$s.cobbles
m_amb_part <- m_amb_part[, !(colnames(m_amb_part)
%in% c("s.smlgrav", "s.lrggrav", "s.cobbles"))]
m_amb_part$s.rock <- m_amb_part$s.rocks + m_amb_part$s.bedrock
m_amb_part <- m_amb_part[, !(colnames(m_amb_part)
%in% c("s.rocks", "s.bedrock"))]
m_amb_part$h.algae <- m_amb_part$h.filalgae + m_amb_part$h.attalgae
m_amb_part <- m_amb_part[, !(colnames(m_amb_part)
%in% c("h.filalgae", "h.attalgae"))]
m_amb_part$h.debris <- m_amb_part$h.smldeb + m_amb_part$h.lrgdeb
m_amb_part <- m_amb_part[, !(colnames(m_amb_part)
%in% c("h.smldeb", "h.lrgdeb"))]
colnames(m_amb_part)
m_amb_part## [1] "h.macroph" "h.grass" "h.subveg" "h.overhveg" "h.litter"
## [6] "h.roots" "s.mud" "s.sand" "m.river" "m.stream"
## [11] "m.distmouth" "m.maxslope" "m.maxdepth" "m.habdepth" "m.width"
## [16] "a.veloc" "a.temp" "a.do" "a.transp" "s.gravel"
## [21] "s.rock" "h.algae" "h.debris"
## h.macroph h.grass h.subveg h.overhveg h.litter h.roots
## S-R-CT1 8.333333 20.0000000 10.000000 0.000000 0.6666667 0.000000
## S-R-CP1 0.000000 23.3333340 3.000000 26.666666 2.3333333 3.333333
## S-A-TA1 5.833333 0.0000000 16.666666 33.333332 23.6666660 0.000000
## S-R-CT2 0.000000 20.0000000 0.000000 0.000000 0.0000000 0.000000
## S-R-CP2 0.000000 0.0000000 0.000000 33.333332 1.0000000 5.000000
## S-A-TA2 54.833332 0.3333333 0.000000 8.333333 1.0000000 0.000000
## S-R-CT3 0.000000 0.1111111 0.000000 0.000000 0.0000000 0.000000
## S-R-CP3 0.000000 0.0000000 0.000000 0.000000 1.5000000 1.000000
## S-A-TA3 44.629631 8.1111107 0.000000 0.000000 0.6666667 0.000000
## S-R-CT4 0.000000 4.1666665 0.000000 0.000000 0.8333333 0.000000
## S-R-CP4 0.000000 0.0000000 0.000000 8.333333 1.0000000 0.000000
## S-A-TA4 37.309525 0.0000000 0.000000 0.000000 0.5714286 0.000000
## B-A-MU1 0.000000 50.0000000 0.000000 0.000000 1.0000000 0.000000
## B-A-GU1 46.666668 0.0000000 3.333333 3.333333 0.0000000 0.000000
## B-R-PC2 0.000000 2.0000000 0.000000 0.000000 0.4000000 0.000000
## B-A-MU2 0.000000 54.0000000 36.599998 0.000000 5.0000000 0.000000
## B-A-GU2 2.600000 7.5000000 26.000000 0.400000 0.0000000 0.000000
## B-R-PC3 0.000000 0.0000000 0.000000 0.000000 0.3333333 0.000000
## B-A-MU3 0.000000 28.3333340 8.333333 0.000000 1.0000000 0.000000
## B-A-GU3 0.000000 13.3333330 0.000000 0.000000 0.0000000 0.000000
## B-R-PC4 0.000000 0.0000000 0.000000 0.000000 0.5000000 0.000000
## B-A-MU4 0.000000 5.5555553 0.000000 0.000000 0.4444444 0.000000
## B-A-GU4 2.083333 0.0000000 0.000000 0.000000 0.0000000 0.000000
## s.mud s.sand m.river m.stream m.distmouth m.maxslope
## S-R-CT1 65.0000000 30.000000 163.2000 163.20000 217.1500 30
## S-R-CP1 16.6666660 70.000000 83.0500 13.55000 185.5500 60
## S-A-TA1 81.6666641 8.333333 110.2000 37.10000 254.5500 60
## S-R-CT2 40.0000000 40.000000 163.2000 163.20000 217.1500 30
## S-R-CP2 0.6666667 87.666664 83.0500 13.55000 185.5500 60
## S-A-TA2 5.0000000 95.000000 110.2000 37.10000 254.5500 60
## S-R-CT3 65.5555573 23.111111 163.2000 163.20000 217.1500 30
## S-R-CP3 48.7500000 22.500000 83.0500 13.55000 185.5500 60
## S-A-TA3 46.6666679 40.000000 110.2000 37.10000 254.5500 60
## S-R-CT4 95.0000000 1.833333 163.2000 163.20000 217.1500 30
## S-R-CP4 5.0000000 60.000000 83.0500 13.55000 185.5500 60
## S-A-TA4 59.1428566 38.714287 110.2000 37.10000 254.5500 60
## B-A-MU1 33.3333321 65.000000 214.0200 19.83333 290.8767 30
## B-A-GU1 96.6666641 3.333333 212.6667 32.33333 203.8333 30
## B-R-PC2 39.0000000 56.000000 196.8333 13.75000 401.6667 90
## B-A-MU2 20.6000004 77.000000 214.0200 19.83333 290.8767 30
## B-A-GU2 98.0000000 2.000000 212.6667 32.33333 203.8333 30
## B-R-PC3 33.6666679 63.000000 196.8333 13.75000 401.6667 90
## B-A-MU3 65.0000000 35.000000 214.0200 19.83333 290.8767 30
## B-A-GU3 87.7777786 6.666667 212.6667 32.33333 203.8333 30
## B-R-PC4 48.8750000 47.875000 196.8333 13.75000 401.6667 90
## B-A-MU4 91.7777786 3.222222 214.0200 19.83333 290.8767 30
## B-A-GU4 95.1666641 3.416667 212.6667 32.33333 203.8333 30
## m.maxdepth m.habdepth m.width a.veloc a.temp a.do a.transp
## S-R-CT1 106 81.333333 19.64 0.1666667 32.90000 6.510000 46.00000
## S-R-CP1 60 22.666667 17.24 0.1591512 35.20000 6.863333 26.00000
## S-A-TA1 154 54.666667 102.00 0.1000000 34.00000 4.820000 61.00000
## S-R-CT2 105 67.000000 16.10 0.1250000 32.00000 5.375000 44.00000
## S-R-CP2 68 32.666667 18.47 0.0000000 29.00000 3.015000 33.00000
## S-A-TA2 118 37.666667 100.00 0.0000000 29.00000 5.000000 90.00000
## S-R-CT3 110 32.333333 6.20 0.0000000 28.26667 6.000000 17.33333
## S-R-CP3 79 32.666667 15.10 0.0000000 29.66667 5.000000 50.33333
## S-A-TA3 109 22.333333 88.00 0.0000000 34.00000 9.000000 51.66667
## S-R-CT4 74 32.333333 5.40 0.0000000 32.60000 6.000000 16.00000
## S-R-CP4 64 45.333333 10.70 0.0000000 27.60000 4.900000 60.00000
## S-A-TA4 87 30.333333 72.20 0.0000000 29.53333 9.433333 67.00000
## B-A-MU1 152 32.666667 270.00 0.0000000 29.83333 5.666667 48.00000
## B-A-GU1 60 8.166667 330.00 0.0000000 29.23333 5.136667 25.66667
## B-R-PC2 110 49.333333 29.60 0.0000000 29.00000 5.635000 50.00000
## B-A-MU2 115 22.000000 247.63 0.0000000 29.00000 1.815000 43.00000
## B-A-GU2 69 7.000000 321.00 0.0000000 29.00000 1.850000 55.00000
## B-R-PC3 80 50.000000 27.30 0.0000000 29.00000 5.000000 32.33333
## B-A-MU3 117 25.666667 234.53 0.0000000 26.00000 5.700000 63.00000
## B-A-GU3 68 6.833333 314.20 0.0000000 24.00000 8.800000 51.66667
## B-R-PC4 95 52.833333 20.00 0.0000000 28.85000 5.100000 30.00000
## B-A-MU4 112 41.333333 239.00 0.0000000 25.95000 7.300000 89.00000
## B-A-GU4 63 4.666667 289.50 0.0000000 24.70000 8.750000 36.00000
## s.gravel s.rock h.algae h.debris
## S-R-CT1 1.6666666 3.333333 12.0000000 3.3333333
## S-R-CP1 13.3333333 0.000000 3.9999999 3.6666666
## S-A-TA1 1.6666666 8.333333 28.3333333 10.0000000
## S-R-CT2 20.0000000 0.000000 1.0000000 0.0000000
## S-R-CP2 11.6666665 0.000000 0.0000000 10.3333333
## S-A-TA2 0.0000000 0.000000 33.3333321 13.6666665
## S-R-CT3 3.0000000 8.333333 0.0000000 2.2222223
## S-R-CP3 28.7500000 0.000000 6.7500000 3.6666667
## S-A-TA3 13.3333330 0.000000 9.0000000 1.6666666
## S-R-CT4 0.3333333 2.833333 7.5000000 5.0000000
## S-R-CP4 25.0000000 10.000000 75.0000000 1.0000000
## S-A-TA4 2.1428571 0.000000 0.0000000 3.2857144
## B-A-MU1 1.6666666 0.000000 1.0000000 30.0000000
## B-A-GU1 0.0000000 0.000000 0.0000000 0.0000000
## B-R-PC2 4.0000000 1.000000 0.4000000 0.4000000
## B-A-MU2 2.4000001 0.000000 0.0000000 10.0000000
## B-A-GU2 0.0000000 0.000000 1.0000000 0.0000000
## B-R-PC3 3.3333333 0.000000 0.0000000 0.4444444
## B-A-MU3 0.0000000 0.000000 0.3333333 11.6666665
## B-A-GU3 5.5555556 0.000000 25.0000000 0.0000000
## B-R-PC4 2.0000000 1.250000 0.0000000 2.5000000
## B-A-MU4 0.0000000 5.000000 30.0000000 10.4444447
## B-A-GU4 1.4166667 0.000000 43.3333333 3.7500000
Salvando a matriz final particionada de dados ambientais.
write.table(m_amb_part, "m_amb_part.csv",
sep = ";", dec = ".", #"\t",
row.names = TRUE,
quote = TRUE,
append = FALSE)
m_amb_part <- read.csv("m_amb_part.csv",
sep = ";", dec = ".",
row.names = 1,
header = TRUE,
na.strings = NA)13.8 Tabela de dados ambientais
Nessa etapa precisaremos da tabela de grupos. Selecionamos a aba ambientalp, porque nela constam os agrupamentos a-priori para os dados ambientais.
library(openxlsx)
t_grps <- read.xlsx("D:/Elvio/OneDrive/Disciplinas/_EcoNumerica/5.Matrizes/ppbio06-grupos.xlsx",
rowNames = T, colNames = T,
sheet = "ambientalp")
str(t_grps)
#View(ppbio)
t_grps[1:4,1:4] #[1:4,1:4] mostra apenas as linhas e colunas de 1 a 4.## 'data.frame': 23 obs. of 4 variables:
## $ area : chr "Serido" "Serido" "Serido" "Serido" ...
## $ ambiente: chr "rio" "rio" "acude" "rio" ...
## $ UA : chr "CT" "CP" "TA" "CT" ...
## $ coleta : num 1 1 1 2 2 2 3 3 3 4 ...
## area ambiente UA coleta
## S-R-CT1 Serido rio CT 1
## S-R-CP1 Serido rio CP 1
## S-A-TA1 Serido acude TA 1
## S-R-CT2 Serido rio CT 2
library(dplyr)
library(tidyr)
m_trab <- m_amb_part %>%
rename_with(~ gsub("_", ".", .)) #apenas troquei o underscore pelo ponto.
m <- m_trab %>%
group_by(Area = t_grps$area,
Habitat = t_grps$ambiente,
Ponto = t_grps$UA) %>%
summarise(across(where(is.numeric),
list(mean = mean, min = min, max = max)),
.groups = 'drop') %>%
pivot_longer(
cols = -c(Area, Habitat, Ponto),
names_to = c("Variable", ".value"),
names_sep = "_"
)
m <- as.data.frame(m)
m_wide <- m %>%
mutate(stat_string = ifelse(Variable == c("fq.w.vel"),
paste0(round(mean, 3), "(", round(min, 3), "-", round(max, 3), ")"),
paste0(round(mean, 1), "(", round(min, 1), "-", round(max, 1), ")"))) %>%
unite("Location", Area, Habitat, Ponto, sep = "_") %>%
dplyr::select(Variable, Location, stat_string) %>% # find("select"), dplyr::select evita conflito entre package:MASS package:dplyr
pivot_wider(names_from = Location, values_from = stat_string)
m_wide
m_wide <- as.data.frame(m_wide)
m_wide
#Exportando dados para Excel----
library(openxlsx)
write.xlsx(m_wide, file = "tabela de habitat.xlsx", rowNames = FALSE)
wb <- loadWorkbook("tabela de habitat.xlsx")
writeData(wb, sheet = "Sheet 1", x = m_wide)
saveWorkbook(wb, "tabela de habitat.xlsx", overwrite = TRUE)
#Escolher sumário de uma variavel----
m
var <- "h.roots"
m[m$Variable == var, "mean"] #cada valor de var
summary(m[m$Variable == var, "mean"]) #sumário dos valores de var
#Escolher sumário de um grupo de variáveis do df m----
vars <- unique(grep("^h\\.", m$Variable, value = TRUE))
summaries <- list() #criam uma lista vazia para guardar os sumários
# Loop para cada variável do grupo e guarda em summaries
for (var in vars) {
summaries[[var]] <- summary(m[m$Variable == var, "mean"])
}
# var is a temporary variable used in the for loop to iterate through
# each variable name that starts with "h."
summaries
summary_table <- do.call(rbind, lapply(summaries, as.data.frame.list))
round(summary_table, 2)
#sink(file = "summary_h.txt", split = TRUE)
round(summary_table[order(summary_table$Mean, decreasing = FALSE), ], 2)
#sink()
#Tabela limpa
summary_table <- cbind(Variable = rownames(summary_table), summary_table)
rownames(summary_table) <- NULL
colnames(summary_table) <- c("Variable", "Min", "Q1", "Median", "Mean", "Q3", "Max")
summary_table