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

Cesar Rabak cesar.rabak em gmail.com
Segunda Abril 13 21:47:33 BRT 2015


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> <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 listR-br em listas.c3sl.ufpr.brhttps://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/20150413/ff9f9e67/attachment-0001.html>


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