[R-br] Análise de Fatores PCA e Dendograma

Andre Oliveira andreolsouza em yahoo.com.br
Terça Abril 14 13:54:21 BRT 2015


Eu havia tentado resolver desta forma que foi sugestão dias atrás de uma membro do grupo, mas sem sucesso.
dados<-read.xls("lixo.xls", row.names=1, encoding = "latin1")
Erro em read.table(file = file, header = header, sep = sep, quote = quote,  :   duplicate 'row.names' are not allowed  

André Oliveira Souza. 
Graduação em Matemática, mestrado em estatística aplicada.Instituto Federal de Educação, Ciência e Tecnologia do Espirito Santo.  IFES

 


     Em Segunda-feira, 13 de Abril de 2015 21:47, Cesar Rabak <cesar.rabak em gmail.com> escreveu:
   

 André,
A PCA é uma técnica que se justifica quando você tem muitas variáveis e deseja entender o conjunto de dados diminuindo a dimensão desse espaço. 
A PCA efetivamente cria um conjunto de componentes cujos autovalores são decrescentes e assim usando-se as primeiras componentes ('dimensões') se pode entender a variabilidade dos dados/casos.
Se seus dados têm somente quatro variáveis (as UF são na verdade rótulos de casos [mais sobre isso mais abaixo]) a PCA pode ser um passo quase desnecessário pois a análise da variabilidade de cada variável individualmente pode ser mais produtiva.
Para resolver o problema da coluna UF ser na verdade a que nomeia os casos, tente chamar (se for a primeira coluna da planilha que contém as UF):dados<-read.xls("lixo.xls", row.names=1, encoding = "latin1")

 Qtº à sua chamada para a GLM não é possível comentar em função da sua necessidade de não divulgação sobre seus dados.
HTH--Cesar Rabak

2015-04-13 20:08 GMT-03:00 Andre Oliveira <andreolsouza em yahoo.com.br>:

De fato esta não é a melhor análise a se fazer,  apenas gostaria de entender como eu poderia organizar tais dados para agrupar estados uma função prcomp e a  hclust,   em específico são dados do governo Federal de certo projeto, mas de vez em quando me deparo com isto aqui.  Os dados são estes. dados<-read.xls("lixo.xls",encoding = "latin1")
str(dados)
'data.frame':    270 obs. of  5 variables:
 $ UF: Factor w/ 27 levels "AC","AL","AM",..: 1 2 3 4 5 6 7 8 9 10 ...
 $ V1: int  0 1 2 0 15 14 7 7 2 0 ...
 $ V2: int  15 15 15 15 15 15 15 15 15 15 ...
 $ V3: int  15 15 15 15 15 15 15 15 15 15 ...
 $ V4: int  136 543 718 98 2976 2242 306 377 859 830 ...
PCA <- prcomp(dados,scale=T)
Erro em colMeans(x, na.rm = TRUE) : 'x' deve ser numérico
hc<-hclust(dist(dados),method='ward.D')
Mensagens de aviso perdidas:
In dist(dados) : NAs introduzidos por coerção


Claro que  também testei ...colocando ANO no banco dados  ...e TOTAL outras alternativas 

 UF2=relevel(UF, ref = "PR")
fit.model=glm(TOTAL~UF2+factor(ANO), family = Gamma))
summary(fit.model)


Mas,  enfim qual estrutura nos banco de dados eu poderia usar para corrigir o erros descritos em prcomp e hclust apenas para testes?
Pensei em transformar meu banco de dados em algo do tipo USArrests e ai não teria tais erros,  mas não sei se tem algo teórico que impeça. 
 obrigado 


André Oliveira Souza. 
Graduação em Matemática, mestrado em estatística aplicada.Instituto Federal de Educação, Ciência e Tecnologia do Espírito Santo.  IFES

 


    

  Em Segunda-feira, 13 de Abril de 2015 15:57, Felipe <felipe.e.barletta em gmail.com> escreveu:
   

  André,
 
 Assim como o Cesar comentou, não consegui identificar os data.frame por ano que você menciona.
 Agora se você tem esses data.frames por ano, será que uma análise de agrupamento ou PCA é o ideal? Uma abordagem longitudinal não seria melhor? E também não está claro o que deseja. É calcular médias anuais?
 O pacote prcomp() extrai sim as PCA's 
 
 No seu comando se colocar o argumento scale=T, ele vai criar as PCA's de acordo com a matriz de correlação. Veja:
 PCA <- prcomp(USArrests,scale=T)
 summary(PCA)
 names(PCA)
 PCA$sdev         #### Ríaz quadrada dos autovalores da matriz de correlação
 PCA$rotation    #### Matriz de autovetores normalizados
 
 Comparando com os autovalores e autovetores da matriz de correlação terá valores como os extraídos ao acima.
 
 mcor <- cor(USArrests)
 mcor
 vv <- eigen(mcor)
 vv
 
 Logo desta forma terá suas PCA's. Por exemplo a PCA1:
 Y1<-vv$vectors[1,1]*USArrests[,1]+vv$vectors[2,1]*USArrests[,2]+vv$vectors[3,1]*USArrests[,3]+vv$vectors[4,1]*USArrests[,4]
 Y1
 roY1x1 <- (vv$vectors[1,1]*sqrt(vv$values[1]))/sqrt(mvar[1,1]) ## Correlação da PCA1 com Murder
 roY1x1
 roY1x2 <- (vv$vectors[2,1]*sqrt(vv$values[1]))/sqrt(mvar[2,2]) ## Correlação da PCA1 com Assault
 roY1x2
 roY1x3 <- (vv$vectors[3,1]*sqrt(vv$values[1]))/sqrt(mvar[3,3]) ## Correlação da PCA1 com UrbanPop
 roY1x3
 roY1x4 <- (vv$vectors[4,1]*sqrt(vv$values[1]))/sqrt(mvar[4,4]) ## Correlação da PCA1 com Rape
 roY1x4
 
 
 
 
 
 On 12-04-2015 22:00, Andre Oliveira wrote:
  
  Cesar Rabak, obrigado pela resposta. Esta é a questão como organizar os três bancos de dados levando em conta a variável ano, pois, pelo que tenho olhado  as funções hclust() e prcomp() não extrai os PCAs e nem o dendograma replicando ano. Todos os exemplos do R trabalham com dados de um ano apenas. O objetivo é agrupar as cidades e os bancos de dados  USArrests2007, USArrests2009 e USArrests2010 são fictícios e estão ai apenas para ilustrar que tenho 3 bancos com mesma estrutura do  USArrests.  
  Dado que tenho apenas o  USArrests,  tudo pode ser  resolvido com o CMR com pequenas variações de escala e padronização das variáveis se desejar. 
  hc=hclust(dist(USArrests)) plot(hc)  summary(prcomp(USArrests)) 
  Obrigado  
  
  
  
  
      
 
 André Oliveira Souza. 
 Graduação em Matemática, mestrado em estatística aplicada.Instituto Federal de Educação, Ciência e Tecnologia do Espirito Santo.  IFES 
 
   
 
 
       Em Domingo, 12 de Abril de 2015 18:14, Cesar Rabak <cesar.rabak em gmail.com> escreveu:
   
 
    Embora você cite os procedimentos de PCA e plotar dendrograma e "análise dos fatores", você não dá muita informação de porque você precisa fazer essa análise e a que conclusões deseja chegar ou quais hipóteses avaliar. 
  Não sei onde estão os dataframes USArrests2007, USArrests2009 e USArrests2010, tendo nos meus defaults apenas o USArrests. Considerando este último, vê-se que a estrutura dele é 50 linhas com cada uma um estado americano por quatro variáveis (três crimes e  uma com a população), se você  for anexar bancos com estatísticas de diferentes anos você terá que considerar como colocar a variável ano em jogo e como analisar os estados americanos para manter apenas as cinquenta linhas... 
  A análise de componentes principais já faz todos os cálculos necessários, assim calcular as médias em separado só faria sentido para alguma análise descritiva (incidentalmente você pode [dependendo do pacote que use para fazer a PCA] escolher se a análise será centrada na média de cada variável ou não).
 
  Quanto aos comandos R que você colocou, eles não formam um CMR e por isso não dá para comentar a respeito.  
  HTH -- Cesar Rabak  
 2015-04-10 16:39 GMT-03:00 Andre Oliveira <andreolsouza em yahoo.com.br>:
 
    Pessoal boa tarde, estou com dois bancos de dados com a estrutura do  USArrests que vem no R só que repetido no tempo.  USArrests2007,  USArrests2009,  USArrests2010. Gostaria de orientação de como anexar estes dados para em um banco de dados único e rodar PCA, Plotar,  dendograma e a análise de fatores.  Pelo que percebi em meus devo  fazer o seguinte.  Montar um banco de dados com os três bancos e tirar a soma ou média. Não sei se fere princípios da análise. 
  
  dados= data.frame(USArrests2007,  USArrests2009,  USArrests2010)   # Não sei se é data.frame aqui mesmo! 
  
  V1=tapply(V1,grupos,mean) 
  . . . . . Vn=tapply(Vn,grupos,mean)  
  dadosmedio=cbind(V1, ........................,Vn) hclust(dist(dadosmedio) prcomp(dadosmédio) 
  Ou usar a estrutura com  Vn=tapply(Vn,grupos,sum) em vez de Vn=tapply(Vn,grupos,mean).  Ou usar o próprio banco formado por  USArrests2007,  USArrests2009,  USArrests2010. 
  
  Caso falei besteira, desconsidere. Ficarei agradecido por sugestões. 
  
  
  obrigado pela atenção
  
  
  
  
  
       
 
 André Oliveira Souza. 
 Graduação em Matemática, mestrado em estatística aplicada.Instituto Federal de Educação, Ciência e Tecnologia do Espirito Santo.  IFES 
 
      
_______________________________________________
 R-br mailing list
 R-br em listas.c3sl.ufpr.br
 https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
 Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
 
  
    
 
      
  
 _______________________________________________
R-br mailing list
R-br em listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível. 
 
 

   
_______________________________________________
R-br mailing list
R-br em listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.




  
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20150414/96d186ee/attachment.html>


Mais detalhes sobre a lista de discussão R-br