Guia para taxonomia numérica
Este protocolo visa orientar um processo analítico no R de delimitação de espécies através da exploração de dados morfológicos e/ou dados espectrais (NIR) coletados de amostras de herbário.
Preparando dados para análises
Cada conjunto de dados deve ter um IDENTIFICADOR comum entre todas as tabelas. Esse identificador não pode repetir entre linhas nas suas tabelas. Se os dados veem da(s) base(s) do laboratório esse identificador pode ser:
- o WikiEspecimenID (+ NOME DA BASE se os dados foram extraídos de mais de uma base de dados)
- paste(WikiEspecimenID,WikiPlantaID) se os dados forem uma mistura de dados atribuídos a plantas e a especímenes
- uma referência única para cada amostra (coletor+numero+data, geralmente é único).
Esse identificador deve ser o nome das linhas dos seguintes objetos:
- dados.morfo.bruto = DADOS MORFOLÓGICOS COMPLETOS = planilha de dados com 1 linha por amostra e todas as variáveis medidas [nome das linhas é o identificador. Atribuir com rownames(); não deve ter outras colunas nessa tabela], ie. a) variáveis quantitativas; b) variáveis ordenais (ou semiquantitativas) convertidas em números inteiros; c) variáveis de presença e ausência ou verdadeiro e falso (binárias) codificadas com 0 e 1; d) variáveis categóricas não ordenais - estados de variação (categorias) como colunas codificadas como presente (1) ou ausente (0). Células terão valores numéricos, ou números separados por ';'.
- antigo
- usar este
- O script acima permite gerar:
- dados.media (valores médios de dados.morfo.bruto)
- dadosMORFOnmds - dados em eixos ordenados de NMDS a partir de uma matriz de distância gower gerada com todos as suas amostras para as quais há alguma informação em dados.media.
- dados.amostras = 1 linha por amostra e as colunas: taxonomia (genero, especie infraespecie, atual das amostras), grupos definidos a priori (sua classificação se houver), latitude e longitude, etc. Identificador como nome de linhas. Uma linha por amostra em dados.completos.
- dados.nir = dados com todas as colunas NIR (X..) e o identificador como nome de linha.
- dados.shape = dados com as PCAs informativas (pela interpretação das imagens produzidas pelo shape) e identificador como nome de linhas
- dados.grupos = para definições a priori, se houver, da literatura e/ou se suas observações: 1 linha por grupo e uma coluna para cada variável diagnóstica (amplitude de valores no caso de quantitativas)
Guia para análises de definição de grupos
- Testando grupos definidos a priori (da literatura ou seus)
- Tenho hipóteses de grupos (espécies) e de seus limites morfológicos definidos (i.e. tenho dados.grupos).
- Testar quantas amostras satisfazem as definições morfológicas dos seus grupos: para cada grupo calcular o número de amostras que satisfazem (a variação se enquadra) em 100% das variáveis, 90% das variáveis, …. (variação de % dependendo dos resultados. Produzir uma tabela GRUPO vs. COLUNAS DE % DE VARIAVEIS, com número de amostras em cada célula correspondente. Quantas amostras satisfazem 100% das variáveis de cada grupo?
- Testar via LDA ou SVM se meus dados suportam a existência de meus grupos para as variáveis que definem seus limites. Para isso precisa ter dados.completos e também um coluna com o agrupamento de todas as amostras a serem testadas. Pode usar o teste acima para classificar amostras segundo os conceitos antes de testar a classificação (ver última parte do script 01 para isso). Produzir uma matriz de confusão GRUPOS vs GRUPOS com o número de amostras de cada grupo (linhas) e suas predições (colunas).
- Eu não sei exatamente como meus grupos se separam morfologicamente mas classifiquei minhas amostras em grupos a priori de forma intuitiva, então tenho uma coluna no objeto dados.amostras que define essa categoria para cada amostra (ou pelo menos a maioria delas) mas não tenho dados.grupos.
- Todas amostras foram pre-classificadas (visualmente)
- Testar via LDA ou SVM se os dados (morfológicos e/ou NIR) suportam a existência de meus grupos. Precisa de uma coluna com o agrupamento de todas as amostras (de dados.amostras). Produzir uma matriz de confusão GRUPOS vs GRUPOS com o número de amostras de cada grupo (linhas) e suas predições (colunas).
- Eu não classifiquei todas as minhas amostras nos grupos mas tenho amostras classificadas
- Mesma LDA ou SVM que quando tem amostras classificadas, mas apenas com as amostras para as quais tem classe definida a priori. Além disso, depois de gerar GRUPOS CORE fazer um modelo com as amostras em GRUPOS CORE (excluindo as incertezas) e classificar as amostras para as quais não há pre-classificação: aquelas preditas com 95% ou mais de probabilidade são incluídas no GRUPO CORE, as demais classificadas como incertezas.
- Definir grupos a posteriori
- Qual o número de grupos K que meus dados sugerem? Que amostras definem GRUPOS CORE (?) e quais são incertezas?
novo
- Pode usar:
- apenas dados morfológicos
- e depois testar o agrupamento gerado usando NIR de forma independente com SCRIPT 02 - Testando Grupos
- ou dados morfológicos + NIR - grupos morfológicos com > predição NIR
Interpretação e validação dos grupos
Similaridades entre classificações
Compare as classificações a posteriori (não supervisionada) com as classificações a priori (etiquetas ou seus grupos), usando matrizes de confusão.
novo
Como os grupos diferem?
Como é a distribuição da variação morfológica original entre os grupos (qualquer classificação)?
novo