[R-br] Minimum Convex Polygon Estimator - mcp {adehabitatHR}

Augusto Ribas ribas.aca em gmail.com
Quinta Abril 28 21:00:18 BRT 2011


Ola Galera.
Bem eu estou tendo dificuldade com essa função que calcula o Minimo polígono
convexo.
Eu tinha feito uma pergunta e a Nory, o Benilton , o Walmes e o Gustavo
estavam me dando uma mão.
Mas me parece que eu fui querer ser muito economico no exemplo e não
consegui realmente resolver meu problema.
Bem vou tentar dar um exemplo melhor:
Então, eu quero calcular o Minimo polígono convexo para um data-set,
procurei no google e vi que o pacote adehabitatHR tem a função mcp que faz
isso.
Começei a ler a documentação que vi no pacote(
http://cran.r-project.org/web/packages/adehabitatHR/vignettes/adehabitatHR.pdf
).
E primeiro fui replicar o exemplo dele:

##Exemplo proposto na documentação##
library(adehabitatHR)
#coordenadas da especie 1
xy <- matrix(runif(10), ncol = 2)
#coordenadas da especie 2
xy2 <- matrix(runif(10), ncol = 2)
#juntando as 2
xyt <- rbind(xy, xy2)
xyt
#criando um id que é o nome das especies
id <- gl(2, 5)
id
#preparando um data frame
idsp <- data.frame(id)
idsp
#função coordinates que por os valores gerados ali em cima como coordenadas
no dataframe, é uma função deste pacote
coordinates(idsp) <- xyt
class(idsp)
idsp
#calculando o mcp e fazendo o plot
mcp(idsp)
plot(mcp(idsp))

Até aqui tudo bem, exatamente isso que eu queria fazer, então fui tentar com
meus dados que tenho aqui:

#Meu dados estão mais ou menos assim:
test<-matrix(c(rep(1:3,each=5),rep(4,each=4),rep(5,each=6),runif(50)),byrow=F,nrow=25)
test
test<-as.data.frame(test)
test[[1]] <- as.factor(test[[1]])
str(test)
#tentando replicar o exemplo
#criando nome das especies
id<-test[,1]
id
#preparando dataframe
idsp<-data.frame(id)
idsp
#inserindo coordenadas
coordinates(idsp)<-test[,2:3]
#tudo ok
idsp
mcp(idsp)
# At least 5 relocations are required to fit an home range
#pimba, da uma msg de erro, pois tem uma especie que tem menos de 5 locais e
nao pode se traçar o homerange dela por esse metodo
#dai veio minha necessidade de tirar ela do dataframe.
#então seguindo Benilton e Gustavo

bleh<-rle(sort(as.character(test[, 1])))
bleh<-bleh$values[bleh$lengths > 4]
test2<-test[test[, 1] %in% bleh, ]
test2
#aqui achei que era exatamente assim que tinha que se parecer o dataframe,
ai la fui eu denovo
id<-test2[,1]
id
idsp<-data.frame(id)
idsp
coordinates(idsp)<-test2[,2:3]
idsp
mcp(idsp)
#tive a mesma mensagem denovo, ai pensei que na função do cara talvez exija
o level, e tem um level la que ficou vaziu, o 4.
#então eu tirei
levels(id)
levels(test2[,1])
test2[,1]<-factor(test2[,1])
levels(test2[,1])
id<-test2[,1]
levels(id)
idsp
coordinates(idsp)<-test2[,2:3]
#ai parei aqui, não conseguir ver a diferença aqui do exemplo la em cima que
é dado documentação do pacote.
#Bem é isso





-- 
Grato
Augusto C. A. Ribas

Site Pessoal: http://augustoribas.heliohost.org/
                         http://dhost.info/augusto/
Lattes: http://lattes.cnpq.br/7355685961127056
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20110428/7fd0e963/attachment.html>


Mais detalhes sobre a lista de discussão R-br