[R-br] média em um "replicate"

Maurício Lordêlo mslordelo em gmail.com
Sábado Outubro 26 11:55:02 BRST 2013


Obrigado Rodrigo.
A função bild apresenta um problema ao inserir efeito aleatório no modelo,.
Segundo o help, faz-se necessário modificar limites de integração para
verossimilhança e gradiente em cada banco de dados.
Para um número de simulações pequeno, ele solta a seguinte mensagem
Mensagens de aviso:
In sqrt(prob * (1 - prob)) : NaNs produzidos
mas emite os resultados.
Quando uso um número de simulações é muito grande(que é o que preciso), sai
seguinte mensagem
Erro em solve.default(Info) :
  sistema é computacionalmente singular: condição recíproca número =
3.18165e-19
e os resultado não são emitidos.
Isto porque eu teria que modificar os limites para cada uma das respostas
geradas. E isto é inviável.
A ideia do "replicate" dentro do "for" foi o que surgiu como alternativa
para que a função geral() (que extrai os coeficientes) seja rodada uma vez
e cada resultado seja armazenado em um objeto para que, por fim, seja
obtida uma média.
Entendo que esta opção não é a forma prática, mas foi o que eu pensei como
alternativa para fugir deste problema. Qualquer outra sugestão será muito
bem vinda.
Grato,
Maurício


Em 26 de outubro de 2013 10:08, Rodrigo Coster <rcoster em gmail.com> escreveu:

> replicate() dentro do for não faz sentido, ou tu usa ou outro (nesse
> caso). Note que tu ta mandando repetir uma vez (o 1o parametro do
> replicate) para cada iteração do for, e sobrescrevendo o resultado...
>
>
> Tente (não testei, mas deve funcionar):
> repeticoes <- replicate(ns, geral())
> colMeans(repeticoes)
>
>
> 2013/10/26 Maurício Lordêlo <mslordelo em gmail.com>
>
>> Obrigado pela atenção Manoel. Quanto a instalação do pacote, o mesmo foi
>> desenvolvido para versões >= 2.10.0.
>> Fiz o que recomendou mas
>> Erro em colMeans(repeticoes, na.rm = TRUE) :
>>   'x' deve ser um array de pelo menos duas dimensões
>>
>> A saída de "repeticoes" é mostrada assim:
>> [[1]]
>> [1]  0.11926720 -0.06925387 -0.49590355
>>
>> [[1]]
>> [1] -0.1505574 -0.2059867  0.6151096
>>
>> [[1]]
>> [1] -0.2860369 -0.1084762 -0.1997825
>>
>> [[1]]
>> [1]  0.4159422 -0.9583708 -0.4319101
>>
>> [[1]]
>> [1]  0.3784151 -0.4214649 -0.1431581
>>
>>
>> Fiz
>> as.array(repeticoes)
>> e ele me retorna apenas a última linha do objeto "repeticoes".
>> [[1]]
>> [1]  0.3784151 -0.4214649 -0.1431581
>> Tentei também
>> coefs=do.call(rbind, repeticoes)
>> media_coefs=apply(coefs, 2, mean)
>> media_coefs
>> [1]  0.3784151 -0.4214649 -0.1431581
>> Que também retorna a última linha.
>> Maurício
>>
>>
>>
>> Em 26 de outubro de 2013 08:12, Manoel Galdino <mcz.fea em gmail.com>escreveu:
>>
>> Eu não consegui instalar a biblioteca build no R 3.0
>>>
>>> De todo modo, pelo que entendi, colMeans não resolve seu problema?
>>>
>>> M
>>>
>>>
>>> 2013/10/26 Maurício Lordêlo <mslordelo em gmail.com>
>>>
>>>>  Caros,
>>>> Devido a um problema com a  função "bild" (pertencente ao pacote de
>>>> mesmo nome), tive que modificar um script de simulação e não estou
>>>> conseguindo finalizá-lo.
>>>> No CRM abaixo, a função "geral" ajusta o modelo e extrai os
>>>> coeficientes de interesse. Em seguida, coloco um "for" com o número de
>>>> simulações que desejo (coloquei 5 mas pretendo 2000). Ao usar o "replicate"
>>>> obtenho os resultados. Preciso obter uma média por coluna destes
>>>> resultados. Pelo que percebi, o objeto que denominei de  "repeticoes"
>>>> armazena um objeto em cada uma de suas linhas. Alguém saberia uma forma de
>>>> solucionar isso, ou seja, encontrar uma média por coluna do objeto
>>>> "repeticoes"? Caso não seja esta a opção adequada, aceito sugestões.
>>>> Agradeço desde já.
>>>>
>>>>
>>>> library(bild)
>>>> nt <- 8; ntr <- 3 ; nr <- 5
>>>> n <- ntr*nr*nt; nid <- ntr * nr
>>>> id <- rep(1:nid, each = nt)
>>>> tempo <- rep(1:nt, times = nid)
>>>> trat <- rep(factor(LETTERS[0:ntr]), each = nr*nt)
>>>>
>>>> dados=data.frame(id,tempo,trat)
>>>>
>>>> geral <- function()
>>>> {
>>>>   z <- numeric(n)
>>>>   for(i in 1:n)
>>>>   z[i] <- rbinom(1,1,0.5)
>>>>   dat <- data.frame(dados, y=z)
>>>>   (bild(y ~ trat+tempo, data = dat,
>>>> time="tempo",start=NULL,dependence="MC1R"))@coefficients[1:3]
>>>> }
>>>>
>>>> ns=5  ### número de simulações
>>>> for(i in 1:ns)
>>>> {
>>>> repeticoes <- replicate(1, geral(), simplify = FALSE)
>>>> print(repeticoes)
>>>> }
>>>>
>>>>
>>>> _______________________________________________
>>>> 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.
>>>>
>>>
>>>
>>>
>>> --
>>> Manoel Galdino
>>> https://sites.google.com/site/galdinomcz/
>>>
>>> _______________________________________________
>>> 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.
>>
>
>
> _______________________________________________
> 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/20131026/25503653/attachment.html>


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