Como executar uma ANCOVA em R

17

Quero realizar uma análise ANCOVA dos dados relativos à densidade de epífitas vegetais. Inicialmente, gostaria de saber se existe alguma diferença na densidade da planta entre duas inclinações, uma N e uma S, mas tenho outros dados, como altitude, abertura do dossel e altura da planta hospedeira. Eu sei que minha covariável teria que ser as duas pistas (N e S). Eu construí este modelo que roda em R e, embora eu não tenha idéia se ele tem um bom desempenho. Também gostaria de saber qual é a diferença se eu usar o símbolo +ou *.

model1 <- aov(density~slope+altitude+canopy+height)
summary(model1)
model1
Pauloc
fonte
3
+ calculará apenas os efeitos principais, * estimará as interações entre os fatores conectados a *. As estruturas da ANCOVA geralmente estimam apenas um efeito principal do fator contínuo, mas interações entre todos os fatores agrupados.
russellpierce

Respostas:

14

A ferramenta básica para isso é lm; note que aové um invólucro para lm.

Em particular, se você tiver alguma variável de agrupamento (fator), uma covariável contínua , o modelo ajustaria um modelo ANCOVA de efeitos principais, enquanto um modelo que incluísse interação com a covariável. terá as mesmas fórmulas.gxy ~ x + gy ~ x * gaov

Preste atenção especial à Noteajuda na aov.

Quanto ao +vs *, russellpierce aborda esse assunto, mas eu recomendo que você veja ?lme, ?formulaprincipalmente, a seção 11.1 do manual Uma Introdução ao R que acompanha o R (ou você pode encontrá-lo on-line se não tiver descoberto como para encontrá-lo no seu computador; mais facilmente, isso envolve encontrar o menu suspenso "Ajuda" no R ou no RStudio).

Glen_b -Reinstate Monica
fonte
suponha que eu tenha dois fatores de grupo e dois covariáveis , com meu modelo sendo Y ~ g_1 + g_2 + x_1 + x_2 faz o mesmo truque? Os valores F obtidos com x_1 e x_2 testam e respectivamente? g1,g2x1,x2
yEuj=μ+αEu+ηj+xEuj1γ1+xEuj2γ2+ϵEuj
γ1=0 0γ2=0 0
Sayan
Não tenho certeza de como eu perdi isso. Sim. .... e se você quiser testar os dois ao mesmo tempo, ajuste-os com e sem eles e passe os objetos lm ajustados para anova(você verá em breve se os dá na ordem errada, porque alguns SS serão negativos se você fizer isso) )
Glen_b -Reinstala Monica
10

Eu recomendo obter e ler Descobrir estatísticas usando R por campo. Ele tem uma boa seção sobre ANCOVA.

Para executar o ANCOVA no R, carregue os seguintes pacotes:

car
compute.es
effects
ggplot2
multcomp
pastecs
WRS

Se você estiver usando lmou aov(eu uso aov), certifique-se de definir os contrastes usando a função "contrastes" antes de executar um aovou outro lm. R usa contrastes não ortogonais por padrão, o que pode atrapalhar tudo em uma ANCOVA. Se você deseja definir contrastes ortogonais, use:

contrasts(dataname$factorvariable)=contr.poly(# of levels, i.e. 3) 

então execute seu modelo como

model.1=aov(dv~covariate+factorvariable, data=dataname)

Para visualizar o modelo, use:

Anova(model.1, type="III") 

Certifique-se de usar capital "A" Anovaaqui e não anova. Isso fornecerá resultados usando SS tipo III.

summary.lm(model.1)dará outro resumo e inclui o R-sq. resultado.

posth=glht(model.1, linfct=mcp(factorvariable="Tukey"))  ##gives the post-hoc Tukey analysis
summary(posth) ##shows the output in a nice format.

Se você deseja testar a homogeneidade das inclinações de regressão, também pode incluir um termo de interação para o IV e a covariável. Isso seria:

model=aov(dv~covariate+IV+covariate:IV, data=dataname)

Se o termo de interação for significativo, você não terá homogeneidade.

Dan Butorovich
fonte
Por que contrastes não ortogonais estragam tudo?
tintinthong
1
Para responder à pergunta acima sobre "por que os contrastes não ortogonais estragam tudo". A resposta é que R é padronizado como não ortogonal (isto é, diferença entre médias), o que pode causar problemas se você quiser ver a contribuição de cada IV separadamente. Quando especificamos contrastes ortogonais, dizemos a R que queremos que os SS dos IV sejam completamente particionados e sem sobreposição. Dessa maneira, podemos ver a variação atribuída a cada preditor de forma limpa e clara. Se você não especificar, R usará como padrão uma abordagem mais liberal do contraste.
2
Por que o interesse no tipo III SS?
31718 Frank WatellEstado
4

Aqui está uma documentação complementar http://goo.gl/yxUZ1R do procedimento sugerido por @Butorovich. Além disso, minha observação é que, quando a covariável é binária, o uso do resumo (lm.object) daria a mesma estimativa IV que a gerada pela Anova (lm.object, tipo = "III").

XX
fonte
1
Não está claro que isso seja uma resposta. É isso? Nesse caso, edite para esclarecer. Se for uma pergunta, pergunte clicando ASK QUESTIONno topo e perguntando lá. Então podemos ajudá-lo adequadamente.
gung - Restabelece Monica
Acordado. A mensagem foi revisada como uma resposta (complementar) à anterior.
XX
3

Utilizamos a análise de regressão para criar modelos que descrevem o efeito da variação nas variáveis ​​preditoras na variável resposta. Às vezes, se tivermos uma variável categórica com valores como Sim / Não ou Masculino / Feminino etc., a análise de regressão simples fornecerá vários resultados para cada valor da variável categórica. Nesse cenário, podemos estudar o efeito da variável categórica usando-a juntamente com a variável preditora e comparando as linhas de regressão para cada nível da variável categórica. Essa análise é denominada Análise de Covariância, também denominada ANCOVA.

Exemplo
Considere o Rconjunto de dados interno mtcars. Nele observamos que o campo amrepresenta o tipo de transmissão (automática ou manual). É uma variável categórica com os valores 0 e 1. Os valores de milhas por galão ( mpg) de um carro também podem depender dele, além do valor da potência ( hp). Estudamos o efeito do valor de amna regressão entre mpge hp. Isso é feito usando a aov()função seguida pela anova()função para comparar as várias regressões.

A entrada de dados
Criar um quadro de dados que contém os campos mpg, hpe amdo conjunto de dados mtcars. Aqui tomamos mpgcomo variável de resposta, hpcomo variável preditora e amcomo variável categórica.

input <- mtcars[,c("am","mpg","hp")]
head(input)

Quando executamos o código acima, ele produz o seguinte resultado:

                  am  mpg  hp
Mazda RX4          1 21.0 110
Mazda RX4 Wag      1 21.0 110
Datsun 710         1 22.8  93
Hornet 4 Drive     0 21.4 110
Hornet Sportabout  0 18.7 175
Valiant            0 18.1 105

Análise ANCOVA
Criamos um modelo de regressão tomando hpcomo variável preditora e mpgcomo variável de resposta levando em consideração a interação entre ame hp.

Modelo com interação entre variável categórica e variável preditora

Criar modelo de regressão1

result1 <- aov(mpg~hp*am,data=mtcars)
summary(result1)

Quando executamos o código acima, ele produz o seguinte resultado:

            Df Sum Sq Mean Sq F value   Pr(>F)    
hp           1  678.4   678.4  77.391 1.50e-09 ***
am           1  202.2   202.2  23.072 4.75e-05 ***
hp:am        1    0.0     0.0   0.001    0.981    
Residuals   28  245.4     8.8                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Esse resultado mostra que tanto a potência quanto o tipo de transmissão têm efeito significativo em milhas por galão, pois o valor de p em ambos os casos é menor que 0,05. Mas a interação entre essas duas variáveis ​​não é significativa, pois o valor-p é maior que 0,05.

Modelo sem interação entre variável categórica e variável preditora

Crie o modelo de regressão2

result2 <- aov(mpg~hp+am,data=mtcars)
summary(result2)

Quando executamos o código acima, ele produz o seguinte resultado:

            Df Sum Sq Mean Sq F value   Pr(>F)    
hp           1  678.4   678.4   80.15 7.63e-10 ***
am           1  202.2   202.2   23.89 3.46e-05 ***
Residuals   29  245.4     8.5                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Esse resultado mostra que tanto a potência quanto o tipo de transmissão têm efeito significativo em milhas por galão, pois o valor de p em ambos os casos é menor que 0,05.

Comparando dois modelos
Agora podemos comparar os dois modelos para concluir se a interação das variáveis ​​é realmente insignificante. Para isso, usamos a anova()função

 anova(result1,result2)

 Model 1: mpg ~ hp * am
 Model 2: mpg ~ hp + am
   Res.Df    RSS Df  Sum of Sq     F Pr(>F)
 1     28 245.43                           
 2     29 245.44 -1 -0.0052515 6e-04 0.9806

Como o valor-p é maior que 0,05, concluímos que a interação entre a potência e o tipo de transmissão não é significativa. Portanto, a quilometragem por galão dependerá de maneira semelhante da potência do carro no modo de transmissão automática e manual.

user101834
fonte
Então, o que veio primeiro, esta resposta ou este post sobre os tutoriais apontam? tutorialspoint.com/r/r_analysis_of_covariance.htm . Esta resposta deve ser excluída como plágio? Ou os tutoriais apontam apenas copiar daqui?
John