[R-br] Análise de Fatores PCA e Dendograma
Ari Clecius
ari072000 em yahoo.com.br
Terça Abril 14 15:57:12 BRT 2015
Prezado André, para não dar linhas duplicadas você pode colocar o objeto seguido de uma inicial para o ano por exemplo, se você tiver os objetos A, B, C, D, acrescente alguma codificação para o ano, A2014, A2015 e depois crie uma coluna qualitativa com os anos.
Att, Ari Clecius Alves de Lima
Engenheiro Químico
Me. Engenharia Civil
(085)84174333
(085)33669042
Em Terça-feira, 14 de Abril de 2015 13:54, Andre Oliveira <andreolsouza em yahoo.com.br> escreveu:
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.
_______________________________________________
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/249334df/attachment.html>
Mais detalhes sobre a lista de discussão R-br