
Junior Até onde sei o geoComp nao foi escrito com cuidado para eficiencia em R (até por isto não está no CRAN!!). A preocupação da autora no momento da escrita era apenas de implementar como protótipo um método desenvolvido. Portanto é muito bem vinda a sua atuação para melhorar o código! Entretanto eu nao mexeria em NADA compilado até ter certeza que rtudo que pudesse ser feito em termos de programação em R mesmo fosse implementado (manipila;ção de objetos, ordenação de operação, formas mais eficientes de efetuar operacoes) etc neste caso "o buraco é mais em cima" On Thu, 31 May 2012, Junior Beleti wrote:
Olá Benilton, tentando explicar melhor meu problema:
Faço uso de um pacote chamada geoComp. Tal pacote é utilizado de forma geral para modelar o padrão espacial de dados composicionais. Foi um trabalho da professora Ana Beatriz.
O problema está quanto ao tempo de processamento para realizar o trabalho necessário.
Analisando mais a fundo, verifiquei que o maior problema quanto a desempenho está na função "volta.cokri" desse pacote. Nessa função existe uma chamada à função "mvrnorm" e é justamente nessa chamada que ocorre o maior problema de desempenho.
Verifiquei também que na função "mvrnorm" existe uma chamada para a tal função "eigen", que se trata de um código-objeto fortran.
Inicialmente utilizei a função "mclapply" para tentar melhorar tal desempenho, mas não obtive muito sucesso. O que estava pensando quando insisti na ideia de criar a nova função no pacote base, foi o de que se chamando funções "diferentes", ou seja, criando funções idênticas cada uma com o espaço de endereçamento e nomes diferentes, poderia aumentar o desempenho.
A seguir, está um script utilizado:
require(geoComp) require(MASS) require(statmod) require(geoR) data(pivo) dados <- pivo[,c(6,7,8,1,2)] dados <- as.geoComp(dados) bor <- cbind(c(0,seq(0,200,l=100),0),c(0,sqrt(200^2-seq(0,200,l=100)^2),0)) ## bor é uma matriz 2x102 estima <- mec(dados) gr <- pred_grid(bor, by=4) md.cov.ck <- cokrigagem(estima[[1]]$Estimativas, loc=gr,dados.comp=dados) preditos.gh <- volta.quad(md.cov.ck,n.pontos=7,Variancia=FALSE) preditos.gh <- data.frame(preditos.gh) write.table(preditos.gh,"pred_by4k7ns1000MBM.txt") preditos.simu <- volta.cokri(md.cov.ck,num.simu=1000,int.conf=0.95) preditos.simu <- data.frame(preditos.simu[[1]]) preditos.simu.ic <- data.frame(preditos.simu[[2]]) write.table(preditos.simu,"predsimu_by4k7ns1000MBM.txt") write.table(preditos.simu.ic,"predsimuic_by4k7ns1000MBM.txt")
O pacote geoComp pode ser adquirido no endereço: (http://www.din.uem.br/~pg45178/geocomp/geoComp.tar.gz)
Um resumo do trabalho pode ser encontrado em: (http://www.leg.ufpr.br/lib/exe/fetch.php/pessoais:abtmartins:rbb09_2.pdf)
Obrigado pela atenção.
Carlos.