Sou estudante de doutorado em Zoologia, Instituto de Biociências, USP. Eu trabalho em sistemática filogenética de um grupo de sapos neotropicais, do gênero Hyloxalus, da família Dendrobatidae.
Trabalho final
Proposta A - Analise intraespecífico de diferentes variáveis quantitativas
Dentro das espécies há variação intraespecífica. Quantificar a variação é importante para conhecer se há mudanças entre populações, determinar se há dimorfismo sexual, e estimar a variação das entidades biológicas, o que vai ser de utilidade em diferentes áreas da biologia. A função analisa diferentes variáveis quantitativas de duas ou mais amostras (populações) e determina se há diferenças entre as variáveis, além de isso, determinar qual das variáveis aporta mais ao a variação por meio de um pca e vai fazer um analise discriminante das populações. Os objetos de entrada serão um dataframe que contem as variáveis por população. O objeto de saída vai ser gráficos de analise exploratório (boxplot e histograma), e os gráficos do pca e de analise discriminante, e também uma lista com os produtos de anova, pca e analise discriminante.
Proposta A - Analise estadístico das variáveis morfométricas de sapos. Info:
Dados das medidas de diferentes variáveis de diferentes populações
Passos:
Analise exploratório.
Anovas (comparando entre sexo, populações)
PCA e o Analise discriminante
Produtos:
Gráficos de analises exploratório, pca e de analise discriminante.
Uma lista com os productos de anova, pca e analise discriminante.
Oi Marvin, consigo entender melhor agora.
Ainda tenho dúvidas em relação ao que é uma análise discriminante.
Como você vai contar quais variáveis entrarão no pca?
Imaginemos duas populações A e B. A função calculará a probabilidade de serem duas populações distintas com base em várias características morfológicas certo? O que acontece se para “tamanho de olho” as populações forem consideradas diferentes, mas para “cor” as populações forem consideradas iguais? Você vai contar isso pro usuário de que forma? Qq dúvida, pode chamar. bjs
Rena
Oi Marvin,
não deu pra entender muito bem o que seu plano A vai fazer exatamente. Me parece uma análise exploratória um pouco mais profunda. É interessante, mas tem que ser melhor explicada, como a Rena disse, não está claro exatamente o que o usuário vai receber.
O plano B parece igual ao A mas com girinos, e o C não parece uma boa ideia se você não sabe como realizar o procedimento. Minha sugestão é explicar melhor o plano A.
Como a proposta A foi a sugestão para continuar desenvolvendo, então estuo enviando os passos mais detalhados da proposta. Objetos de entrada
Dataframe com as variáveis quantitativas por populações (dois ou mais)
Passos:
a-Analise exploratório para todas as variáveis (meia, desvio padrão, mínimo e maximo) b-Determinar se há diferenças significativas entre as variáveis por população (Anova) c-Escolher as variáveis que tem diferenças d-Com as variáveis de “c” fazer o pca e o analise discriminante
Produtos
Os gráficos de analises exploratório (Histograma, boxplot), pca, analise discriminante. Uma lista com os produtos de anova, pca e analise discriminante.
Respondendo a pergunta de Renata: eu acho que se uma variável não é significativa e outra sim, não tem importância para a função. Se a função vai fazer o pca e o analise discriminante com variáveis que biologicamente não tem significado, então é um critério do investigador determinar se vai tomar como certo os resultados da função. Abraços Marvin
Proposta B. - Analise do crescimento das larvas de anuros
Os anuros tem uma fase larvária, conhecido como girino. Nela ocorrem mudanças das características no tempo de desenvolvimento dos organismos. Aquelas variações são estudadas pela heterocronia. Essas variações tem impacto em a diversidade fenotípica dos organismos (Gould 1977). A função analisa a relação de diferentes variáveis quantitativas através do desenvolvimento do girino. Os dados de entrada são as medidas quantitativas em diferentes estágios de desenvolvimento (tabela, dataframe). A função compara diferentes variáveis quantitativas respeito a comprimento total do girino e comparações por médio de regressões lineais. Os produtos de saída são uma lista dos valores e gráficos das regressões lineais, nos quais reflectara a variação em a ontogenia dos organismos.
Proposta B - Crescimento dos girinos de sapos
Info:
Procurando mais informação, sobre as taxas de crescimento, eu preciso de dados temporais, mas nesta proposta eu quero comparar diferentes variáveis através do desenvolvimento do girino. Os dados são uma tabela com 8 a 10 medidas do corpo de girino através do desenvolvimento da larva.
Passos:
O analise exploratório das variáveis.
A relação entre as variáveis, com regressão lineal.
Comparação entre regressões lineais
Produtos:
Uma lista com os produtos da função (coeficientes, os valores da anova)
Os gráficos das regressões lineais.
Oi Marvin,
Se entendi bem, sua função fará uma série de lm() entre variáveis contínuas. Além disso, plotará os gráficos de dispersão e as retas das regressões.
Acho que seria legal se vc colocasse um argumento para que o usuário pudesse escolher quais as jogar comparar (ex. use apenas as colunas 3, 4 e 8 do meu conjunto de dados).
Você tem co-variáveis no seu conjunto de dados? Seria interessante se o usuário pudesse indicar a existência de co-variáveis e sua função calculasse efeitos a partir de resíduos (um pouco parecido com o exercício da iris, lembra?).
De qualquer forma, vamos esperar os comentários do Danilo, pois ele é mais expert nisso.
bjs
Rena
Proposta C - Mapeamento de variáveis discretas em topologias filogenéticas
Neste caso como eu não tenho muito conhecimento de como fazer, então não envio o procedimento. Eu acho que a informação para fornecer e uma filogenia já gerada, e uma matriz de dados que quero mapea na filogeniar. E os produtos podem ser um arvore com o mapeamento dos caracteres o variáveis discretas.
Não parece interessante investir seu tempo em aprender isso tudo pra função e acho que com as propostas A e B já dá pra gente trabalhar. Ainda assim, prefiro esperar a opinião do Danilo pra depois decidir qual proposta seguir, ok?
bjs
Rena
Função Morfometria
Página de ajuda ou help
Morfometria package:unknown R Documentation Análise da variação morfométrica ao nível intraespecífico Description: A função faz um analise da variação morfométrica de variáveis quantitativas para determinar se existem diferenças entre populações de uma especie, por meio de um analise de variância, um analise de componentes principais e um analise de função discriminante. Usage: morfometria (x, nlocs) Arguments: x Uma tabela ou dataframe com as variáveis morfométricas discriminadas por localidade. As variáveis estão nas colunas e as observações nas linhas. A primeira coluna é para as localidades, a segunda coluna é o identificador das observações e desde a terceira coluna são as variáveis morfométricas. As linhas devem estar organizadas por localidade nlocs O número de localidades. Details: A função morfometria analisa variáveis de tipo quantitativas. A função precisa dos pacotes vegan, stats e MASS, mas se ainda não tem os pacotes instalados, a função faz a instalação. Value: Os produtos são: Uma lista de: comp1 : Os valores da analise exploratório (valor mínimo, máximo, meia e desvio padrão) das variáveis e discriminadas por localidade comp2 : Os valores p para cada variável do analise de variâncias (95% de probabilidade) e as variáveis com variação significativa comp3 : A variação explicada de cada PCA ou valores Eigen comp4 : Os produtos do analise discriminante (matriz, porcentagem por localidade e porcentagem total dos acertos do modelo) Gráficos de: graf 1 : Boxplots das variáveis discriminado por localidade graf 2 : Histogramas das variáveis graf 3 : O gráfico do primer e segundo PCA graf 4 : O aporte dos PCA ao a variância explicada graf 5 : O gráfico de dispersão do FD1 e FD2 Warning: As células das variáveis quantitativas podem só conter valores numéricos, do contrario, morfometria vai gerar erro Author(s): Marvin Anganoy-Criollo marvinanganoy@gmail.com References: Jolliffe, I.T. 2002. Principal Components Analysis. Second Edition, Springer Series in Statistics, 457p. Hill, T., and P. Lewicki. 2006. Statistics: Methods and Applications, a Comprehensive Reference for Science, Industry, and Data Mining. Statsoft Inc. 832 p.
Código da função
####### Função Morfometria ####### morfometria<-function(x, nlocs) { ####1A- O analise exploratório dos dados#### #Resumo da meia, desvio padrão, mínimo e o máximo para cada variável resumo<-summary(x[,c(3:length(x))]) #Gerar objeto localidade e variáveis quantitativas localities<-x[,1] #vetor localidade vari.quant<-x[,3:length(x)] #objeto das variáveis quantitativas #A meia por localidade result.mean<-matrix(NA, nrow=nlocs, ncol=length(vari.quant[,1:length(vari.quant)])) for(i in 1:length(vari.quant)) {m<-tapply(vari.quant[,i], localities, FUN = mean) result.mean[,i]<-m } #O valor mínimo por localidade result.min<-matrix(NA, nrow=nlocs, ncol=length(vari.quant[,1:length(vari.quant)])) for(i in 1:length(vari.quant)) {mi<-tapply(vari.quant[,i], localities, FUN = min) result.min[,i]<-mi } #O valor máximo por localidade result.max<-matrix(NA, nrow=nlocs, ncol=length(vari.quant[,1:length(vari.quant)])) for(i in 1:length(vari.quant)) {ma<-tapply(vari.quant[,i], localities, FUN = max) result.max[,i]<-ma } #O desvio padrão por localidade result.sd<-matrix(NA, nrow=nlocs, ncol=length(vari.quant[,1:length(vari.quant)])) for(i in 1:length(vari.quant)) {rsd<-tapply(vari.quant[,i], localities, FUN = sd) result.sd[,i]<-rsd } ####1B- O analise de variância, Anova #### result.anv<-rep(NA, length(vari.quant)) for(i in 1:length(result.anv)) { anov.a<-lm(vari.quant[,i]~localities) sumar.a<-summary(anov.a) result.anv[i]<-sumar.a$coefficients[1,4] } #A variáveis quantitativas com diferenças significativas vari.signif<-which((vari.signif=result.anv<=0.05)) ####1C- O analise de componentes principais, PCA#### #1C.1- Conferir se os pacotes "vegan", "stat" e "MASS" estão instalados #Os pacotes são necessários para o PCA e AD paquete<- function(pacote) {is.element(pacote, installed.packages()[,1])} if(paquete("vegan")==FALSE) {install.packages("vegan") cat("\t", "O pacote vegan foi instalado!\n")} #Se o pacote vegan não é instalado, a função vai gerar uma mensagem if(paquete("vegan")==TRUE) {require ("vegan", quietly=TRUE)} if(paquete("stats")==FALSE) {install.packages("stats") cat("\t", "O pacote stats foi instalado!\n")} if(paquete("stats")==TRUE) {require ("stats", quietly=TRUE)} if(paquete("MASS")==FALSE) {install.packages("MASS") cat("\t", "O pacote MASS foi instalado!\n")} if(paquete("MASS")==TRUE) {require ("MASS", quietly=TRUE)} #1C.2- Análise de componentes principais - PCA quant.pca<-rda(vari.quant) eig.pca<-(quant.pca$CA$eig) #Os valores Eigen vari.pca<-eig.pca/(sum(eig.pca)) #O aporte ao varianca explicada por cada PCA ####1D- O Analise de função discriminante, AD #### resul.afd<-lda(localities~.,vari.quant) resul.coun<-resul.afd$counts #Número de observações por localidade resul.pred<-predict(resul.afd) #Predicto do modelo resul.tab=table(localities, resul.pred$class) #A tabela de precisão do modelo resul.diag<-diag(prop.table(resul.tab, 1)) #Porcentagem dos acertos por localidade resul.sum<-sum(diag(prop.table(resul.tab))) #Porcentagem total de acertos do modelo ADList<-list(resul.coun, resul.tab, resul.diag, resul.sum) #Gerando uma lista de dados dos produtos principais de AD names(ADList)<-c("Número de observações por localidade", "Matriz dos acertos do modelo", "Porcentagem dos acertos por localidade", "Porcentagem total do modelo") ####2- Os gráficos da função#### ##2.1- O gráficos do analise exploratório #2.1A- Os boxplots das variáveis por localidade for(i in 1:length(vari.quant)){ boxplot(vari.quant[,i]~localities, col="lightgray", xlab=names(vari.quant[i]))} #2.1B- O histograma por variável for(i in 1:length(vari.quant)){hist(vari.quant[,i], main = "", xlab = names(vari.quant[i]), ylab = "Frequência", col = "lightgray")} ##2.2- O biplot dos PCA biplot(quant.pca, scaling = "symmetric", col = c("black", "red")) ##2.3- O screeplot ou aporte dos PCA screeplot(quant.pca, type=c("lines"), col= "red", main = "", xlab = "Eixos PCA", ylab = "Variância") ##2.4- O plot dos dois primeiros vetores discriminantes LD1<-resul.pred$x[,1] LD2<-resul.pred$x[,2] plot(LD1, LD2, type="n") text(cbind(LD1,LD2), labels=unclass(localities),cex =0.8) #### Os Produtos da Função #### Resultado<-list(resumo, result.mean, result.min, result.max, result.sd, result.anv, vari.signif, vari.pca, ADList) names(Resultado)<-c("Resumo das variáveis", "A media por localidade das variáveis ", "O mínimo por localidade das variáveis", "O máximo por localidade das variáveis", "O desvio padrão por localidade das variáveis", "O valor-p da anova das variáveis", "As variáveis significativas da anova", "Valores Eigen o variação explicado dos PCA", "Lista do Analise Discriminante") return(Resultado) }
Examples: exemplo1.csv
Arquivo da função funcao_morfometria.r