Emprego da PCA para seleção de variáveis mais correlacionadas no primeiro componente principal

Prezados Membros, Gostaria de selecionar as 5 variáveis resposta no primeiro componente principal mais correlacionadas usando a PCA, através da função prcomp(), conforme o post https://stats.stackexchange.com/questions/115032/how-to-find-which-variables..., sendo o meu CRM: ##Banco de dados set.seed(12345) mat <- matrix(rnorm(120,0,0.5),nrow=6,byrow=TRUE) rownames(mat) <- paste("s",1:6,sep="") colnames(mat) <- paste("g",1:20,sep="") head(mat) ## Espectros com maior correlação pca.object <- prcomp(mat,center=TRUE,scale.=FALSE) plot(pca.object) #Quero os cinco mais correlacionados topN <- 5 load.rot <- scale(pca.object$rotation) names(load.rot[,1][order(abs(load.rot[,1]),decreasing=TRUE)][1:topN]) Então cheguei as variáveis resposta, mas gostaria que alguém me explicasse o por que disso fazendo um favor, pois quando utilizo os meus dados originais, são sempre as variáveis resposta com maior valor numérico que são selecionadas, mesmo utilizando a função scale(). Obrigado, Alexandre -- ====================================================================== Alexandre dos Santos Proteção Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 99686-6970 (VIVO) (+55) 65 3221-2674 (FIXO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br Lattes: http://lattes.cnpq.br/1360403201088680 OrcID: orcid.org/0000-0001-8232-6722 - ResearcherID: A-5790-2016 Researchgate: www.researchgate.net/profile/Alexandre_Santos10 LinkedIn: br.linkedin.com/in/alexandre-dos-santos-87961635 Mendeley:www.mendeley.com/profiles/alexandre-dos-santos6/ ======================================================================

Você viu o resumo na primeira resposta no link do SO que você postou? On Wed, May 2, 2018 at 6:02 PM, ASANTOS via R-br <r-br@listas.c3sl.ufpr.br> wrote:
Prezados Membros,
Gostaria de selecionar as 5 variáveis resposta no primeiro componente principal mais correlacionadas usando a PCA, através da função prcomp(), conforme o post https://stats.stackexchange.co m/questions/115032/how-to-find-which-variables-are-most-corr elated-with-the-first-principal-compone, sendo o meu CRM:
##Banco de dados
set.seed(12345) mat <- matrix(rnorm(120,0,0.5),nrow=6,byrow=TRUE) rownames(mat) <- paste("s",1:6,sep="") colnames(mat) <- paste("g",1:20,sep="") head(mat)
## Espectros com maior correlação pca.object <- prcomp(mat,center=TRUE,scale.=FALSE) plot(pca.object)
#Quero os cinco mais correlacionados topN <- 5 load.rot <- scale(pca.object$rotation) names(load.rot[,1][order(abs(load.rot[,1]),decreasing=TRUE)][1:topN])
Então cheguei as variáveis resposta, mas gostaria que alguém me explicasse o por que disso fazendo um favor, pois quando utilizo os meus dados originais, são sempre as variáveis resposta com maior valor numérico que são selecionadas, mesmo utilizando a função scale().
Obrigado,
Alexandre
-- ====================================================================== Alexandre dos Santos Proteção Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 99686-6970 (VIVO) (+55) 65 3221-2674 (FIXO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br Lattes: http://lattes.cnpq.br/1360403201088680 OrcID: orcid.org/0000-0001-8232-6722 - ResearcherID: A-5790-2016 Researchgate: www.researchgate.net/profile/Alexandre_Santos10 LinkedIn: br.linkedin.com/in/alexandre-dos-santos-87961635 Mendeley:www.mendeley.com/profiles/alexandre-dos-santos6/ ======================================================================
_______________________________________________ R-br mailing list R-br@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 fornea cdigo mnimo reproduzvel.

E uma observação que pode ajudá-lo a entender melhor o problema (ou a solução): Você escreveu: « Gostaria de selecionar as 5 variáveis resposta no primeiro componente principal mais correlacionadas . . . », mas o que o procedimento descrito no link faz é "Selecionar as cinco variáveis mais correlacionadas *com* a primeira [coordenada] componente principal." Ou seja: dado que a PCA foi realizada, por convenção a 1ª componente da PCA é combinação linear das suas variáveis que mais apresenta a variabilidade dos seus dados. Você então via o procedimento descrito no link do SO escolhe cinco variáveis (a PCA não faz distinção se são resposta ou não) que têm maior projeção nessa componente da PCA. HTH -- Cesar Rabak 2018-05-03 0:47 GMT-03:00 Cesar Rabak <cesar.rabak@gmail.com>:
Você viu o resumo na primeira resposta no link do SO que você postou?
On Wed, May 2, 2018 at 6:02 PM, ASANTOS via R-br <r-br@listas.c3sl.ufpr.br
wrote:
Prezados Membros,
Gostaria de selecionar as 5 variáveis resposta no primeiro componente principal mais correlacionadas usando a PCA, através da função prcomp(), conforme o post https://stats.stackexchange.co m/questions/115032/how-to-find-which-variables-are-most-corr elated-with-the-first-principal-compone, sendo o meu CRM:
##Banco de dados
set.seed(12345) mat <- matrix(rnorm(120,0,0.5),nrow=6,byrow=TRUE) rownames(mat) <- paste("s",1:6,sep="") colnames(mat) <- paste("g",1:20,sep="") head(mat)
## Espectros com maior correlação pca.object <- prcomp(mat,center=TRUE,scale.=FALSE) plot(pca.object)
#Quero os cinco mais correlacionados topN <- 5 load.rot <- scale(pca.object$rotation) names(load.rot[,1][order(abs(load.rot[,1]),decreasing=TRUE)][1:topN])
Então cheguei as variáveis resposta, mas gostaria que alguém me explicasse o por que disso fazendo um favor, pois quando utilizo os meus dados originais, são sempre as variáveis resposta com maior valor numérico que são selecionadas, mesmo utilizando a função scale().
Obrigado,
Alexandre
-- ====================================================================== Alexandre dos Santos Proteção Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 99686-6970 (VIVO) (+55) 65 3221-2674 (FIXO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br Lattes: http://lattes.cnpq.br/1360403201088680 OrcID: orcid.org/0000-0001-8232-6722 - ResearcherID: A-5790-2016 Researchgate: www.researchgate.net/profile/Alexandre_Santos10 LinkedIn: br.linkedin.com/in/alexandre-dos-santos-87961635 Mendeley:www.mendeley.com/profiles/alexandre-dos-santos6/ ======================================================================
_______________________________________________ R-br mailing list R-br@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 fornea cdigo mnimo reproduzvel.

Obrigado Cezar, Então mudando names(load.rot[,2][order(abs(load.rot[,2]),decreasing=TRUE)][1:topN]) e names(load.rot[,3][order(abs(load.rot[,3]),decreasing=TRUE)][1:topN]), vou ter as cinco variáveis mais correlacionadas com a segunda e terceira componentes principais respectivamente? Novamente obrigado, Alexandre -- ====================================================================== Alexandre dos Santos Proteção Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 99686-6970 (VIVO) (+55) 65 3221-2674 (FIXO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br Lattes: http://lattes.cnpq.br/1360403201088680 OrcID: orcid.org/0000-0001-8232-6722 - ResearcherID: A-5790-2016 Researchgate: www.researchgate.net/profile/Alexandre_Santos10 LinkedIn: br.linkedin.com/in/alexandre-dos-santos-87961635 Mendeley:www.mendeley.com/profiles/alexandre-dos-santos6/ ====================================================================== Em 02/05/2018 23:57, Cesar Rabak escreveu:
##Banco de dados
set.seed(12345) mat <- matrix(rnorm(120,0,0.5),nrow=6,byrow=TRUE) rownames(mat) <- paste("s",1:6,sep="") colnames(mat) <- paste("g",1:20,sep="") head(mat)
## Espectros com maior correlação pca.object <- prcomp(mat,center=TRUE,scale.=FALSE) plot(pca.object)
#Quero os cinco mais correlacionados topN <- 5 load.rot <- scale(pca.object$rotation) names(load.rot[,1][order(abs(load.rot[,1]),decreasing=TRUE)][1:topN])

Sim Alexandre. Aliás, eu recomendo que você teste os resultados da pesquisa com os comandos (para os dados e resultados da PCA do seu CMR):
biplot(pca.object)
e
biplot(pca.object, choice=2:3)
Nessa representação você pode ver como as variáveis estão correlacionadas em relação às componentes da PCA *lembrando que a representação por ser espacial pode ter uma distorção devido às outras dimensões*. Por isso outros pacotes, como o FactoMiner (um dos meus favoritos junto com o ade4) permitem que se faça um corte nas variáveis que aparecem nesses gráficos levando em conta a assim chamada "qualidade da representação" em cada plano. Vou eludir discussão sobre um número muito reduzido de casos versus o número de variáveis neste caso porque entendo que o CMR é só para discutir a técnica. HTH 2018-05-03 16:30 GMT-03:00 ASANTOS <alexandre.santos@cas.ifmt.edu.br>:
Obrigado Cezar,
Então mudando names(load.rot[,2][order(abs( load.rot[,2]),decreasing=TRUE)][1:topN]) e names(load.rot[,3][order(abs( load.rot[,3]),decreasing=TRUE)][1:topN]), vou ter as cinco variáveis mais correlacionadas com a segunda e terceira componentes principais respectivamente?
Novamente obrigado,
Alexandre
-- ====================================================================== Alexandre dos Santos Proteção Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 99686-6970 (VIVO) (+55) 65 3221-2674 (FIXO)e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br Lattes: http://lattes.cnpq.br/1360403201088680 OrcID: orcid.org/0000-0001-8232-6722 - ResearcherID: A-5790-2016 Researchgate: www.researchgate.net/profile/Alexandre_Santos10 LinkedIn: br.linkedin.com/in/alexandre-dos-santos-87961635Mendeley:www.mendeley.com/profiles/alexandre-dos-santos6/ ======================================================================
Em 02/05/2018 23:57, Cesar Rabak escreveu:
##Banco de dados
set.seed(12345) mat <- matrix(rnorm(120,0,0.5),nrow=6,byrow=TRUE) rownames(mat) <- paste("s",1:6,sep="") colnames(mat) <- paste("g",1:20,sep="") head(mat)
## Espectros com maior correlação pca.object <- prcomp(mat,center=TRUE,scale.=FALSE) plot(pca.object)
#Quero os cinco mais correlacionados topN <- 5 load.rot <- scale(pca.object$rotation) names(load.rot[,1][order(abs(load.rot[,1]),decreasing=TRUE)][1:topN])

Obrigado Cesar e Fernando pelas dicas estão ajudando muito a solidificar os estudos que venho conduzindo, Fernando obrigado pelo vídeo, tirando o inglês carregado no francês que dificulta na compreensão ajudou muito e estou explorando muito a ferramenta dimdesc(). Cesar, as figuras que me mandou representa bem o que eu quero, qual a função que utilizou para gerar aquelas figuras de % de contribuição de cada variável. Obrigado a ajuda de todos, -- ====================================================================== Alexandre dos Santos Proteção Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 99686-6970 (VIVO) (+55) 65 3221-2674 (FIXO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br Lattes: http://lattes.cnpq.br/1360403201088680 OrcID: orcid.org/0000-0001-8232-6722 - ResearcherID: A-5790-2016 Researchgate: www.researchgate.net/profile/Alexandre_Santos10 LinkedIn: br.linkedin.com/in/alexandre-dos-santos-87961635 Mendeley:www.mendeley.com/profiles/alexandre-dos-santos6/ ====================================================================== Em 04/05/2018 17:36, Cesar Rabak escreveu:
Sim Alexandre.
Aliás, eu recomendo que você teste os resultados da pesquisa com os comandos (para os dados e resultados da PCA do seu CMR):
biplot(pca.object)
e
biplot(pca.object, choice=2:3)
Nessa representação você pode ver como as variáveis estão correlacionadas em relação às componentes da PCA *lembrando que a representação por ser espacial pode ter uma distorção devido às outras dimensões*.
Por isso outros pacotes, como o FactoMiner (um dos meus favoritos junto com o ade4) permitem que se faça um corte nas variáveis que aparecem nesses gráficos levando em conta a assim chamada "qualidade da representação" em cada plano.
Vou eludir discussão sobre um número muito reduzido de casos versus o número de variáveis neste caso porque entendo que o CMR é só para discutir a técnica.
HTH
2018-05-03 16:30 GMT-03:00 ASANTOS <alexandre.santos@cas.ifmt.edu.br <mailto:alexandre.santos@cas.ifmt.edu.br>>:
Obrigado Cezar,
Então mudando names(load.rot[,2][order(abs(load.rot[,2]),decreasing=TRUE)][1:topN]) e names(load.rot[,3][order(abs(load.rot[,3]),decreasing=TRUE)][1:topN]), vou ter as cinco variáveis mais correlacionadas com a segunda e terceira componentes principais respectivamente?
Novamente obrigado,
Alexandre
-- ====================================================================== Alexandre dos Santos Proteção Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 99686-6970 (VIVO) (+55) 65 3221-2674 (FIXO) e-mails:alexandresantosbr@yahoo.com.br <mailto:e-mails:alexandresantosbr@yahoo.com.br> alexandre.santos@cas.ifmt.edu.br <mailto:alexandre.santos@cas.ifmt.edu.br> Lattes:http://lattes.cnpq.br/1360403201088680 <http://lattes.cnpq.br/1360403201088680> OrcID:orcid.org/0000-0001-8232-6722 <http://orcid.org/0000-0001-8232-6722> - ResearcherID: A-5790-2016 Researchgate:www.researchgate.net/profile/Alexandre_Santos10 <http://www.researchgate.net/profile/Alexandre_Santos10> LinkedIn:br.linkedin.com/in/alexandre-dos-santos-87961635 <http://br.linkedin.com/in/alexandre-dos-santos-87961635> Mendeley:www.mendeley.com/profiles/alexandre-dos-santos6/ ======================================================================
Em 02/05/2018 23:57, Cesar Rabak escreveu:
##Banco de dados
set.seed(12345) mat <- matrix(rnorm(120,0,0.5),nrow=6,byrow=TRUE) rownames(mat) <- paste("s",1:6,sep="") colnames(mat) <- paste("g",1:20,sep="") head(mat)
## Espectros com maior correlação pca.object <- prcomp(mat,center=TRUE,scale.=FALSE) plot(pca.object)
#Quero os cinco mais correlacionados topN <- 5 load.rot <- scale(pca.object$rotation) names(load.rot[,1][order(abs(load.rot[,1]),decreasing=TRUE)][1:topN])

Alexandre, Eu usei as funções do pacote "factoextra" <http://www.sthda.com/english/wiki/factoextra-r-package-easy-multivariate-data-analyses-and-elegant-visualization> . A partir do seu CMR você pode seguir com:
install.packages("factoextra") ## só vai ser necessário uma única vez
library("factoextra")
fviz_contrib(pca.object, choice = "var", axes = 1, top = 5) fviz_contrib(pca.object, choice = "var", axes = 2, top = 5) fviz_contrib(pca.object, choice = "var", axes = 3, top = 5)
O parâmetro "top = 5" foi colocado porque você explicitou seu desejo de obter as cinco primeiras variáveis. Se você usar o default do sistema, ele coloca uma linha vermelha tracejada indicando o número "recomendado" (baseado numa lógica decorrente da teoria da PCA [p/detalhes, v. a doc. do pacote]). HTH -- Cesar Rabak 2018-05-05 9:47 GMT-03:00 ASANTOS <alexandre.santos@cas.ifmt.edu.br>:
Obrigado Cesar e Fernando pelas dicas estão ajudando muito a solidificar os estudos que venho conduzindo,
Fernando obrigado pelo vídeo, tirando o inglês carregado no francês que dificulta na compreensão ajudou muito e estou explorando muito a ferramenta dimdesc().
Cesar, as figuras que me mandou representa bem o que eu quero, qual a função que utilizou para gerar aquelas figuras de % de contribuição de cada variável.
Obrigado a ajuda de todos,
-- ====================================================================== Alexandre dos Santos Proteção Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 99686-6970 (VIVO) (+55) 65 3221-2674 (FIXO)e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br Lattes: http://lattes.cnpq.br/1360403201088680 OrcID: orcid.org/0000-0001-8232-6722 - ResearcherID: A-5790-2016 Researchgate: www.researchgate.net/profile/Alexandre_Santos10 LinkedIn: br.linkedin.com/in/alexandre-dos-santos-87961635Mendeley:www.mendeley.com/profiles/alexandre-dos-santos6/ ======================================================================
Em 04/05/2018 17:36, Cesar Rabak escreveu:
Sim Alexandre.
Aliás, eu recomendo que você teste os resultados da pesquisa com os comandos (para os dados e resultados da PCA do seu CMR):
biplot(pca.object)
e
biplot(pca.object, choice=2:3)
Nessa representação você pode ver como as variáveis estão correlacionadas em relação às componentes da PCA *lembrando que a representação por ser espacial pode ter uma distorção devido às outras dimensões*.
Por isso outros pacotes, como o FactoMiner (um dos meus favoritos junto com o ade4) permitem que se faça um corte nas variáveis que aparecem nesses gráficos levando em conta a assim chamada "qualidade da representação" em cada plano.
Vou eludir discussão sobre um número muito reduzido de casos versus o número de variáveis neste caso porque entendo que o CMR é só para discutir a técnica.
HTH
2018-05-03 16:30 GMT-03:00 ASANTOS <alexandre.santos@cas.ifmt.edu.br>:
Obrigado Cezar,
Então mudando names(load.rot[,2][order(abs(l oad.rot[,2]),decreasing=TRUE)][1:topN]) e names(load.rot[,3][order(abs(l oad.rot[,3]),decreasing=TRUE)][1:topN]), vou ter as cinco variáveis mais correlacionadas com a segunda e terceira componentes principais respectivamente?
Novamente obrigado,
Alexandre
-- ====================================================================== Alexandre dos Santos Proteção Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 99686-6970 (VIVO) (+55) 65 3221-2674 (FIXO)e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br Lattes: http://lattes.cnpq.br/1360403201088680 OrcID: orcid.org/0000-0001-8232-6722 - ResearcherID: A-5790-2016 Researchgate: www.researchgate.net/profile/Alexandre_Santos10 LinkedIn: br.linkedin.com/in/alexandre-dos-santos-87961635Mendeley:www.mendeley.com/profiles/alexandre-dos-santos6/ ======================================================================
Em 02/05/2018 23:57, Cesar Rabak escreveu:
##Banco de dados
set.seed(12345) mat <- matrix(rnorm(120,0,0.5),nrow=6,byrow=TRUE) rownames(mat) <- paste("s",1:6,sep="") colnames(mat) <- paste("g",1:20,sep="") head(mat)
## Espectros com maior correlação pca.object <- prcomp(mat,center=TRUE,scale.=FALSE) plot(pca.object)
#Quero os cinco mais correlacionados topN <- 5 load.rot <- scale(pca.object$rotation) names(load.rot[,1][order(abs(load.rot[,1]),decreasing=TRUE)][1:topN])
participantes (3)
-
ASANTOS
-
Cesar Rabak
-
Fernando Antonio de souza