média em um "replicate"

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) }

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@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@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/

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

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

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

Maurício, boa tarde! Analisando apenas a parte final do seu script, temos apenas um objeto 'repeticoes' que é atualizado/mudado a cada ciclo do 'for'. Ao final da execução vai sobrar apenas o resultado da última execução. "A saída de "repeticoes" é mostrada assim: [[1]] [1] 0.11926720 -0.06925387 -0.49590355" A saída mostra que é impressa uma lista a cada rodada e para o que você precisa, devemos acumular as sucessivas saídas... Uma forma não muito pensada, mas que deve funcionar: for(i in 1:ns) { repeticoes <- replicate(1, geral(), simplify = FALSE) if (i==1) rep=unlist(repeticoes) else rep=rbind(rep,unlist(repeticoes)) } rep; colMeans(rep) Na primeira rodada o objeto 'rep' é o próprio 'repeticoes'. Nas sucessivas, agrega usando rbind(). O unlist() é pra desmontar a lista. Ao final você deverá ter um objeto 'rep' do tipo 'matrix' e então poderá usar colMeans(rep) pra ter as médias por coluna. Não testei porque também estou no R 3.0. Mas acredito que vá funcionar... Atte. Éder Comunello

Éder, Muito obrigado pela atenção. Pelo que observei aqui, isso soluciona o problema. Grato, Maurício Em 26 de outubro de 2013 16:51, Éder Comunello <comunello.eder@gmail.com>escreveu:
Maurício, boa tarde!
Analisando apenas a parte final do seu script, temos apenas um objeto 'repeticoes' que é atualizado/mudado a cada ciclo do 'for'. Ao final da execução vai sobrar apenas o resultado da última execução.
"A saída de "repeticoes" é mostrada assim: [[1]] [1] 0.11926720 -0.06925387 -0.49590355"
A saída mostra que é impressa uma lista a cada rodada e para o que você precisa, devemos acumular as sucessivas saídas...
Uma forma não muito pensada, mas que deve funcionar:
for(i in 1:ns) { repeticoes <- replicate(1, geral(), simplify = FALSE) if (i==1) rep=unlist(repeticoes) else rep=rbind(rep,unlist(repeticoes)) } rep; colMeans(rep)
Na primeira rodada o objeto 'rep' é o próprio 'repeticoes'. Nas sucessivas, agrega usando rbind(). O unlist() é pra desmontar a lista.
Ao final você deverá ter um objeto 'rep' do tipo 'matrix' e então poderá usar colMeans(rep) pra ter as médias por coluna.
Não testei porque também estou no R 3.0. Mas acredito que vá funcionar...
Atte.
Éder Comunello
_______________________________________________ R-br mailing list R-br@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.
participantes (4)
-
Manoel Galdino
-
Maurício Lordêlo
-
Rodrigo Coster
-
Éder Comunello