[R-br] Somas de Quadrados Tipo III

Eduardo Bearzoti edbearzoti em yahoo.com.br
Quarta Junho 21 18:38:52 -03 2017


Fernando, muito obrigado pelo pronto retorno.

De fato, eu costumo obter as SQs parciais (tipo 2) mudando a ordem dos termos do modelo, usando a própria função mais conhecida anova(), mas tinha me entusiasmado com a existência de uma função pronta como a Anova().

Quanto às tipo 3, mesmo seguindo a sua sugestão, Fernando, continuo obtendo aquela mensagem de erro:

> library(car) 
> Anova(lm(y ~ factorA * factorB, data =dados,  contrasts = list(factorA = contr.sum, factorB = contr.sum)), type = 3)
Error in Anova.III.lm(mod, error, singular.ok = singular.ok, ...) : 
  there are aliased coefficients in the model
> Anova(lm(y ~ factorB * factorA, data =dados,  contrasts = list(factorA = contr.sum, factorB = contr.sum)), type = 3)
Error in Anova.III.lm(mod, error, singular.ok = singular.ok, ...) : 
  there are aliased coefficients in the model


Será que estou fazendo alguma coisa equivocada?


Fernando Souza e Cesar, obrigado também pelos retornos. Quis propositadamente inventar um conjunto de dados fortemente desbalanceado, justamente para verificar os resultados das funções drop1() e Anova().  Minha preocupação é realmente apenas com a mecânica do cálculo.

O fato de haver um único grau de liberdade para a interação AxB neste conjunto desbalanceado fictício é que aqui só se pode compor um único "grid" regular envolvendo dois níveis do fator A e dois níveis do fator B (o segundo e o quarto níveis de ambos os fatores), ou seja, um único grid 2x2, e assim temos (2-1)(2-1) = 1 único grau de liberdade.

Abraços,
Eduardo.


    Em Quarta-feira, 21 de Junho de 2017 16:19, Cesar Rabak <cesar.rabak em gmail.com> escreveu:
 

 Eduardo,
Além das excelentes respostas que vc já recebeu, note que até a terminologia sobre "Somas de Quadrados Tipos II e III" é na verdade estranha à Estatística e sim um artifício inventado por um dos 'fabricantes' de pacote de SW estatístico cuja terminologia "pegou".
Comecei o post com essa observação para poder comentar que sua afirmação « . . . nem sempre o R as calcula corretamente. » não está certa, na verdade nem errada está (W. Pauli)¹!
Como seu exemplo é "sintético" e visando apenas à mecânica/matemática do cálculo, não há mais que se possa dizer.
Com relação a uma análise mais concreta com objetivos no domínio do problema você deve estudar o quê está em jogo na análise e se os resultados de dados tão desbalanceados fariam sentido 'prático' para o problema físico.
HTH--Cesar Rabak

[1] « Das ist nicht nur nicht richtig, es ist nicht einmal falsch! »     -- Wolfgang Pauli
2017-06-21 12:52 GMT-03:00 Fernando Souza via R-br <r-br em listas.c3sl.ufpr.br>:

Se você possui 4 GL para o fator A e  4 GL para o fator B, como podem haver somente 1 GL para a interação? Acredito que por isso o R retorna "there are aliased coefficients in the model". Uma vez que você não possui informações em todas as combinações dos fatores A e B. 

with(dados,table(factorA, factorB))

Veja com um banco de dados completo e nos retorne


Att

Em 21 de junho de 2017 11:23, Eduardo Bearzoti via R-br <r-br em listas.c3sl.ufpr.br> escreveu:

Bom dia, pessoal.

Minha dúvida é particularmente sobre o cálculo de somas de quadrados tipo III (mas também do tipo II) no R com conjuntos de dados desbalanceados.

Estou ciente da polêmica em torno do uso destas somas de quadrados na comunidade estatística, mas gostaria muito de poder calculá-las no R, e, a não ser que eu esteja enganado, nem sempre o R as calcula corretamente.

Pesquisando na rede, descobri que em geral são apontadas duas maneiras de se calcular somas de quadrados tipo III no R: a) Utilizando a função drop1() em modelos ajustados com a especificação de contrastes contr.sum (ou contr.helmert), e b) utilizando a função Anova() (com "A" maiúsculo), do pacote car. 

Abaixo, eu apresento um exemplo simulado de um ensaio fatorial altamente desbalanceado, faltando várias combinações entre os níveis dos dois fatores. A interação entre eles, por exemplo, apresenta um único grau de liberdade, tamanho o desbalanceamento.

dados <- data.frame(y=c(35.44627,43.433 53,40.20125,38.1061,39.96211, 44.21636,19.78237,23.58636,31. 73537,
         36.49977,38.71573,41.00456,19. 6787,16.43436,32.05407,33.3784 ,18.58266,17.74051),
         factorA=as.factor(c(2,2,4,4,4, 4,6,6,6,6,6,6,8,8,8,8,10,10)),
         factorB=as.factor(c(2,2,1.5,1. 5,2.5,2.5,1,1,2,2,3,3,1.5,1.5, 2.5,2.5,2,2)))

Tenho em mente o modelo contendo os fatores A e B, bem como sua interação. 

No SAS, utilizando o proc glm, obtenho as seguintes somas de quadrados tipo I, tipo II e tipo III:

Source                      DF       Type I SS

factorA                       4     964.4164933
factorB                       3     500.0771638
factorA*factorB               1      68.7277880

Source                      DF      Type II SS

factorA                       3     954.6730970
factorB                       3     500.0771638
factorA*factorB               1      68.7277880

Source                      DF     Type III SS

factorA                       3     954.6730970
factorB                       3     500.0771638
factorA*factorB               1      68.7277880

Percebam que neste exemplo as somas de quadrados tipo II e III são iguais, pois as "caselas" apresentam o mesmo número de repetições (duas).

No R, tentei reproduzir este resultado seguindo os dois procedimentos citados acima:

1) Utilizando a função drop1()

> mod <- lm(y ~ factorA*factorB, 
          contrasts=list(factorA=contr.s um, factorB=contr.sum),
          data=dados)

> drop1(mod, ~.,test = "F")
Single term deletions

Model:
y ~ factorA * factorB
                Df Sum of Sq     RSS    AIC F value  Pr(>F)  
<none>                        70.841 42.661                  
factorA          0     0.000  70.841 42.661                  
factorB          0     0.000  70.841 42.661                  
factorA:factorB  1    68.728 139.569 52.867  8.7315 0.01609 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(apenas a soma de quadrados da interação foi calculada)


2) Utilizando car::Anova()

> mod <- lm(y ~ factorA*factorB, data=dados)
> library(car)
> Anova(mod,type = "II")
Anova Table (Type II tests)

Response: y
                 Sum Sq Df F value    Pr(>F)    
factorA         1284.10  4 40.7845 8.995e-06 ***
factorB          500.08  3 21.1774 0.0002047 ***
factorA:factorB   68.73  1  8.7315 0.0160919 *  
Residuals         70.84  9                      
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
> Anova(mod,type = "III")
Error in Anova.III.lm(mod, error, singular.ok = singular.ok, ...) : 
  there are aliased coefficients in the model
(soma de quadrados tipo II calculada errada para o fator A, e tipo III não calculadas)

Ou seja, não consegui reproduzir nem as somas de quadrados tipo III nem as do tipo II, por nenhum dos dois procedimentos sugeridos na rede.

Estou utilizando:
> sessionInfo()
R version 3.4.0 (2017-04-21)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 14.04.5 LTS
(...)
other attached packages:
[1] car_2.1-4



Eu estaria fazendo alguma coisa equivocada? Qualquer observação, sugestão, ou indicação de alguma maneira alternativa para cálculo das somas de quadrados tipo III no R será muito bem vinda.

Abs,

Eduardo Bearzoti
(UFOP) 

______________________________ _________________
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-g uia) e forneça código mínimo reproduzível.




-- 
============================== ===========
Fernando Souza
Zootecnista, DSc. Produção e Alimentação Animal
Celular: (31)99796-8781 (Vivo)
E-mail:nandodesouza em gmail.com
Lattes: http://lattes.cnpq.br/ 6519538815038307
Blog: https://producaoanimalcomr. wordpress.com/
============================== ============
______________________________ _________________
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/20170621/e335a0f2/attachment-0001.html>


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