[R-br] Diferença de resultados entre 64 e 32 bits

Rodrigo Coster rcoster em gmail.com
Terça Julho 17 12:18:32 BRT 2012


Benilton,

olha, acho muito pouco provável (até pq os 2 são windows, então acho que
nem existe essa opção). No computador aqui de casa os 2 R divergem no
resultado (o gráfico que eu mandei foi rodando no R 32 e 64 bits no mesmo
computador, Windows 7).

Abri a imagem que tu mandou e rodei o comando, deu que os 2 objetos são
iguais.


[]'s

2012/7/17 Benilton Carvalho <beniltoncarvalho em gmail.com>

> Alguma chance de algum dos computadores q vc tenha usado estar
> utilizando alguma "compilacao propria" do R ou algum esquema de
> otimizacao?
>
> Executei o seu codigo no meu computador e tudo parece OK (ie., o
> objeto 'a' eh identico entre arquiteturas)... O arquivo a seguir
> possui 2 elements: a32 e a64, resultantes do codigo q vc enviou.
>
> https://www.dropbox.com/s/srn0bhtmen4fd6u/R64x32.Rda
>
> Experimente o comando a seguir ao carregar o arquivo:
>
> all.equal(a32, a64)
>
> A unica coisa q consigo imaginar e' se alguma "otimizacao" ao compilar
> o R e qq outro acessorio utilizado nao tiver dado certo.
>
>
> b
>
>
> 2012/7/17 Rodrigo Coster <rcoster em gmail.com>:
> > Caros,
> >
> > programei uma rotina para estimar por máxima verossimilhança os
> parâmetros
> > de uma cópula e para ver se estava certo comparei os resultados com o
> > comando do pacote copula. Encontrei diferenças apenas na 5a casa decimal
> em
> > diante, que considerei como sendo por causa do método numérico
> utilizado. Só
> > que, ao fazer a mesma comparação num computador 64 bits os resultados são
> > bastante divergentes (o meu código muda o valor estimado, enquanto o
> pacote
> > copula mantem), mudando na 2a casa decimal (no caso o parâmetro é a
> > correlação, então a 2a casa decimal é bem importante). Dai me bateu a
> > seguinte dúvida: em qual confiar?
> >
> > Código:
> > require(copula)
> > require(MASS)
> > set.seed(31415)
> >
> > normCop <- function(param,data) {
> >  n <- nrow(data)
> >  if (length(param) != n) { param <- rep(param,nrow(data)) }
> >  cop <- mapply(normalCopula,param=param,MoreArgs=list(dim=2))
> >  datalist <- apply(data,1,list)
> >  for (i in 1:n) { datalist[[i]] <- datalist[[i]][[1]] }
> >  out <- -sum(log(mapply(dcopula,copula=cop,u=datalist)))
> >  if (out == Inf) { out = exp(100) }
> >  return(out)
> > }
> > a <- matrix(0,20,2)
> > n <- 100
> > Sigma <- matrix(c(10,3,3,2),2,2)
> > for (j in 1:20) {
> >  data <- mvrnorm(n=n, rep(0, 2), Sigma)
> >  data <- apply(data,2,rank)/(n+1)
> >
> >  fitNormCop <- function(data) {
> >   optim(cor(data)[2],normCop,data=data, lower = 0, upper =
> > .9999,method="L-BFGS-B")
> >  }
> >  a[j,1] <- fitNormCop(data)$par # Meu
> >  a[j,2] <- fitCopula(normalCopula(.2,2), data, method="ml")@estimate #
> > Pacote copula
> > }
> >
> > E aqui um gráfico de dispersão comparando todos:
> > http://img411.imageshack.us/img411/7527/92588280.png
> >
> >
> >
> >
> >
> >
> > []'s
> >
> > _______________________________________________
> > R-br mailing list
> > R-br em listas.c3sl.ufpr.br
> > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> > Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código
> > mínimo reproduzível.
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20120717/2a1e624b/attachment.html>


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