O R é um programa livre multiplataforma para análises estatísticas que pode ser baixado em seu site ou adicionado na lista de repositórios de máquinas linux. Suas possibilidades de aplicação em diversas áreas são praticamente ilimitadas.
Neste blog postarei o resultado de minha experiência em sua utilização nas áreas de dinâmica de populações de peixes, ciência pesqueira e ecologia.
As postagens deste blog se destina, além de mim mesmo, a iniciantes no R e alunos da minha área de atuação.
Aprendi muito em livros e nas listas de discussão R-help e a R_STAT, mas ainda tenho muito pela frente. Agradeço desde já qualquer contribuição.

domingo, 25 de março de 2012

Amostrar linhas em um data.frame

Algumas vezes necessitamos obter um subconjunto de um conjunto de dados. Se pudermos estabelecer um critério a partir dos valores deste conjunto de dados podemos utilizar o comando subset. Para obter uma amostra aleatória das linhas pensei na seguinte solução:

# cria um conjuto de dados com duas colunas e 500 linhas
dados <- data.frame(rnorm(500,5,3),rnorm(500,10,6))
dim(dados)
summary(dados)

# faz a amostra de 100 linhas sem reposição
dados.amostra<-dados[sample(1:nrow(dados),100,replace=F),]
dim(dados.amostra)
summary(dados.amostra)


sábado, 3 de março de 2012

Identificando grupos em um dendrograma

As técnicas de agrupamento (cluster analysis) são muito úteis para organizar, ou classificar, dados observados em estruturas de fácil interpretação. Uma ótima referência é o livro Numerical Ecology with R (Boccard et al. 2011). O tuturial do pacote vegan (clique aqui) também trás explicações e exemplos interessantes.
Os dendrogramas são como mobiles, seus grupos são sempre os mesmos, mas podem mudar de posição. O grupo 1 não é necessariamente o primeiro à esquerda, nem o grupo 2 vem a seguir. Isto pode complicar na hora de interpretar os fatores relacionados na formação dos grupos. Um bom exemplo está na página 38 do tutorial do vegan. Temos a figura de um dendrograma seguida de um boxplot. Se não prestarmos atenção poderemos ser levados a crer, por exemplo, que o grupo 2, onde encontramos a maior mediada é formado pelos objetos 1, 2, 10, 5, 6 e 7. No entanto, este conjunto de objetos forma o grupo 1, como veremos a seguir, que tem a menor mediana. A interpretação do dendrograma poder ser facilitada se o número do grupo puder ser visualizado em conjunto. Vamos ao exemplo do tutorial

# carrega a biblioteca e os dados
library(vegan)
data(dune)

# calcula a matriz de distância, as ligações, plota o dendrograma e identifica os grupos
dis <- vegdist(dune)
cluc <- hclust(dis, "complete")
plot(cluc)
rect.hclust(cluc, 3)

# verifica que objetos foram classificados em cada grupo
grp<-cutree(cluc, 3)
grp

# substitui no dendrograma o nome do objeto pelo número do grupo
plot(cluc, labels = as.character(grp))

# desenha no dendrograma os retângulos de cada grupo e os numera
# agradeço a dica de Elias T. Krainski (lista R-Br)
plot(cluc)
r <- rect.hclust(cluc, 3)
text(cumsum(sapply(r,length)),
     rep(mean(tail(unique(cluc$hei),2)), length(r)),
     paste(unique(grp[cluc$ord])))

Agora fica mais fácil relacionar o dendrograma ao boxplot no tutorial do vegan.