Skip to content

Instantly share code, notes, and snippets.

@emersonlaurentino
Last active July 16, 2019 04:10
Show Gist options
  • Save emersonlaurentino/e91fd0a5c0b8b1483a12776c9f78d884 to your computer and use it in GitHub Desktop.
Save emersonlaurentino/e91fd0a5c0b8b1483a12776c9f78d884 to your computer and use it in GitHub Desktop.
Calculeco
// Recíproca de Simpson
const DADOS = [
{ especie: 'A', individuos: 100 },
{ especie: 'B', individuos: 150 },
{ especie: 'C', individuos: 20 },
{ especie: 'D', individuos: 35 },
{ especie: 'E', individuos: 48 }
];
function reciprocaSimpson(dados) {
const SOMA_INDIVIDUOS = dados.reduce(
(total, item) => total + item.individuos,
0
);
const SOMA_ABUNDANCIA_RELATIVA = dados.reduce((total, item) => {
const ABUNDANCIA_RELATIVA = item.individuos / SOMA_INDIVIDUOS;
return total + Math.pow(ABUNDANCIA_RELATIVA, 2);
}, 0);
const RECIPROCA_SIMPSON = 1 / SOMA_ABUNDANCIA_RELATIVA;
return RECIPROCA_SIMPSON;
}
reciprocaSimpson(DADOS);
// Índice de similaridade de Jaccard
const DADOS = {
areaA: ['Angico', 'Baraúna', 'Aroeira', 'Columbi'],
areaB: ['Mameleiro', 'Angico', 'Baraúna', 'Emburana', 'Cumaru', 'Juá']
};
function similaridadeJaccard(dados) {
const comum = dados.areaA.filter(value => dados.areaB.includes(value));
const exclusivaA = dados.areaA.filter(value => !dados.areaB.includes(value));
const exclusivaB = dados.areaB.filter(value => !dados.areaA.includes(value));
const comumTotal = comum.length;
const exclusivaATotal = exclusivaA.length;
const exclusivaBTotal = exclusivaB.length;
const jaccard =
comumTotal / (comumTotal + (exclusivaATotal + exclusivaBTotal));
const jaccardPercentual = jaccard * 100;
return {
jaccard: {
resultado: jaccard,
porcentagem: jaccardPercentual
},
comum: {
especies: comum,
total: comumTotal
},
exclusivaA: {
especies: exclusivaA,
total: exclusivaATotal
},
exclusivaB: {
especies: exclusivaB,
total: exclusivaBTotal
}
};
}
similaridadeJaccard(DADOS);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment