Os dados disponíveis em neste link são um exemplo onde a análise de covariância pode ser utilizada. Neste caso temos uma variável resposta e duas variáveis explicativas sendo uma delas qualitativa (um fator) e outra quantitativa (numérica). Copie o arquivo com o conjunto de dados para sua área de trabalho e depois importe para o R com read.table(). Alternativamente, se o computador estiver conectado a internet read.table() pode ler diretamente o arquivo como mostrado a seguir.
O primeiro passo é a leitura e organização dos dados, em particular assegurando que a variável qualitativa indicadora dos tratamentos seja indicada como sendo um fator evitando que seus valores sejam interpretados como quantidades numéricas. Note que neste caso temos 2 variáveis numéricas, a resposta (resp) e a covariável (cov).
> ex12 <- read.table("http://www.leg.ufpr.br/~paulojus/dados/exemplo12.txt", header=T) > ex12
maq cov resp 1 1 20 36 2 1 25 41 3 1 24 39 4 1 25 42 5 1 32 49 6 2 22 40 7 2 28 48 8 2 22 39 9 2 30 45 10 2 28 44 11 3 21 35 12 3 23 37 13 3 26 42 14 3 21 34 15 3 15 32
> ex12$maq <- as.factor(ex12$maq) > str(ex12)
'data.frame': 15 obs. of 3 variables: $ maq : Factor w/ 3 levels "1","2","3": 1 1 1 1 1 2 2 2 2 2 ... $ cov : int 20 25 24 25 32 22 28 22 30 28 ... $ resp: int 36 41 39 42 49 40 48 39 45 44 ...
> summary(ex12)
maq cov resp 1:5 Min. :15.00 Min. :32.0 2:5 1st Qu.:21.50 1st Qu.:36.5 3:5 Median :24.00 Median :40.0 Mean :24.13 Mean :40.2 3rd Qu.:27.00 3rd Qu.:43.0 Max. :32.00 Max. :49.0
Os dados podem ser visualizados na Figura 68 produzida com o comando a seguir. Note-se que os
dados de cada um dos tratamentos são indicados por cores (argumento col) e padrões de
pontos (argumento pch) indexados pela variável maq que define os níveis dos tratamentos
> with(ex12,plot(resp~cov, col=c(1,2,4)[maq], pch=(1:3)[maq]))
Na análise de covariância não temos ortogonalidade entre os fatores. Desta forma os testes de significância têm que ser obtidos em ajustes separados: (i) para o efeito de covariáveis, corrigido pelo efeito dos tratamentos qualitativos e (ii) para o efeito dos tratamentos qualitativos, corrigidos pelo efeito da covariável.
Primeiro vamos testar a inclinação (coeficiente \(\beta _1\)) da reta de regressão. Na análise de variância abaixo devemos considerar apenas o teste referente à variável cov que neste caso está corrigida para o efeito de maq. Note que para isto a variável cov tem que ser a última na especificação do modelo.
> ex12.cov <- aov(resp ~ maq + cov, data=ex12) > summary(ex12.cov)
Df Sum Sq Mean Sq F value Pr(>F) maq 2 140.40 70.20 27.59 5.17e-05 *** cov 1 178.01 178.01 69.97 4.26e-06 *** Residuals 11 27.99 2.54 --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
A seguir testamos o efeito do fator maq corrigindo para o efeito da covariável. Para isto basta inverter a ordem dos termos na especificação do modelo.
> ex12.trat <- aov(resp ~ cov + maq, data=ex12) > summary(ex12.trat)
Df Sum Sq Mean Sq F value Pr(>F) cov 1 305.13 305.13 119.933 2.96e-07 *** maq 2 13.28 6.64 2.611 0.118 Residuals 11 27.99 2.54 --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Portanto, olhamos o primeiro quadro da ANOVA para verificar o efeito da covariável, e no segundo para verificar o efeito do tratamento. Se desejável poderia-se tomar os resultados de cada um deles para compor um quandro de análise, porém com a ressalva que, devido a não ortogonalidade, a soma das somas de quadrados não corresponde à soma de quadrados total. Entretanto, há uma função Anova() no pacote car do R que já monta tal quadro automaticamente conforme ilustrado a seguir.
> require(car)
Carregando pacotes exigidos: car
Carregando pacotes exigidos: carData
> Anova(ex12.cov, type="III")
Anova Table (Type III tests) Response: resp Sum Sq Df F value Pr(>F) (Intercept) 87.434 1 34.3664 0.0001089 *** maq 13.284 2 2.6106 0.1180839 cov 178.014 1 69.9694 4.264e-06 *** Residuals 27.986 11 --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Note que esta função irá retornar o mesmo resultado para qualquer ordem dos termos no modelo, ou seja, no exemplo acima Anova(ex12.cov, type="III") e Anova(ex12.trat, type="III") retornam os mesmos resultados.
O argumento type="III" refere-se a um jargão consagrado pelo software SAS que corresponde a soma de quadrados do tipo III. Em geral nas funções básicas do R evita-se tal jargão e procura-se usar só conceitos ligados à parametrização do modelo através da definição dos contrastes e por isto tal terminologia está apenas em um pacote contribuído.
Neste caso a função Anova faz o mesmo que mostrado nas duas análises de variâncias iniciais, obtendo para cada termo a soma de quadrados quando este é corrigido para os demais, ou seja, colocado na última posição na especificação do modelo.