Converter dados de contagem em binomial

Caros Membros, Estou tentando converter dados de contagem de insetos mortos em notação binomial e estou fazendo algo errado, pois se tenho: trat<-gl(5,10) ## 5 tratamentos com dez repetições tempo<- gl(10,50) ## 10 avaliações no tempo dados<-expand.grid(trat, tempo) colnames(dados)<-c("trat","tempo") y<-rpois(length(dados[,1]),10) ## Simula a variável resposta dados<-cbind(dados,y) ## Converter os dados de contagem em binomial, por ex. se tenho 5, devo converter em 1 1 1 1 1 dados.bin <- NULL for (i in 1:nrow(dados)) dados.bin <- c(dados.bin, rep(c(1,dados[i,3]))) Por que para cada valor de contagem na coluna dados[,3] não tenho a transformação que espero? Obrigado, -- ====================================================================== Alexandre dos Santos Proteção Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br Lattes: http://lattes.cnpq.br/1360403201088680 ======================================================================

Pq tu ta usando c() e não rbind()... c() transforma tudo em vetor. Pelo que eu entendi, o que tu quer é isso: dados.bin <- dados[rep(1:nrow(dados), times=dados$y), -3] 2013/12/10 ASANTOS <alexandresantosbr@yahoo.com.br>
Caros Membros,
Estou tentando converter dados de contagem de insetos mortos em notação binomial e estou fazendo algo errado, pois se tenho:
trat<-gl(5,10) ## 5 tratamentos com dez repetições
tempo<- gl(10,50) ## 10 avaliações no tempo
dados<-expand.grid(trat, tempo)
colnames(dados)<-c("trat","tempo")
y<-rpois(length(dados[,1]),10) ## Simula a variável resposta
dados<-cbind(dados,y)
## Converter os dados de contagem em binomial, por ex. se tenho 5, devo converter em 1 1 1 1 1
dados.bin <- NULL for (i in 1:nrow(dados)) dados.bin <- c(dados.bin, rep(c(1,dados[i,3])))
Por que para cada valor de contagem na coluna dados[,3] não tenho a transformação que espero?
Obrigado,
-- ====================================================================== Alexandre dos Santos Proteção Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br Lattes: http://lattes.cnpq.br/1360403201088680 ======================================================================
_______________________________________________ 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, Na verdade a concatenação (c()) foi um deslize, mas eu queria fazer: dados.bin <- dados[rep(1:nrow(dados), times=dados$y), -3] censor<-rep(1,length(dados.bin[,1])) dados.final<- cbind(dados.bin,censor) Só que tenho n.indv<-100 - Número de indivíduos por tratamentos - e agora preciso adicionar uma repetição de zeros no objeto censor equivalente a n.indv que restaram vivos (n.indv - soma de mortos por tratamento) , mas de maneira mais automatizada que a que venho fazendo, teria alguma sugestão? Obrigado, -- ====================================================================== Alexandre dos Santos Proteção Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br Lattes: http://lattes.cnpq.br/1360403201088680 ====================================================================== Em 10/12/2013 09:43, Rodrigo Coster escreveu:
Pq tu ta usando c() e não rbind()... c() transforma tudo em vetor.
Pelo que eu entendi, o que tu quer é isso:
dados.bin <- dados[rep(1:nrow(dados), times=dados$y), -3]
2013/12/10 ASANTOS <alexandresantosbr@yahoo.com.br <mailto:alexandresantosbr@yahoo.com.br>>
Caros Membros,
Estou tentando converter dados de contagem de insetos mortos em notação binomial e estou fazendo algo errado, pois se tenho:
trat<-gl(5,10) ## 5 tratamentos com dez repetições
tempo<- gl(10,50) ## 10 avaliações no tempo
dados<-expand.grid(trat, tempo)
colnames(dados)<-c("trat","tempo")
y<-rpois(length(dados[,1]),10) ## Simula a variável resposta
dados<-cbind(dados,y)
## Converter os dados de contagem em binomial, por ex. se tenho 5, devo converter em 1 1 1 1 1
dados.bin <- NULL for (i in 1:nrow(dados)) dados.bin <- c(dados.bin, rep(c(1,dados[i,3])))
Por que para cada valor de contagem na coluna dados[,3] não tenho a transformação que espero?
Obrigado,
-- ====================================================================== Alexandre dos Santos Proteção Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 <tel:%28%2B55%29%2065%208132-8112> (TIM) (+55) 65 9686-6970 <tel:%28%2B55%29%2065%209686-6970> (VIVO) e-mails:alexandresantosbr@yahoo.com.br <mailto:e-mails%3Aalexandresantosbr@yahoo.com.br> alexandre.santos@cas.ifmt.edu.br <mailto:alexandre.santos@cas.ifmt.edu.br> Lattes: http://lattes.cnpq.br/1360403201088680 ======================================================================
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br <mailto: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.

Acredito que o jeito mais simples seja assim dados <- expand.grid(trat=gl(3,4), tempo=1:5) dados$y <- rpois(nrow(dados), lambda=10) dados$z <- 1 dados2 <- dados[rep(1:nrow(dados), dados$y),] xtabs(y~trat+tempo, data=dados) xtabs(z~trat+tempo, data=dados2) À disposição. Walmes.

Walmes, Perfeito, mas agora preciso achar um jeito para registrar os indivíduos que permanecem vivos no último tempo, através da declaração do número de indivíduos (tot) por tratamento, sendo: dados <- expand.grid(trat=gl(3,4), tempo=1:5) dados$y <- rpois(nrow(dados), lambda=10) dados$z <- 1 dados2 <- dados[rep(1:nrow(dados), dados$y),] xtabs(y~trat+tempo, data=dados) xtabs(z~trat+tempo, data=dados2) tot.dead<-with(dados2, tapply(z, list(trat), sum, na.rm = T)) tot<-212 ### Número de insetos por tratamento dif<-tot-tot.dead dif # 1 2 3 10 36 9 Essa diferença (dif) precisa ser representada por zeros no max(tempo) e fundido a variável z no objeto dados2, com isso consigo criar a variável reposta para realizar análises de sobrevivência, como eu poderia fazer isto? Tenho tentado criar um rep(0, dif[,i]) no max(dados2$tempo), mas sem sucesso, Obrigado, Em 10/12/2013 13:33, walmes . escreveu:
Acredito que o jeito mais simples seja assim
dados <- expand.grid(trat=gl(3,4), tempo=1:5) dados$y <- rpois(nrow(dados), lambda=10) dados$z <- 1
dados2 <- dados[rep(1:nrow(dados), dados$y),]
xtabs(y~trat+tempo, data=dados) xtabs(z~trat+tempo, data=dados2)
À disposição. Walmes.
_______________________________________________ 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.
-- ====================================================================== Alexandre dos Santos Proteção Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br Lattes: http://lattes.cnpq.br/1360403201088680 ======================================================================

Eu não sei exatamente porque você precisa dos dados dessa maneira, mas se é para correr um glm() binomial, basta que você tenha um vetor com o número de mortos e outro com o número de vivos. Não precisar estar em binário {0,1} não. tot <- 212 da <- expand.grid(trat=gl(3,4), tempo=1:5) da$y <- rbinom(nrow(da), size=212, prob=0.5) m0 <- glm(cbind(yes=y, no=212-y)~trat*tempo, da, family=binomial) summary(m0) Agora eu tive a impressão pelo seu texto de que você observa os insetos mortos em intervalos de tempo na mesma unidade experimental. Dessa maneira, no tempo i+1 jamais terá menos insetos mortos que o tempo i. As observações são tomadas na mesma unidade experimental. Esse experimento não pode deve analisado como um glm() com n=212 para todas as observações. Um caso exatamente igual ao seu experimento (se eu estiver correto) é o de índice de germinação de sementes. Por exemplo, 100 sementes são semeadas e a cada dia observa-se o número de germinadas. No dia 1 você tem n=100, se nasceram 5, para o dia 2 deve usar n=95 e não n=100. Em outras palavras, a cada acesso no tempo você tem uma binomial cujo n é o n-y do tempo anterior, ou seja, n[i+1] = n[i]-y[i], em que y[i] é o número de germinadas no tempo i. Os artigos da área aplicada fazem análise sem considerar esse importante fato (considerar n=100 para todos os tempos) é isso pode comprometer as conclusões. Outra forma de analisar os mesmos dados é ao invés de considerar o número germinadas no tempo i, é considerar o tempo necessário para germinar. Ambas análises (glm e sobrevivência) vão fornecer praticamente o mesmo resultado que do meu ponto de vista é saber qual o número esperado para quantidade de sementes germinadas em cada instante i. No glm você modela o p e multiplica por n para ter o número esperado de sementes em cada i. Na sobrevivência você ajusta o modelo e partir do ajuste obtém os quantis que dão a proporção de indivíduos que germinam à cada tempo. Eu confesso que sou curioso para comparar às duas abordagens. Será que os seus dados não servem para isso? À disposição. Walmes.

Por sinal, pegando "carona" na última colocação do Walmes, acho que a abordagem de análise de sobrevivência (que neste caso "sobrevivência" passa a ser o antônimo de germinação, mas vamos pensar que ainda assim seria uma metáfora), seria mais intuitiva para o tempo de germinação. Meus 0,0199999.... -- Cesar Rabak 2013/12/10 walmes . <walmeszeviani@gmail.com>
Eu não sei exatamente porque você precisa dos dados dessa maneira, mas se é para correr um glm() binomial, basta que você tenha um vetor com o número de mortos e outro com o número de vivos. Não precisar estar em binário {0,1} não.
tot <- 212 da <- expand.grid(trat=gl(3,4), tempo=1:5) da$y <- rbinom(nrow(da), size=212, prob=0.5)
m0 <- glm(cbind(yes=y, no=212-y)~trat*tempo, da, family=binomial) summary(m0)
Agora eu tive a impressão pelo seu texto de que você observa os insetos mortos em intervalos de tempo na mesma unidade experimental. Dessa maneira, no tempo i+1 jamais terá menos insetos mortos que o tempo i. As observações são tomadas na mesma unidade experimental. Esse experimento não pode deve analisado como um glm() com n=212 para todas as observações. Um caso exatamente igual ao seu experimento (se eu estiver correto) é o de índice de germinação de sementes. Por exemplo, 100 sementes são semeadas e a cada dia observa-se o número de germinadas. No dia 1 você tem n=100, se nasceram 5, para o dia 2 deve usar n=95 e não n=100. Em outras palavras, a cada acesso no tempo você tem uma binomial cujo n é o n-y do tempo anterior, ou seja, n[i+1] = n[i]-y[i], em que y[i] é o número de germinadas no tempo i. Os artigos da área aplicada fazem análise sem considerar esse importante fato (considerar n=100 para todos os tempos) é isso pode comprometer as conclusões.
Outra forma de analisar os mesmos dados é ao invés de considerar o número germinadas no tempo i, é considerar o tempo necessário para germinar. Ambas análises (glm e sobrevivência) vão fornecer praticamente o mesmo resultado que do meu ponto de vista é saber qual o número esperado para quantidade de sementes germinadas em cada instante i. No glm você modela o p e multiplica por n para ter o número esperado de sementes em cada i. Na sobrevivência você ajusta o modelo e partir do ajuste obtém os quantis que dão a proporção de indivíduos que germinam à cada tempo. Eu confesso que sou curioso para comparar às duas abordagens. Será que os seus dados não servem para isso?
À disposição. Walmes.
_______________________________________________ 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.

Walmes, Solicitei desta maneira porque eu achava que em análises de sobrevivência, como no meu caso que utilizo o modelo de Weibull com a função survreg() do pacote survival, fosse necessário informar o número de indivíduos vivos (zeros) ao final do tempo experimental para se efetuar os ajustes e se ter um correto número de graus de liberdade. E você tem razão sim, avalio a mesma unidade experimental em determinados intervalos no tempo, como no exemplo postado abaixo, tenho 200 formigas em 2 tratamentos (100 formigas por tratamento - T1 e T2) e acompanhei a mortalidade durante 17 dias a cada 24 horas e acho que se encaixam na questão levanta por você, segue CRM: #------------------------------------------------------------------------------- # Download dos dados no dropbox links <- c( "https://www.dropbox.com/s/adawrlwws1ro7te/mortalidadeAtta3.txt") tokens <- gsub("^.*/s/","",dirname(links)) fileNames <- basename(links) newLinks <- file.path("http://dl.dropbox.com/s", tokens, fileNames); newLinks for (a in newLinks) { tryCatch(download.file(a, dest=basename(a), mode='wb'), error=function(...) print("Falha no download!"))} # Leitura dos dados -------------------------------------------------------- dados<-read.table("mortalidadeAtta3.txt", h=T) # Converte para notação binomial ------------------------------------ dados$z<-1 dados2 <- dados[rep(1:nrow(dados), dados$mort),] # Ajuste GLM binomial ----------------------------------------------------- m0 <- glm(cbind(yes=mort, no=100-mort)~trat*tempo, dados, family=binomial) summary(m0) # Ajuste análise de sobrevivência de Weibull ----------------------- require(survival) m1<-survreg(Surv(dados$tempo,dados$z)~dados$trat) summary(m1) #END --------------------------------------------------------------------------- Abraço, -- ====================================================================== Alexandre dos Santos Proteção Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br Lattes: http://lattes.cnpq.br/1360403201088680 ====================================================================== Em 10/12/2013 16:20, walmes . escreveu:
Eu não sei exatamente porque você precisa dos dados dessa maneira, mas se é para correr um glm() binomial, basta que você tenha um vetor com o número de mortos e outro com o número de vivos. Não precisar estar em binário {0,1} não.
tot <- 212 da <- expand.grid(trat=gl(3,4), tempo=1:5) da$y <- rbinom(nrow(da), size=212, prob=0.5)
m0 <- glm(cbind(yes=y, no=212-y)~trat*tempo, da, family=binomial) summary(m0)
Agora eu tive a impressão pelo seu texto de que você observa os insetos mortos em intervalos de tempo na mesma unidade experimental. Dessa maneira, no tempo i+1 jamais terá menos insetos mortos que o tempo i. As observações são tomadas na mesma unidade experimental. Esse experimento não pode deve analisado como um glm() com n=212 para todas as observações. Um caso exatamente igual ao seu experimento (se eu estiver correto) é o de índice de germinação de sementes. Por exemplo, 100 sementes são semeadas e a cada dia observa-se o número de germinadas. No dia 1 você tem n=100, se nasceram 5, para o dia 2 deve usar n=95 e não n=100. Em outras palavras, a cada acesso no tempo você tem uma binomial cujo n é o n-y do tempo anterior, ou seja, n[i+1] = n[i]-y[i], em que y[i] é o número de germinadas no tempo i. Os artigos da área aplicada fazem análise sem considerar esse importante fato (considerar n=100 para todos os tempos) é isso pode comprometer as conclusões.
Outra forma de analisar os mesmos dados é ao invés de considerar o número germinadas no tempo i, é considerar o tempo necessário para germinar. Ambas análises (glm e sobrevivência) vão fornecer praticamente o mesmo resultado que do meu ponto de vista é saber qual o número esperado para quantidade de sementes germinadas em cada instante i. No glm você modela o p e multiplica por n para ter o número esperado de sementes em cada i. Na sobrevivência você ajusta o modelo e partir do ajuste obtém os quantis que dão a proporção de indivíduos que germinam à cada tempo. Eu confesso que sou curioso para comparar às duas abordagens. Será que os seus dados não servem para isso?
À disposição. Walmes.
_______________________________________________ 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)
-
ASANTOS
-
Cesar Rabak
-
Rodrigo Coster
-
walmes .