You are on page 1of 28
POST ANALISE JANUARY 4, 2 MULTIVARIADA ined 15 MINUTE RE COMR vy in zZ ANALISE MULTIVARIADA Imagem do Wikpedia Esse é 0 primeiro post do ano e como no ano de 2017 falou-se tanto das maravilhas computacionais desta onda do Big Data e em contra partida, identificamos que deste 2004 a popularidade pelo termo “estatistica” vem diminuindo como mostrei em uma breve pesquisa neste post sobre a API do googletrends sinto que existe uma necessidade de se ampliar também a divulgacio dos métodos estatisticos pois o aprofundamento na teoria é fundamental (é muito facil achar resultados sem fundamento apenas “apertando boto”), como as a” 1) ma POST # SETWD( quantidades de dados Diversas vezes nos deparamos com bases de dados que envolvem além de muitas observacées, muitas varidveis, especialmente nas andlises de fendmenos ou processos sociais, psicolégicos, educacionais e econdmicos bem como na area da quimica, biologia, geologia, marketing, medicina, medicina veterindria, dentre muitas outras. Com as ferramentas estatisticas da andlise multivariada somos capazes de identificar muitos elementos que podem ter relevncia na anilise dos dados, dois exemplos de ferramentas importantes so as que permitem encontrar fatores que nao sao diretamente observaveis com base em um conjunto de variéveis observaveis e as que permitem agrupar conjuntos de dados que possuem caracterfsticas semelhantes com algoritimos computacionais (chamados de aprendizados no-supervisionados ou semi- supervisionados em machine learning) e a partir dai estudar as novas classificacées. Neste post sera apresentado algumas solugées para 0 caso em que existe a necessidade de avaliar um grande conjunto de dados com muitas varidveis e ndo temos muitas informacdes a respeito. ANALISE FATORIAL Na andlise fatorial buscamos fatores que explicam parte da variancia total dos dados, os fatores sdo as somas + # SETWD( VUDIJENIVY VA ANALIDE FATORIAL: © Procura identificar fatores que nao sao diretamente observaveis, com base em um conjunto de varidveis observaveis. + Explicara correlago ou covaridncia, entre um conjunto de varidveis, em termos de um numero limitado de varidveis ndo-observaveis, chamadas de fatores ou varidveis latentes. * Em casos nos quais se tem um numero grande de varidveis medidas e correlacionadas entre si, seria possivel identificar-se um numero menor de varidveis alternativas, nao correlacionadas e que de algum modo sumarizassem as informacdes principais das varidveis originais. * Apartir do momento em que os fatores sao identificados, seus valores numéricos, chamados de escores, podem ser obtidos para cada elemento amostral. Conseqiientemente, estes escores podem ser utilizados em outras analises que envolvam outras técnicas estatisticas, como analise de regress3o ou andlise de variancia, por exemplo. ETAPAS PARA REALIZAGAO * Computacao da matriz de correlagdes para as varidveis originais; * Extragdo de fatores POST Tacit; Calculo dos escores dos fatores MATRIZ DE CORRELAGAO: Teste de Bartlett - a hipdtese nula da matriz de correlagdo ser uma matriz identidade (|R| = 1), isto 6, avalia se os componentes fora da diagonal principal sao zero. 0 resultado significativo indica que existem algumas relagGes entre as variaveis. NoR Bartlett.sphericity.test <- function(x) { method <- "Teste de esfericidade de Bat data.name <- deparse(substitute(x)) x <- subset(x, complete.cases(x)) # Om n <- nrow(x) p <- ncol(x) chisq <- (1-n+(2*p+5)/6)*log(det (cor(x! df <- p*(p-1)/2 p.value <- pchisq(chisq, df, lower.tai. names(chisq) <- "X-squared” names(df) <- "df" return(structure(list(statistic=chisq, method=method, di } Bartlett. sphericity.test(dados) < » POST aE ## data: dados # X-squared = 2590.3, df = 55, p-value + 4 » * Teste KMO (Kaiser-Meyer-Olkin) - avalia a adequacdo do tamanho amostra. Varia entre 0 e 1, onde: zero indica inadequado para anAlise fatorial, aceitavel se for maior que 0.5, recomendado acima de 0.8. NoR kmo = function(x) x = subset(x, complete.cases(x)) r= cor(x) i = solve(r) d = diag(i) p2 = (-i/sqrt(outer(d, d)))*2 diag(r2) <- diag(p2) <- @ KMO = sum(r2)/(sum(r2)+sum(p2)) MSA = colSums(r2)/(colSums(r2)+colSums: return(list(KMO=KMO, MSA=MSA)) kmo(dados) < » x POST # SETWD( aE Ht SMSA Ht A B c Hf 0.6789278 @.9151657 @.6897541 8.33855: a I j K HH @.4901580 @.4895023 @.4686937 4 » TIPOS DE CORRELAGAO: Nem sempre é possfvel utilizar a correlacao de pearson, porém, existem diversas outras maneiras de se saber qual a correlacaio dos dados. Podemos utilizar correlacées como de Spearman, Policérica, etc... Jd fiz um post onde explico os diferentes tipos de relacdes entre os tipos de varidveis e os tipos de correlagées possiveis para avaliar a relacao dessas varidveis. Aqui um outro exemplo de como utilizar a correlagao parcial partial.cor <- function (x) { R <- cor(x) RI <- solve(R) D <- 1/sqrt(diag(RI)) Rp <- -RI * (D %0% D) diag(Rp) <- @ rownames(Rp) <- colnames(Rp) <- colnames! Rp POST mat_anti_imagem aE a Ht tHE aE HE HH HE HE HE HE HE HE aE a Ht tHE aE Ht at aE HE 4 A B D G H -e. -@. - 016688604 -e. -@. 006994874 -e. -@. -@. 045529480 -e. -@. -e. -@. -e. 009961615 A 099000000 258713494 872167400 042458373 011036934 071792191 + 055698412 042609593 G -006994874 127465596 750731196 321600101 792991683 080000000 025016441 059434295 -@ -@ -@ -@ B + 25871349 -09000000 + 204228089 + 05621580 -@9801359 - 06018969 +12746568 -@3375700 - 03720345 + 06775755 H -071792191 - 033756995 + 059785980 -@31969142 + 089035897 + 001496987 -025016441 - 890888880 +552295987 044929237 EXTRAGAO DE FATORES VIA COMPONENTES PRINCIPAIS -@.8721674¢ -@. 2042280 @.ee8900e -@.0245934: -@.0048283: -@.0@82012: @.04552944 @.0597859i -@.0400613¢ @.0041453« 2.055698 -@.037203« -0.040061: 2.082438. -@.039250: @.084673° -@.059434: -@.552295¢ 8.280000 @.056248! » POST # SETWD( < representar us aus * Também é determinado 0 método que sera utilizado, o mais utilizado é a andlise de componentes principais ESTIMACAO DO NUMERO DE FATORES M * Estimagdo do ntimero de fatores m * Para a estimacao de m, bastard extrair-se os autovalores da matriz de correlagéo amostral. * Observa-se quais autovalores sao os mais importantes em termos de grandeza numérica. * osautovalores refletem a importancia do fator seo ndmero de fatores for igual ao ntimero de varidveis entio a soma dos autovetores igual a soma das variancias (pois cada variancia sera igual a 1). * Portanto a razio $ /2 var $ indica proporcao da variabilidade total explicada pelo fator Crités 1. Aanélise da proporcao da variancia total relacionada com cada autovalor (;). Permanecem aqueles autovalores que maiores proporcées da variancia total e, portanto, o valor de m sera igual ao numero de autovalores retidos; 2. Acomparacao do valor numérico de (A;) com o valor 1. O valor de m seri igual ao ntimero de autovalores maiores ou iguais a 1. + POST i & # SETWDK vatures ue (aj) Urueriauus enruruerrruecrescente: Por este critério, procura-se no grafico um “ponto de salto”, que estaria representando um decréscimo de importancia em relacdo a varidncia total. 0 valor de m seria ento igual ao ntimero de autovalores anteriores ao “ponto de salto”. ANALISE DE COMPONENTES PRINCIPAIS: * Fatores so obtidos através da decomposi¢ao espectral da matriz de correlagées, resultado em cargas fatoriais que indicam o quanto cada variavel esta associada a cada fator e os autovalores associados a cada um dos fatores envolvidos * Sao formadas combinacées lineares das varidveis observadas. * Oprimeiro componente principal consiste na combinacdo que responde pela maior quantidade de variancia na amostra. * Osegundo componente responde pela segunda maior variancia na amostra e nao é correlacionado com o primeiro componente. * Sucessivos componentes explicam progressivamente menores porgdes de variancia total da amostra e todos sao nao correlacionados uns aos outros. No Ra analise de componentes principais pode ser realizada com as funges nativas prcomp() ea POST # SE autoplot() dopacote ggfortify apresentado em um posto que eu comento sobre ajustes de modelos lineares. Neste exemplo utilizaremos as fungées de codigo aberto encontrei nesse github que permite elaborar 0 grafico baseado em funcées do ggplot _, alémdisso também carregaremos 0 pacote deste Github. Veja: library(ggplot2) library(ggfortify) library(ggbiplot) #Componentes principais: acpcor=prcomp(dados, scale = TRUE) summary (acpcor) 4Hf Importance of components: tHE PCL Pc2 ## Standard deviation 1.7205 1.5835 : ## Proportion of Variance @.2691 0.2280 ¢ i### Cumulative Proportion @.2691 @.4971 ¢ itt Pcs Pca 4Hf Standard deviation @.4953 @.33061 ### Proportion of Variance @.0223 @.00994 i### Cumulative Proportion @.9824 @.99235 ggbiplot(acpcor, obs.scale = 1, var.scal ellipse = TRUE, circle = TRUE) + POST « C2 (22.8% explained var.) ps 26.9% explained var) # autoplot(acpcor, Label = TRUE, Label.s’ # loadings = TRUE, loadings. Labi < » Para a observacio do grafico scree-plot podemos utilizar os comandos a seguir (com fungGes nativas do R ou mesmo com fungées personalizadas como a que eu acabei de comentar disponivel nesse github #Com Funcao nativa do R: # plot(1:ncol(dados), acpcor$sdev*2, type # ylab = "Variancia", pch = 20, cex #0u funcao personalizada com ggplot2: ggscreeplot (acpcor) < » POST @ setwo1 “ prope of explained variance principal component number RoTACAO * Algumas variaveis sao mais correlacionadas com alguns fatores do que outras. * Emalguns casos, a interpretacdo dos fatores originais pode nao ser tarefa muito facil devido & aparigSo de coeficientes de grandeza numérica similar, e no desprezivel, em varios fatores diferentes. * Opropésito da rotacao é obter uma estrutura simples. « Emumaestrutura simples, cada fator tem carga alta somente para algumas variaveis, tornando mais facil a sua identificagao. © Tipos: Varimax, Quartimax, Equamax Aplicando a Varimax: k <- 6 #6 fatores selecionados carfat = acpcor$rotation[, 1:k] %*% diagi il + 29 24 22 12 10 10 POST 4 # SETWD( COMUNALIDADE > + Indices atribuidos a varidvel original que expressam em % 0 quanto da variabilidade de cada varidvel é » explicada pelo modelo * Designa-se por comunalidade (h?)a proporgao da varidncia de cada varidvel explicada pelos fatores comuns. * Ascomunalidades variam entre 0 e 1, sendo 0 quando os fatores comuns nao explicam nenhuma variancia da varidvel e 1 quando explicam toda a sua variancia. * Quando 0 valor das comunalidades é menor que 0,6 deve-se pensar em: aumentar a amostra, eliminar as variaveis. INTERPRETAR O MODELO * Feito pelas cargas fatoriais que sao os parametros do modelo * Fatores expressam as covariancias entre cada fator e as varidveis originais * Varimax ajuda a interpretar o modelo © Rotacdes ortogonais (para dependente) ; Rotacdes obliquas (para independentes) CLUSTERS Técnica estatistica multivariada que tem como objetivo organizar um conjunto de objetos em um determinado + POST # SE sejam semelhantes entre si,porém diferentes dos objetos nos outros clusters Etapas para anilise de clusters, que so comuns em qualquer anlise (KDD): * Selegdo dos objetos a serem agrupados * Definir conjunto de atributos que caracterizam os objetos * Medida de dissimilaridade * Selecdo de um algoritmo de agregacéo * Definicao do nimero de clusters + Interpretacao e validaco dos clusters Critérios para a selecdo * Selecionar variaveis diferentes entre si * Varidveis padronizadas (padronizagao mais comum éaZ-score) Existem algumas abordagens para a utilizagao das técnicas de anilises de clusters, as diferencas entre os métodos hierdrquicos e os nao hierarquicos sao as seguintes: Métodos Hierdrquicos so preferidos quando: * Serao analisadas varias alternativas de agrupamento. * Otamanho da amostra é moderado ( de 300 a 1000 objetos ) Métodos ndo-hierdrquicos sao preferidos quando: POST # SE hierarquicos so menos influenciados por outliers. * Hd um grande n® de objetos a serem agrupados. METODO HIERARQUICO DE AGRUPAMENTO E realizado em dois passos, 0 primeiro deles calcula-se a matriz de similaridade com 0 uso da funcao dist() (existem diversos tipos de distancias que podem ser utilizadas aqui), o método utilizado serd o de Ward (também poderfamos escolher 0 método da menor distancia, maior distancia ou a distancia média). Vantagens: * Rapidos e exigem menos tempo de processamento. * Apresentam resultados para diferentes niveis de agregacao. Desvantagens: * Alocacdo de um objeto em um cluster é irrevogavel * Impacto substancial dos outliers ( apesar do Ward ser o menos susceptivel) * No apropriados para analisar uma amostra muito extensa, pois a medida que o tamanho da amostra aumenta, a necessidade de armazenamento das distancias cresce drasticamente Para bases grandes é melhor nao usar este método pois precisa da matriz de distancias. POST a cluster. Geralmente utiliza-se o dendograma para a visualizagao dos clusters. #Construindo a matriz de similaridade: matriz_similaridade = dist(iris[,-5], "euclidean" ) #Construindo o agrupamento hierdrquico a agrupamento = hclust(matriz_similaridade, “ward.D" ) #Converte hcLust em dendrograma e plot: hed <- as.dendrogram(agrupamento) library(ggdendro) # Tipo pode ser “rectangle” ou "triangle dend_data <- dendro_data(hcd, type = “re: #0 que esta contido em dend_data: names(dend_data) ‘ > ## [1] "segments" “labels” “leaf. ‘ > plot(agrupamento,xlab="Matriz de similar: #Construindo representacao de grupos - gt na POST # SETWD( < #Construindo o dendograma: rect.hclust(agrupamento, k=3, border="rec a , ee EF} 8 zg 8 i B ° mi TU Maire de simiaridade Inclust (“ward D) Existem diversas outras maneiras de se visualizar dendogramas, veja a seguir um outro exemplo utilizandoo pacote ape library(ape) plot(as.phylo(agrupamento), type = “unroc no.margin = TRUE) es , POST @ SE Para mais informacGes de métodos de plot de dendogramas,talvez essa pagina possa ser til. METODO NAO HIERARQUICO DE AGRUPAMENTO K-MEANS Esta é uma das mais populares abordagens de agrupamento de dados por parti¢o. A partir de uma escolha inicial para os centroides, 0 algoritmo procede verificando quais exemplares so mais similares a quais centroides. Vantagens: + Tendem a maximizar a dispersio entre os centros de gravidade dos clusters (mantem os clusters bem separados) + Simplicidade de cAlculo, calcula somente as distdncias entre os objetos e os centros de gravidade dos clusters Desvantagens: POST « aleatéria * N&o hd garantias de um agrupamento étimo dos objetos #Construindo o agrupamento por particion c = kmeans(iris[,-5], #Conjunto 2, #Ndmero de iter.max=5 #Numero m ) ‘ > Para efeito de visualizagao, podemos utilizar a seguinte funcao que encontra dois fatores principais a partir da andlise fatorial e as utiliza como eixos plot_kmeans = function(df, clusters, run: suppressMessages(1ibrary(psych)) suppressMessages (library(geplot2)) #cLluster tmp_k = kmeans(df, centers = clusters, #factor tmp_f = fa(df, 2, rotate = "none") #collect data tmp_d = data.frame(matrix(ncol=0, nrow: tmp_d$cluster = as.factor(tmp_k$cluster tmp_d$fact_1 = as.numeric(tmp_f$scores| tmp_d$fact_2 = as.numeric(tmp_f$scores| POST # SETWD( #plot g = ggplot(tmp_d, aes(fact_1, fact_2, « return(g) + plot_kmeans(iris[,-5], 3) < » : we ite s to eo it get a, * ‘ts 104 2 oe a oft Mia saps? cluster 3, Mien * coil pete ie go gee ‘a & aay Sr Sn 188 m ff ee Ce Savana 1% oe aot an * "D ‘3 , 2 of» * 3 Me 1» 2 a fe a « ANALISE EXPLORATORIA DOS CLUSTERS No vou me estender nessa parte, mas é bom esclarecer que apés encontrar os clusters e de extrema iniportancia realizar a andlise exploratéria deles para” entender os comportamentos dos grupos identificados. #Conferindo os grupos formados: c$cluster%>% table() POST Q Ml # SETWDU) < HH 53 97 c$cluster%>% table()%>% barplot(main="Frequéncias dos clusters' as , Frequéncias dos clusters a all luster 1 Custer 2 60 20 MEDIDAS DE VALIDAGAO E ESTABILIDADE PSEUDO-F Ontmero adequado de clusters (k) deve ser maximizar 0 pseudo-F: BSS k-1 — __ Quadrado médio entre clusters WSS — Quadrado médio dentro dos clusters N-k pseudo — F = LIBRARY(CLVALID) + POST # SETWD( < Q Vejamos os tipos de medidas: Medidas de validagao: 1. conectividade: relativa ao grau de vizinhanca entre objetos em um mesmo cluster, varia entre 0e infinito e quanto menor melhor. 2. silhueta: homogeneidade interna, assume valores entre -1 e 1 e quanto mais préximo de 1 melhor. 3. indice de Dunn: quantifica a separa¢ao entre os agrupamentos, assume valores entre 0 e 1 e quanto maior melhor. Medidas de estabilidade: 1. APN - average proportion of non-overlap: propor¢ao média de observacées nao classificadas no mesmo cluster nos casos com dados completos e incompletos. Assume valor no intervalo [0,1], proximos de 0 indicam agrupamentos consistentes. 2. AD - average distance: distancia média entre observacées classificadas no mesmo cluster nos casos com dados completos e incompletos. Assume valores nao negativos, sendo preferiveis valores préximos de zero. 3. ADM - average distance between means: distancia média entre os centroides quando as observacées esto em um mesmo cluster. Assume valores néo negativos, sendo preferiveis valores préximos de zero. a” POST @ SE observacdes na coluna removida. Assume valores nao negativos, sendo preferiveis valores proximos de zero. library(clvalid) #Medidas de valida¢gao: valida=clvalid(iris[1:4],3,clMethods=c("t summary (valida) 4 » HE ## Clustering Methods: ## = hierarchical kmeans HE ## Cluster sizes: He 3 HE ## Validation Measures: HE 3 4HE ## hierarchical Connectivity 4.4770 HE Dunn 0.1378 Ht Silhouette @.5542 ## kmeans Connectivity 10.0917 a Dunn 8.0988 Ht Silhouette 8.5528 aE ## Optimal Scores: POST @ SE ### Connectivity 4.4770 hierarchical 3 ## Dunn @.1378 hierarchical 3 ### Silhouette @.5542 hierarchical 3 #Medidas de estabilidade; valida=clvalid(iris[1:4],3,clMethods=c("t summary (valida) < » aE ## Clustering Methods: ### hierarchical kmeans HH it Cluster sizes: He 3 HH ##t Validation Measures: itt z= HE ## hierarchical APN @.0912 tt AD 1.0596 a ADM @.3680 tHe FOM @.4209 ## kmeans APN @.0630 HE AD 0.9398 dH ADM @.1131 itt FOM 6.3935 itt POST @ SE tH Score Method Clusters dt APN @.063@ kmeans 3 ## AD @.939@ kmeans 3 ## ADM @.1131 kmeans 3 df FOM @.3935 kmeans 3 GRAFICO DA SILHUETA: library(cluster) #Construindo a matriz de similaridade: matriz_similaridade = dist(iris[,-5], "euclidean" ) #Construindo 0 agrupamento hierdrquico a agrupamento = hclust(matriz_similaridade “ward.D" ) silhueta =: ilhouette(cutree(agrupamento,| plot (silhueta,main="") < » POST @ SETWD( 1: 50 | 080 2: 64041 oo 02 04 os os 10 ‘Sihouete width 5 ‘Average sihovette width: 0.55, summary (silhueta) ## Silhouette of 15@ units in 3 clusters ## Cluster sizes and average silhouette HH 5e 64 36 HH @.7994998 @.4115006 0.4670305 ## Individual silhouette widths: HE Min. 1st Qu. Median Mean HH -@.09013 0.39933 @.56701 @.55416 ¢ 4 » MUITAS OPGOES Como podemos observar, a andlise de agrupamentos é um método exploratorio. E util para organizar conjuntos de dados que contam com caracteristicas semelhantes. E uma das principais técnicas da mineracao de dados e id conta com grande variedade de algoritmos. REFERENCIA POST # SETWDU) < MB ESTATISTICA | R_| TEORIA ANALISE MUTIVARIADA | NAO SUPERVISIONADO CLUSTERING WD ESTATISTICA | GOMESFELLIPE | R MARKDOWN R | TEORIA | PCA | KMEANS | CLUSTERING ANALISE MULTIVARIADA ALSO ON GOMESFELLIPE hd 2 anos ha 2 anos Prevendo a.. Fellipe Gomes POST # SETWOK 0 COMENTARIOS © Iniciar sessaov Inicie o debate... INGIEASESsAocoM ——-OUREGIsTE-SEcoMDIsaus @) < PACOTES DO R PARA AVALIAR O AJUSTE DE MODELOS TABELAS INCRIVEIS COMR >

You might also like