R/MediaDistancia.R

Defines functions MediaDistancia

Documented in MediaDistancia

#' Media ponderada entre as matrizes de dissimilaridade
#'
#' @description Esta funcao faz a padronizacao da matriz de dissimilaridade
#' a fim de retirar a escala, nesta etapa, os valores das matrizes sao calculados,
#' a fim de variar entre 0 e 1. Posteriormente, e feita a media ponderada entre
#' essas matrizes em funcao do numero de variaveis consideradas na estimativa
#' de cada uma dessas dissimilaridade. Essa funcao e importante quando se trabalha
#' com dados mistos.
#' @name MediaDistancia
#' @usage MediaDistancia(Distancias,n,Normatizar=TRUE)
#' @param Distancias Objeto do tipo list contendo as matrizes de dissimilaridade.
#' @param n Vetor com o numero de variaveis consideradas na estimacao de cada medida
#' de dissimilaridade.
#' @param Normatizar Valor Logico. Se TRUE a matriz de dissimilaridade sera normatizada
#' para que os valores variem entre 0 e 1.
#' @return Retorna a media ponderada de duas matrizes de dissimilaridade.
#' @seealso \code{\link{dist}}
#' @references
#' PlayList "Curso de Analise Multivariada":
#'  https://www.youtube.com/playlist?list=PLvth1ZcREyK72M3lFl7kBaHiVh5W53mlR
#'
#'
#' CRUZ, C.D. and CARNEIRO, P.C.S.  Modelos biometricos aplicados ao
#'   melhoramento genetico. 3nd Edition. Vicosa, UFV, v.2, 2014. 668p.  (ISBN: 8572691510)
#'
#' FERREIRA, D.F. Estatistica Multivariada. (2018) 3ed. UFLA. 624p. (ISBN 13:978 8581270630)
#'
#'  HAIR, J.F. Multivariate Data Analysis.  (2016) 6ed. Pearson Prentice HalL.
#'   (ISBN 13:978 0138132637)
#' @examples
#'
#' #Obentendo as dados de exemplo
#' DadosQuanti=matrix(rnorm(100,100,5),ncol=4)
#' DadosQuali=matrix(round(runif(200,1,5),0),ncol=8)
#' DadosBin=matrix(round(rbinom(400 ,1,0.5),0),ncol=16)
#' rownames(DadosQuanti)=rownames(DadosQuali)=rownames(DadosBin)=paste("T",1:25,sep="_")
#'
#' #Obentendo as matrizes de dissimilaridade
#' DistQuant=Distancia(DadosQuanti,4)
#' DistQuali=Distancia(DadosQuali,10)
#' Distbin=Distancia(DadosBin,12)
#'
#' #Criando os argumentos
#' Distancias=list(DistQuant,DistQuali,Distbin)
#' n=c(ncol(DadosQuanti),ncol(DadosQuali),ncol(DadosBin))
#'
#' #obentedo a media ponderada das matrizes
#' Dist=MediaDistancia(Distancias,n,Normatizar = TRUE)
#' Dist
#' @export





MediaDistancia=function(Distancias,n,Normatizar=TRUE){

  Distancias2=vector("list", length(Distancias))



  for(i in 1:length(Distancias)){
    if(is(Distancias[[i]])=="Distancia"){
      Distancias2[[i]]=as.matrix(Distancias[[i]]$Distancia)
    }

    if(is(Distancias[[i]])!="Distancia"){
    Distancias2[[i]]=as.matrix(Distancias[[i]])

  }}

  Distancias=Distancias2

  if(Normatizar==TRUE){
    for(i in 1:length(Distancias)){
      Distancias[[i]]=(Normatiza(Distancias[[i]],Metodo = 2))

    }
  }

  for(i in 1:length(Distancias)){
    Distancias[[i]]=Distancias[[i]]*n[i]
  }

  Dist=Distancias[[i]]*0
  for(i in 1:length(Distancias)){
    Dist=Dist+Distancias[[i]]/sum(n)
  }
  as.dist(Dist)
}

Try the MultivariateAnalysis package in your browser

Any scripts or data that you put into this service are public.

MultivariateAnalysis documentation built on May 29, 2024, 5:25 a.m.