projetos:outros:syncsa:marcel_syncsa

Marcel

Considero importante disponibilizar no pacote uma função à parte como esta, que permita ao usuário explorar aspectos não contemplados pelos autores do programa. Isso dá uma liberdade muito maior ao usuário e condiz com o espírito do código livre. Seria ótimo se tivéssemos também funções para maximizar correlações parciais.

### MAXIMIZAÇÃO DE ro(BF)


## Dados 

# MATRIZ B (10 spp x 5 traits)

B=data.frame(t1=sample(1:10,10,replace=TRUE),t2=sample(1:10,10,replace=TRUE),
	t3=sample(1:10,10,replace=TRUE),t4=sample(1:10,10,replace=TRUE),
	t5=sample(1:10,10,replace=TRUE))

# MATRIZ F (10 spp x 3 variáveis taxonômicas)

F=data.frame(v1=c(1,1,2,2,2,3,3,4,5,5),v2=c(1,1,1,1,1,2,2,2,3,3),v3=c(1,1,1,1,1,1,1,1,2,2))


## Distâncias

library(vegan)
Sb=vegdist(B,method="gower")
Sf=vegdist(F,method="gower")

## ro(BF)

cor(Sb,Sf)


## Combinações (5 atributos)

n=length(B)
k=1:length(B)
bin=factorial(n)/(factorial(k)*factorial(n-k))
C=sum(bin) # número de combinações

# Nomes

comb=character()
for(i in 1:n){
	for(j in 1:bin[i]){
		comb=c(comb,paste(combn(names(B),i)[,j],collapse=" "))
		}
	}


# Correlações

corel=numeric()

for(i in 1:n){
	for(j in 1:bin[i]){
		corel=c(corel,cor(vegdist(as.matrix(B[,combn(names(B),i)[,j]]),method="gower"),Sf))
		}
	}

# Resultado

result=data.frame(subset=comb,ro.BF=corel,stringsAsFactors=FALSE)

result[order(result[,2],decreasing=TRUE),]

## FUNÇÃO

maxim=function(x,y,metric="gower"){
	library(vegan)
	Sy=vegdist(y,method=metric)
	n=length(x)
	k=1:length(x)
	bin=factorial(n)/(factorial(k)*factorial(n-k))
	comb=character()
	for(i in 1:n){
		for(j in 1:bin[i]){
			comb=c(comb,paste(combn(names(x),i)[,j],collapse=" "))
			}
		}
	corel=numeric()
	for(i in 1:n){
		for(j in 1:bin[i]){
			corel=c(corel,cor(vegdist(as.matrix(x[,combn(names(x),i)[,j]]),method=metric),Sy))
			}
		}
	result=data.frame(subset=comb,ro=corel,stringsAsFactors=FALSE)
	return(result[order(result[,2],decreasing=TRUE),])
	}

maxim(B,F)
  • /home/adalardo/farm/labtrop/data/pages/projetos/outros/syncsa/marcel_syncsa.txt
  • Última modificação: 2026/03/27 13:51
  • por 127.0.0.1