Especificação do modelo em lm e glm

#Olá pessoal, #Existem formas diferentes de se especificar um modelo na função #"lm" e "glm". Mas obtive os seguintes resultados: #Criando o data frame# X1=c(rep("A",4),rep("B",4)) X2=c(rep("C",2),rep("D",2),rep("C",2),rep("D",2)) Y=c(3,5,5,7,11,13,13,15) Table=as.data.frame(cbind(X1,X2,as.numeric(Y))) Table #Os quatro modos de se especificar o mesmo modelo fornecem a mesma deviance,# #ou seja, são iguais# glm(Y ~ X1+X2+X1:X2, data=Table, family=poisson())$deviance glm(Y ~ (X1+X2)^2, data=Table, family=poisson())$deviance glm(Y ~ X1*X2, data=Table, family=poisson())$deviance glm(Y ~ X1:X2, data=Table, family=poisson())$deviance #Mas há um deslocamento de -1.25 nos coeficientes no último modelo round(glm(Y ~ X1+X2+X1:X2, data=Table,family=poisson())$coefficients,digits=2) round(glm(Y ~ (X1+X2)^2, data=Table,family=poisson())$coefficients,digits=2) round(glm(Y ~ X1*X2, data=Table,family=poisson())$coefficients,digits=2) round(glm(Y ~ X1:X2, data=Table,family=poisson())$coefficients,digits=2) #O coeficiente de X1B:X2D sai como NA# #O quarto modo de especificar o modelo está errado? #Por que isso acontece? #Nos modelos abaixo: #Incluindo mas uma variável preditora em Table# X3=c("E","F","E","F","E","F","E","F") Table.X3=as.data.frame(cbind(X1,X2,X3,as.numeric(Y))) Table.X3 #As deviances e os coeficientes X1A:X3F e X1A:X3E também são iguais #além disso alguns coeficientes são deslocados de -1.4 (X1A:X2C,X1B:X2C,X1A:X1D), #mas os outros coeficientes não são iguais# glm(Y~X1+X2+X3+X1:X2+X1:X3,data=Table.X3,family=poisson())$deviance glm(Y~X1:X2+X1:X3,data=Table.X3,family=poisson())$deviance round(glm(Y~X1+X2+X3+X1:X2+X1:X3,data=Table.X3,family=poisson())$coefficients,digits=2) round(glm(Y~X1:X2+X1:X3,data=Table.X3,family=poisson())$coefficients,digits=2) #Especificando os coeficientes do primeiro modelo # Intercept = 1.16 # X1/X2| C D | X1/X3| E F | # A | 0 0.41| A | 0 0.41| # B |1.24 -0.25| B |1.24 -0.25| #Especificando os coeficientes do segundo modelo # Intercept = 2.56 # X1/X2| C D | X1/X3| E F | # A |-1.40 -0.99| A | 0 0.41| # B |-0.15 NA | B | 0 0.15| #Os coeficientes X1B:X3E e X1B:X3F mudam. #Alguém sabe aonde se encontra o meu erro? #Será que sou obrigado a incluir o termo de interação X2:X3? #Mas e se essas duas variáveis forem independentes? #Muito Obrigado # Diego PJ

Diego todos os modelos definiem o mesmo subspaco e portanto os ajustes sao similares as diferencas que voce notou sao devido a parametrizacao e interpretacao dos coeficientes do modelo definidos pelos contrastes. Por exemplo experimente usar model.matrix(...) com cada um dos modelos em ... e compare as matrizes. Os 3 primeiros sao absolutamente identicos e isolam efeitos principais das interacoes. O intercepto neste modelo é a média do primeiro novel do primeiro fator. No 4 modelo os efeitos principais nao sao isolados e o intercepto e demais coeficientes tem interpretacao diferente mesmo correspondendo ao mesmo espaco -- ou seja o resultado de um ajuste pode ser obtido a partir do outro. Os links a seguir podem ser uteis: Para especificacao de modelos: http://leg.ufpr.br/~paulojus/embrapa/Rembrapa/Rembrapase24.html#x26-14800024 Para contrastes: http://leg.ufpr.br/~paulojus/embrapa/Rembrapa/Rembrapase25.html#x27-15600025 http://leg.ufpr.br/~paulojus/embrapa/Rembrapa/Rembrapase26.html#x28-16300026 On Mon, 21 Mar 2011, Diego Pujoni wrote:
#Olá pessoal,
#Existem formas diferentes de se especificar um modelo na função #"lm" e "glm". Mas obtive os seguintes resultados:
#Criando o data frame# X1=c(rep("A",4),rep("B",4)) X2=c(rep("C",2),rep("D",2),rep("C",2),rep("D",2)) Y=c(3,5,5,7,11,13,13,15) Table=as.data.frame(cbind(X1,X2,as.numeric(Y))) Table
#Os quatro modos de se especificar o mesmo modelo fornecem a mesma deviance,# #ou seja, são iguais#
glm(Y ~ X1+X2+X1:X2, data=Table, family=poisson())$deviance glm(Y ~ (X1+X2)^2, data=Table, family=poisson())$deviance glm(Y ~ X1*X2, data=Table, family=poisson())$deviance glm(Y ~ X1:X2, data=Table, family=poisson())$deviance
#Mas há um deslocamento de -1.25 nos coeficientes no último modelo
round(glm(Y ~ X1+X2+X1:X2, data=Table,family=poisson())$coefficients,digits=2) round(glm(Y ~ (X1+X2)^2, data=Table,family=poisson())$coefficients,digits=2) round(glm(Y ~ X1*X2, data=Table,family=poisson())$coefficients,digits=2) round(glm(Y ~ X1:X2, data=Table,family=poisson())$coefficients,digits=2)
#O coeficiente de X1B:X2D sai como NA# #O quarto modo de especificar o modelo está errado? #Por que isso acontece?
#Nos modelos abaixo:
#Incluindo mas uma variável preditora em Table# X3=c("E","F","E","F","E","F","E","F") Table.X3=as.data.frame(cbind(X1,X2,X3,as.numeric(Y))) Table.X3
#As deviances e os coeficientes X1A:X3F e X1A:X3E também são iguais #além disso alguns coeficientes são deslocados de -1.4 (X1A:X2C,X1B:X2C,X1A:X1D), #mas os outros coeficientes não são iguais#
glm(Y~X1+X2+X3+X1:X2+X1:X3,data=Table.X3,family=poisson())$deviance glm(Y~X1:X2+X1:X3,data=Table.X3,family=poisson())$deviance
round(glm(Y~X1+X2+X3+X1:X2+X1:X3,data=Table.X3,family=poisson())$coefficients,digits=2) round(glm(Y~X1:X2+X1:X3,data=Table.X3,family=poisson())$coefficients,digits=2)
#Especificando os coeficientes do primeiro modelo # Intercept = 1.16 # X1/X2| C D | X1/X3| E F | # A | 0 0.41| A | 0 0.41| # B |1.24 -0.25| B |1.24 -0.25|
#Especificando os coeficientes do segundo modelo # Intercept = 2.56 # X1/X2| C D | X1/X3| E F | # A |-1.40 -0.99| A | 0 0.41| # B |-0.15 NA | B | 0 0.15|
#Os coeficientes X1B:X3E e X1B:X3F mudam. #Alguém sabe aonde se encontra o meu erro? #Será que sou obrigado a incluir o termo de interação X2:X3? #Mas e se essas duas variáveis forem independentes?
#Muito Obrigado
# Diego PJ _______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
participantes (2)
-
Diego Pujoni
-
Paulo Justiniano