Permutação dos dados originais para avaliar a significância dos eixos de uma PCA
2 participantes
Página 1 de 1
Permutação dos dados originais para avaliar a significância dos eixos de uma PCA
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?
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?
lipegui- Mensagens : 12
Data de inscrição : 03/10/2017
Re: Permutação dos dados originais para avaliar a significância dos eixos de uma PCA
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ó:
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)
Re: Permutação dos dados originais para avaliar a significância dos eixos de uma PCA
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?
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?
lipegui- Mensagens : 12
Data de inscrição : 03/10/2017
Re: Permutação dos dados originais para avaliar a significância dos eixos de uma PCA
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.
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.
Conteúdo patrocinado
Tópicos semelhantes
» Função "labels" para alterar os nomes de valores nos eixos
» BoxCox para transformação de dados
» Como pegar dados da Tabela para calcular %
» Teste nao parametrico para conjuntos de dados pequeno
» Análises Interessantes para um grupo de dados com variáveis categóricas e quantitativas
» BoxCox para transformação de dados
» Como pegar dados da Tabela para calcular %
» Teste nao parametrico para conjuntos de dados pequeno
» Análises Interessantes para um grupo de dados com variáveis categóricas e quantitativas
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|