Modelo Linear Generalizado

Caro Colegas, Boa noite. Estou fazendo uma análise de dados de contagem de nematóides móveis e imóveis sob efeito de 9 tratamentos em um modelo linear generalizado com distribuição binomial. Estou com duvida se estou usando o modelo corretamente e porque os coeficientes relacionados ao tratamentos B T-12 e B T-24 não foram significativos. Algum colega poderia me ajudar? Obrigado. *CMR* sub_data <- structure(list(tratamento = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L, 7L, 7L, 7L, 7L, 7L, 7L, 8L, 8L, 8L, 8L, 8L, 8L, 9L, 9L, 9L, 9L, 9L, 9L ), .Label = c("A", "B", "B T-0", "B T-1", "B T-2", "B T-3", "B T-6", "B T-12", "B T-24"), class = "factor"), repeticao = c(1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L, 5L, 5L, 5L, 5L, 5L, 5L, 1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L), moveis = c(20L, 11L, 20L, 15L, 20L, 20L, 18L, 20L, 20L, 20L, 20L, 20L, 16L, 20L, 20L, 20L, 14L, 21L, 5L, 5L, 6L, 4L, 5L, 5L, 8L, 6L, 7L, 5L, 6L, 5L, 2L, 1L, 1L, 3L, 2L, 2L, 0L, 1L, 3L, 1L, 0L, 3L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), imoveis = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 4L, 5L, 5L, 5L, 4L, 5L, 16L, 15L, 14L, 21L, 20L, 21L, 13L, 14L, 13L, 14L, 14L, 14L, 28L, 19L, 32L, 18L, 26L, 26L, 33L, 29L, 24L, 28L, 21L, 22L, 22L, 20L, 20L, 20L, 20L, 10L, 20L, 12L, 16L, 18L, 13L, 20L)), .Names = c("tratamento", "repeticao", "moveis", "imoveis"), class = "data.frame", row.names = c(NA, 54L)) glm_out <- glm(cbind(imoveis, moveis) ~ tratamento -1, family=binomial, data = sub_data) summary(glm_out) -- Alisson Lucrecio da Costa

O fato de não serem significativos não é problema. Tem que ter em mente que parametrização você usou e as hipóteses decorrentes. Nessa parametrização de estimativas por cela (~trat-1), quando um trat tem estimativa 0, significa que a prob de mobilidade é 0.5. Então esse teste de hipótese, apesar de feito e retornado, não traz nada de interessante na maioria dos casos. Eu considero que os interesses sejam sobre as diferenças entre trat e não se eles tem ou não prob=0.5. Vamos agora aos potenciais problemas. Os níveis A, B, B-12 e B-24 tem probabilidades amostrais nas bordas, ou seja, 0 e 1. Na binomial, o espaço de p é (0, 1), ou seja, não os incluem. No glm, tais valores são obtidos no limite, quando \eta = X\beta vai para -\infty ou \infty, o p aproxima de 0 ou 1. Aplique o inverso da função de ligação em -23 e verá que isso é zero. Pelo sufixo que usou nos tratamentos, isso tem cara avaliação no tempo, com algumas testemunhas (sem sufixo), como é de costume em muitos experimentos. Uma solução, seria ajustar a curva para usando de T-0 à T-12. As testemunhas ficam de fora. Obtenha para elas o IC por perfil de verossimilhança, pois, embora o limite inferir e estimativa sejam 0, o limite superior será algo >0 (inverta o raciocínio para a outra borda). ## Estimativa zero implica em prob=0.5. glm_out$family$linkinv(0) glm_out$family$linkinv(-23) sub_data$tem <- as.numeric(gsub(x=sub_data$tratamento, "\\D", "")) db <- subset(sub_data, !is.na(tem)) xyplot(imoveis/(moveis+imoveis)~sqrt(tem), data=db, jitter.x=TRUE) m0 <- glm(cbind(imoveis, moveis) ~ sqrt(tem), family=binomial, data=db) summary(m0) pred <- data.frame(tem=seq(0, 24, length.out=30)) pred$p <- predict(m0, newdata=pred, type="response") xyplot(imoveis/(moveis+imoveis)~sqrt(tem), data=db, jitter.x=TRUE, ylim=c(0, NA))+ as.layer(xyplot(p~sqrt(tem), data=pred, type="l")) À disposição. Walmes.

Não consegui esta função! Eu usei a biblioteca lattice para o xyplot, rodou o primeiro mas este não rodou porque não reconhece o as.layer xyplot(imoveis/(moveis+imoveis)~sqrt(tem), data=db, jitter.x=TRUE, ylim=c(0, NA))+ as.layer(xyplot(p~sqrt(tem), data=pred, type="l")) O fato de não serem significativos não é problema. Tem que ter em mente que parametrização você usou e as hipóteses decorrentes. Nessa parametrização de estimativas por cela (~trat-1), quando um trat tem estimativa 0, significa que a prob de mobilidade é 0.5. Então esse teste de hipótese, apesar de feito e retornado, não traz nada de interessante na maioria dos casos. Eu considero que os interesses sejam sobre as diferenças entre trat e não se eles tem ou não prob=0.5. Vamos agora aos potenciais problemas. Os níveis A, B, B-12 e B-24 tem probabilidades amostrais nas bordas, ou seja, 0 e 1. Na binomial, o espaço de p é (0, 1), ou seja, não os incluem. No glm, tais valores são obtidos no limite, quando \eta = X\beta vai para -\infty ou \infty, o p aproxima de 0 ou 1. Aplique o inverso da função de ligação em -23 e verá que isso é zero. Pelo sufixo que usou nos tratamentos, isso tem cara avaliação no tempo, com algumas testemunhas (sem sufixo), como é de costume em muitos experimentos. Uma solução, seria ajustar a curva para usando de T-0 à T-12. As testemunhas ficam de fora. Obtenha para elas o IC por perfil de verossimilhança, pois, embora o limite inferir e estimativa sejam 0, o limite superior será algo >0 (inverta o raciocínio para a outra borda). ## Estimativa zero implica em prob=0.5. glm_out$family$linkinv(0) glm_out$family$linkinv(-23) sub_data$tem <- as.numeric(gsub(x=sub_data$tratamento, "\\D", "")) db <- subset(sub_data, !is.na(tem)) xyplot(imoveis/(moveis+imoveis)~sqrt(tem), data=db, jitter.x=TRUE) m0 <- glm(cbind(imoveis, moveis) ~ sqrt(tem), family=binomial, data=db) summary(m0) pred <- data.frame(tem=seq(0, 24, length.out=30)) pred$p <- predict(m0, newdata=pred, type="response") xyplot(imoveis/(moveis+imoveis)~sqrt(tem), data=db, jitter.x=TRUE, ylim=c(0, NA))+ as.layer(xyplot(p~sqrt(tem), data=pred, type="l")) À disposição. Walmes. --- Este email foi escaneado pelo Avast antivírus. https://www.avast.com/antivirus

Use latticeExtra <http://127.0.0.1:19735/library/latticeExtra/html/as.layer.html> Em 5 de outubro de 2015 21:07, Mauro Sznelwar <sznelwar@uol.com.br> escreveu:
Não consegui esta função! Eu usei a biblioteca lattice para o xyplot, rodou o primeiro mas este não rodou porque não reconhece o as.layer
xyplot(imoveis/(moveis+imoveis)~sqrt(tem), data=db, jitter.x=TRUE, ylim=c(0, NA))+ as.layer(xyplot(p~sqrt(tem), data=pred, type="l"))
O fato de não serem significativos não é problema. Tem que ter em mente que parametrização você usou e as hipóteses decorrentes. Nessa parametrização de estimativas por cela (~trat-1), quando um trat tem estimativa 0, significa que a prob de mobilidade é 0.5. Então esse teste de hipótese, apesar de feito e retornado, não traz nada de interessante na maioria dos casos. Eu considero que os interesses sejam sobre as diferenças entre trat e não se eles tem ou não prob=0.5.
Vamos agora aos potenciais problemas. Os níveis A, B, B-12 e B-24 tem probabilidades amostrais nas bordas, ou seja, 0 e 1. Na binomial, o espaço de p é (0, 1), ou seja, não os incluem. No glm, tais valores são obtidos no limite, quando \eta = X\beta vai para -\infty ou \infty, o p aproxima de 0 ou 1. Aplique o inverso da função de ligação em -23 e verá que isso é zero. Pelo sufixo que usou nos tratamentos, isso tem cara avaliação no tempo, com algumas testemunhas (sem sufixo), como é de costume em muitos experimentos. Uma solução, seria ajustar a curva para usando de T-0 à T-12. As testemunhas ficam de fora. Obtenha para elas o IC por perfil de verossimilhança, pois, embora o limite inferir e estimativa sejam 0, o limite superior será algo >0 (inverta o raciocínio para a outra borda).
## Estimativa zero implica em prob=0.5. glm_out$family$linkinv(0) glm_out$family$linkinv(-23)
sub_data$tem <- as.numeric(gsub(x=sub_data$tratamento, "\\D", ""))
db <- subset(sub_data, !is.na(tem))
xyplot(imoveis/(moveis+imoveis)~sqrt(tem), data=db, jitter.x=TRUE)
m0 <- glm(cbind(imoveis, moveis) ~ sqrt(tem), family=binomial, data=db) summary(m0)
pred <- data.frame(tem=seq(0, 24, length.out=30))
pred$p <- predict(m0, newdata=pred, type="response")
xyplot(imoveis/(moveis+imoveis)~sqrt(tem), data=db, jitter.x=TRUE, ylim=c(0, NA))+ as.layer(xyplot(p~sqrt(tem), data=pred, type="l"))
À disposição.
Walmes.
------------------------------ [image: Avast logo] <https://www.avast.com/antivirus>
Este email foi escaneado pelo Avast antivírus. www.avast.com <https://www.avast.com/antivirus>
_______________________________________________ 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.

Mauro, A função as.layer esta no pacote latticeExtra. Tive que usar o biocLite para instalar o pacote. source("http://bioconductor.org/biocLite.R") biocLite("latticeExtra") Att., Alisson 2015-10-05 21:07 GMT-03:00 Mauro Sznelwar <sznelwar@uol.com.br>:
Não consegui esta função! Eu usei a biblioteca lattice para o xyplot, rodou o primeiro mas este não rodou porque não reconhece o as.layer
xyplot(imoveis/(moveis+imoveis)~sqrt(tem), data=db, jitter.x=TRUE, ylim=c(0, NA))+ as.layer(xyplot(p~sqrt(tem), data=pred, type="l"))
O fato de não serem significativos não é problema. Tem que ter em mente que parametrização você usou e as hipóteses decorrentes. Nessa parametrização de estimativas por cela (~trat-1), quando um trat tem estimativa 0, significa que a prob de mobilidade é 0.5. Então esse teste de hipótese, apesar de feito e retornado, não traz nada de interessante na maioria dos casos. Eu considero que os interesses sejam sobre as diferenças entre trat e não se eles tem ou não prob=0.5.
Vamos agora aos potenciais problemas. Os níveis A, B, B-12 e B-24 tem probabilidades amostrais nas bordas, ou seja, 0 e 1. Na binomial, o espaço de p é (0, 1), ou seja, não os incluem. No glm, tais valores são obtidos no limite, quando \eta = X\beta vai para -\infty ou \infty, o p aproxima de 0 ou 1. Aplique o inverso da função de ligação em -23 e verá que isso é zero. Pelo sufixo que usou nos tratamentos, isso tem cara avaliação no tempo, com algumas testemunhas (sem sufixo), como é de costume em muitos experimentos. Uma solução, seria ajustar a curva para usando de T-0 à T-12. As testemunhas ficam de fora. Obtenha para elas o IC por perfil de verossimilhança, pois, embora o limite inferir e estimativa sejam 0, o limite superior será algo >0 (inverta o raciocínio para a outra borda).
## Estimativa zero implica em prob=0.5. glm_out$family$linkinv(0) glm_out$family$linkinv(-23)
sub_data$tem <- as.numeric(gsub(x=sub_data$tratamento, "\\D", ""))
db <- subset(sub_data, !is.na(tem))
xyplot(imoveis/(moveis+imoveis)~sqrt(tem), data=db, jitter.x=TRUE)
m0 <- glm(cbind(imoveis, moveis) ~ sqrt(tem), family=binomial, data=db) summary(m0)
pred <- data.frame(tem=seq(0, 24, length.out=30))
pred$p <- predict(m0, newdata=pred, type="response")
xyplot(imoveis/(moveis+imoveis)~sqrt(tem), data=db, jitter.x=TRUE, ylim=c(0, NA))+ as.layer(xyplot(p~sqrt(tem), data=pred, type="l"))
À disposição.
Walmes.
------------------------------ [image: Avast logo] <https://www.avast.com/antivirus>
Este email foi escaneado pelo Avast antivírus. www.avast.com <https://www.avast.com/antivirus>
_______________________________________________ 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.
-- Alisson Lucrecio da Costa

Muito obrigado! Deu certo! Mauro, A função as.layer esta no pacote latticeExtra. Tive que usar o biocLite para instalar o pacote. source("http://bioconductor.org/biocLite.R") biocLite("latticeExtra") Att., Alisson 2015-10-05 21:07 GMT-03:00 Mauro Sznelwar <sznelwar@uol.com.br>: Não consegui esta função! Eu usei a biblioteca lattice para o xyplot, rodou o primeiro mas este não rodou porque não reconhece o as.layer xyplot(imoveis/(moveis+imoveis)~sqrt(tem), data=db, jitter.x=TRUE, ylim=c(0, NA))+ as.layer(xyplot(p~sqrt(tem), data=pred, type="l")) O fato de não serem significativos não é problema. Tem que ter em mente que parametrização você usou e as hipóteses decorrentes. Nessa parametrização de estimativas por cela (~trat-1), quando um trat tem estimativa 0, significa que a prob de mobilidade é 0.5. Então esse teste de hipótese, apesar de feito e retornado, não traz nada de interessante na maioria dos casos. Eu considero que os interesses sejam sobre as diferenças entre trat e não se eles tem ou não prob=0.5. Vamos agora aos potenciais problemas. Os níveis A, B, B-12 e B-24 tem probabilidades amostrais nas bordas, ou seja, 0 e 1. Na binomial, o espaço de p é (0, 1), ou seja, não os incluem. No glm, tais valores são obtidos no limite, quando \eta = X\beta vai para -\infty ou \infty, o p aproxima de 0 ou 1. Aplique o inverso da função de ligação em -23 e verá que isso é zero. Pelo sufixo que usou nos tratamentos, isso tem cara avaliação no tempo, com algumas testemunhas (sem sufixo), como é de costume em muitos experimentos. Uma solução, seria ajustar a curva para usando de T-0 à T-12. As testemunhas ficam de fora. Obtenha para elas o IC por perfil de verossimilhança, pois, embora o limite inferir e estimativa sejam 0, o limite superior será algo >0 (inverta o raciocínio para a outra borda). ## Estimativa zero implica em prob=0.5. glm_out$family$linkinv(0) glm_out$family$linkinv(-23) sub_data$tem <- as.numeric(gsub(x=sub_data$tratamento, "\\D", "")) db <- subset(sub_data, !is.na(tem)) xyplot(imoveis/(moveis+imoveis)~sqrt(tem), data=db, jitter.x=TRUE) m0 <- glm(cbind(imoveis, moveis) ~ sqrt(tem), family=binomial, data=db) summary(m0) pred <- data.frame(tem=seq(0, 24, length.out=30)) pred$p <- predict(m0, newdata=pred, type="response") xyplot(imoveis/(moveis+imoveis)~sqrt(tem), data=db, jitter.x=TRUE, ylim=c(0, NA))+ as.layer(xyplot(p~sqrt(tem), data=pred, type="l")) À disposição. Walmes. --- Este email foi escaneado pelo Avast antivírus. https://www.avast.com/antivirus

Walmes, obrigado por sua ajuda, esta sendo de grande valia. Você poderia me ajudar também em como calcular o IC por perfil de verossimilhança para os tratamentos A e B? Muito obrigado. Alisson Lucrecio da Costa 2015-10-05 22:11 GMT-03:00 Alisson Lucrécio < alisson.lucrecio@ifgoiano.edu.br>:
Mauro,
A função as.layer esta no pacote latticeExtra. Tive que usar o biocLite para instalar o pacote.
source("http://bioconductor.org/biocLite.R") biocLite("latticeExtra")
Att.,
Alisson
2015-10-05 21:07 GMT-03:00 Mauro Sznelwar <sznelwar@uol.com.br>:
Não consegui esta função! Eu usei a biblioteca lattice para o xyplot, rodou o primeiro mas este não rodou porque não reconhece o as.layer
xyplot(imoveis/(moveis+imoveis)~sqrt(tem), data=db, jitter.x=TRUE, ylim=c(0, NA))+ as.layer(xyplot(p~sqrt(tem), data=pred, type="l"))
O fato de não serem significativos não é problema. Tem que ter em mente que parametrização você usou e as hipóteses decorrentes. Nessa parametrização de estimativas por cela (~trat-1), quando um trat tem estimativa 0, significa que a prob de mobilidade é 0.5. Então esse teste de hipótese, apesar de feito e retornado, não traz nada de interessante na maioria dos casos. Eu considero que os interesses sejam sobre as diferenças entre trat e não se eles tem ou não prob=0.5.
Vamos agora aos potenciais problemas. Os níveis A, B, B-12 e B-24 tem probabilidades amostrais nas bordas, ou seja, 0 e 1. Na binomial, o espaço de p é (0, 1), ou seja, não os incluem. No glm, tais valores são obtidos no limite, quando \eta = X\beta vai para -\infty ou \infty, o p aproxima de 0 ou 1. Aplique o inverso da função de ligação em -23 e verá que isso é zero. Pelo sufixo que usou nos tratamentos, isso tem cara avaliação no tempo, com algumas testemunhas (sem sufixo), como é de costume em muitos experimentos. Uma solução, seria ajustar a curva para usando de T-0 à T-12. As testemunhas ficam de fora. Obtenha para elas o IC por perfil de verossimilhança, pois, embora o limite inferir e estimativa sejam 0, o limite superior será algo >0 (inverta o raciocínio para a outra borda).
## Estimativa zero implica em prob=0.5. glm_out$family$linkinv(0) glm_out$family$linkinv(-23)
sub_data$tem <- as.numeric(gsub(x=sub_data$tratamento, "\\D", ""))
db <- subset(sub_data, !is.na(tem))
xyplot(imoveis/(moveis+imoveis)~sqrt(tem), data=db, jitter.x=TRUE)
m0 <- glm(cbind(imoveis, moveis) ~ sqrt(tem), family=binomial, data=db) summary(m0)
pred <- data.frame(tem=seq(0, 24, length.out=30))
pred$p <- predict(m0, newdata=pred, type="response")
xyplot(imoveis/(moveis+imoveis)~sqrt(tem), data=db, jitter.x=TRUE, ylim=c(0, NA))+ as.layer(xyplot(p~sqrt(tem), data=pred, type="l"))
À disposição.
Walmes.
------------------------------ [image: Avast logo] <https://www.avast.com/antivirus>
Este email foi escaneado pelo Avast antivírus. www.avast.com <https://www.avast.com/antivirus>
_______________________________________________ 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.
-- Alisson Lucrecio da Costa
-- Alisson Lucrecio da Costa

Podem haver outras abordagens, mas considere essa de início. da <- with(subset(sub_data, tratamento=="A"), list(y=imoveis, n=moveis+imoveis)) library(bbmle) fitA <- mle2(y~dbinom(prob=p, size=n), start=list(p=0.01), data=da, optimizer="nlminb", lower=c(p=10e-5)) confint(fitA) Eu tive que fazer uma restrição de borda à esquerda para que aconteça a convergência (lower=10e-5). O valor estimado é justamente o valor que usei na borda. Tentei valores menore mas ocorre falha (under/overflow numérico), então mantive esse. Isso não é um problema, porque sabendo que todos os y são zero, a estimativa amostral de p = y/n é zero (fora do espaço, claro). De qualquer maneira, essa rotina é para calcular o IC e o confint retorna o limite superior. Existe algumas preocupações sobre esses IC calculados para estimativas de borda mas use em complemento ao fato da estimativa amostral ter sido zero e que esse IC de verossimilhança é o melhor que se pode fazer para reportar alguma incerteza sobre a estimativa. À disposição. Walmes.

Podem haver outras abordagens, mas considere essa de início. da <- with(subset(sub_data, tratamento=="A"), list(y=imoveis, n=moveis+imoveis)) library(bbmle) fitA <- mle2(y~dbinom(prob=p, size=n), start=list(p=0.01), data=da, optimizer="nlminb", lower=c(p=10e-5)) confint(fitA) prf <- profile(fitA, del=0.01) plot(prf) Eu tive que fazer uma restrição de borda à esquerda para que aconteça a convergência (lower=10e-5). O valor estimado é justamente o valor que usei na borda. Tentei valores menore mas ocorre falha (under/overflow numérico), então mantive esse. Isso não é um problema, porque sabendo que todos os y são zero, a estimativa amostral de p = y/n é zero (fora do espaço, claro). De qualquer maneira, essa rotina é para calcular o IC e o confint retorna o limite superior. Existe algumas preocupações sobre esses IC calculados para estimativas de borda mas use em complemento ao fato da estimativa amostral ter sido zero e que esse IC de verossimilhança é o melhor que se pode fazer para reportar alguma incerteza sobre a estimativa. À disposição. Walmes.
participantes (4)
-
Alisson Lucrécio
-
Mauro Sznelwar
-
Maurício Lordêlo
-
Walmes Zeviani