Permutação dos dados originais para avaliar a significância dos eixos de uma PCA

Ir em baixo

Permutação dos dados originais para avaliar a significância dos eixos de uma PCA

Mensagem por lipegui em Ter Dez 05, 2017 8:21 pm

Boa noite prof. Marcos e colegas

O livro Ecologia Numérica Uma introdução à análise multivariada de dados ecológicos, do prof. Jean Louis Valentin, na abordagem que ele faz sobre PCA, em determinado momento ele fala a respeito da significância dos eixos (isto é, quantos eixos devem ser considerados na interpretação). Aí cita um método em que ele denomina como método indireto, em que os autovalores são comparados aos autovalores que são obtidos a partir de dados aleatórios gerados da tabela de dados originais.

Nas palavras deste ilustre professor, ele afirma que quando se tem uma tabela de dados ao acaso, o decaimento dos autovalores é progressivo, sendo que a partir do ponto em que um autovalor dos dados originais é menor que o autovalor dos dados gerados ao acaso, interrompe-se a interpretação.

No exemplo da aula, feito com o arquivo de dados insetos, ao rodar a PCA, foram gerados 4 autovalores. Foram utilizados na análise somente os dois primeiros autovalores. Para saber a significância, teria de gerar dados aleatórios, rodar a PCA e, se os dois primeiros autovalores da PCA dos dados originais forem maior que os 2 primeiros autovalores da PCA dos dados aleatórios gerados (e os dois últimos não), então os dois primeiros autovalores seriam significativos (e os dois últimos não).

Toda esta contextualização é pra perguntar sobre a permutação dos dados da tabela original. O professor fala de alguns algoritmos de randomização, como Monte Carlo, Bootstrap e Jacknife.

Gostaria de saber como posso gerar esses dados aleatórios no R a partir de uma tabela de dados originais utilizando esses algoritmos. Será que a função "sample" que gera dados aleatórios a partir dos dados originais utiliza algum desses algoritmos?
avatar
lipegui

Mensagens : 12
Data de inscrição : 03/10/2017

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Permutação dos dados originais para avaliar a significância dos eixos de uma PCA

Mensagem por Prof. Marcos em Qua Dez 06, 2017 9:59 am

Oi, Felipe!

Massa! Sim, existe para a PCA a abordagem de tentar buscar a "significância" dos eixos (coloco entre aspas, pois aqui não temos o mesmo significado que quando falamos de um teste de hipótese tradicional, ok?).

Apesar de interessante e objetivo, ele ainda é um método que envolve uma decisão arbitrária, e existem pesquisadores que preferem fazer uma escolha mais prática (como decidir previamente, escolher um ponto de corte de porcentagem, etc). Digo isso apenas para complementar o contexto, e dizer que não há consenso sobre o uso deste tipo de método. Mas é muito bacana falar do assunto, e é mais uma possibilidade de abordagem na PCA.

Em termos de aplicação, a coisa é ainda mais simples do que você está pensando. Poderíamos sim tentar construir uma função no R para fazer isso, permutando os dados e realizando diversas PCAs com eles, para depois comparar os autovalores da PCA real com os das PCAs de dados permutados. A função sample seria sim uma possibilidade.

Mas como estamos falando de um método conhecido, temos ele implementado em funções no R! Este método é normalmente chamado de "broken stick". Ele na verdade é computacionalmente bem simples: ele vai dividir os autovalores em pedaços ao acaso, considerando o número de componentes principais que temos em uma dada situação. E é interpretado como autovalores encontrados ao acaso (apesar dele não retornar diretamente aos dados que deram origem à PCA).

No R, é fácil de aplica, veja só:

Código:

library(vegan)
data(varechem)

pca.exemplo<-rda(varechem, scale=T)
summary(pca.exemplo)

#Os autovalores:
pca.exemplo$CA$eig

#Os autovalores em um gráfico de barras:
screeplot(pca.exemplo)

#Os valores do Broken Stick
bstick(pca.exemplo)


#Os autovalores em um gráfico de barras com Broken Stick para comparação visual:
screeplot(pca.exemplo, bstick=T)

avatar
Prof. Marcos

Mensagens : 354
Data de inscrição : 23/12/2015
Idade : 37
Localização : Maceió, AL

Ver perfil do usuário https://cantinhodor.wordpress.com/

Voltar ao Topo Ir em baixo

Re: Permutação dos dados originais para avaliar a significância dos eixos de uma PCA

Mensagem por lipegui em Qua Dez 06, 2017 10:32 pm

Boa noite prof. Marcos e colegas

Bacana a explicação, obrigado pela resposta prof. Marcos.

Só por curiosidade, esse processo de "gerar pedaços de autovalores ao acaso" pode ser chamado de permutação? Algum desses algoritmos de randomização para gerar amostras aleatórias está envolvido neste processo do broken stick também?
avatar
lipegui

Mensagens : 12
Data de inscrição : 03/10/2017

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Permutação dos dados originais para avaliar a significância dos eixos de uma PCA

Mensagem por Prof. Marcos em Qua Dez 13, 2017 6:28 pm

Oi, Felipe!

Não diria que é exatamente uma permutação, é algo bem mais simples, e não usa (acho) métodos de randomização.

Voltando à ideia original, seria até possível implementar o que você falou, permutando os dados originais e fazendo sucessivas PCAs com dados permutados. Seria interessante, apesar de ser potencialmente custoso para o computador, pois envolveria muitas permutações.
avatar
Prof. Marcos

Mensagens : 354
Data de inscrição : 23/12/2015
Idade : 37
Localização : Maceió, AL

Ver perfil do usuário https://cantinhodor.wordpress.com/

Voltar ao Topo Ir em baixo

Re: Permutação dos dados originais para avaliar a significância dos eixos de uma PCA

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum