[R-br] Alteração em função de pacote (novo tópico)

Paulo Justiniano paulojus em leg.ufpr.br
Sexta Junho 1 08:11:05 BRT 2012


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.
> 
>


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