Jag vill utföra en ANCOVA-analys av data angående densiteten hos växtepifyter. Till att börja med skulle jag vilja veta om det finns någon skillnad i växtens densitet mellan två sluttningar, en N och en S, men jag har andra uppgifter som höjd, baldakinöppning och värdväxtens höjd. Jag vet att mitt kovariat måste vara de två backarna (N och S). Jag byggde den här modellen som körs i R och även om jag inte har någon aning om den fungerar bra. Jag skulle också vilja veta vad skillnaden är om jag använder symbolen +
eller *
.
model1 <- aov(density~slope+altitude+canopy+height) summary(model1) model1
Kommentarer
- + beräknar endast huvudeffekter, * uppskattar interaktioner mellan faktorer kopplade till *. ANCOVA-ramar uppskattar vanligtvis bara en huvudeffekt av den kontinuerliga faktorn, men interaktioner mellan alla grupperade faktorer.
Svar
Grundverktyget för detta är lm
; notera att aov
är ett omslag för lm
.
I synnerhet om du har någon grupperingsvariabel (faktor), $ g $ och en kontinuerlig kovariat $ x $ , modellen y ~ x + g
passar en huvudeffekt ANCOVA-modell, medan y ~ x * g
passar en modell som inkluderar interaktion med kovariatet. aov
tar samma formler.
Var särskilt uppmärksam på Note
i hjälp på aov
.
När det gäller +
vs *
, täcker russellpierce ganska mycket, men jag rekommenderar att du tittar på ?lm
och ?formula
och särskilt avsnitt 11.1 i manualen En introduktion till R som kommer med R (eller så kan du hitta den online om du inte har tänkt ut hur du hittar den på din dator. Det är lättast att hitta rullgardinsmenyn ”Hjälp” i antingen R eller RStudio).
Kommentarer
Svar
Jag rekommenderar att du läser och läser Upptäck statistik med R efter fält. Han har ett trevligt avsnitt om ANCOVA.
För att köra ANCOVA i R laddar du följande paket:
car compute.es effects ggplot2 multcomp pastecs WRS
Om du använder lm
eller aov
(jag använder aov
) se till att du ställer in kontraster med ”kontrasterna” ”funktion innan du gör antingen aov
eller lm
. R använder icke-ortogonala kontraster som standard som kan förstöra allt i en ANCOVA. Om du vill ställa in ortogonala kontraster, använd:
contrasts(dataname$factorvariable)=contr.poly(# of levels, i.e. 3)
kör sedan din modell som
model.1=aov(dv~covariate+factorvariable, data=dataname)
För att se modellanvändningen:
Anova(model.1, type="III")
Se till att du använder versal ”A” Anova
här och inte anova
. Detta ger resultat med typ III SS.
summary.lm(model.1)
ger ytterligare en sammanfattning och inkluderar R-sq. produktion.
posth=glht(model.1, linfct=mcp(factorvariable="Tukey")) ##gives the post-hoc Tukey analysis summary(posth) ##shows the output in a nice format.
Om du vill testa för homogenitet i regressionslutningar kan du också inkludera en interaktionsterm för IV och kovariat. Det skulle vara:
model=aov(dv~covariate+IV+covariate:IV, data=dataname)
Om interaktionsperioden är betydelsefull har du inte homogenitet.
Kommentarer
- Varför förstör icke-ortogonala kontraster allt?
- För att svara på frågan ovan om ” varför icke-ortogonala kontraster röra allt upp ”. Svaret är att R som standard är icke-ortogonalt (dvs. skillnad mellan medel) vilket kan orsaka problem om du vill se bidraget från varje IV separat. När vi anger ortogonala kontraster säger vi till R att vi vill att SS för IV ’ ska vara helt partitionerat och inte överlappande. På detta sätt kan vi se den variation som tillskrivs varje prediktor rent och tydligt. Om du inte anger anger R som standard en mer liberal inställning till kontrasten.
- Varför intresset för typ III SS?
Svar
Här är en kompletterande dokumentation http://goo.gl/yxUZ1R av det förfarande som föreslås av @Butorovich. Dessutom är min iakttagelse att när kovariatet är binärt, skulle sammanfattning (lm.object) ge samma IV-uppskattning som genereras av Anova (lm.object, type = ”III”).
Kommentarer
- Det är inte ’ det är inte klart att detta ska vara ett svar. Är det? Om så är fallet, redigera för att förtydliga. Om det är en fråga kan du ställa genom att klicka på
ASK QUESTION
högst upp & och fråga det där. Då kan vi hjälpa dig ordentligt. - Överens. Meddelandet har reviderats som ett (kompletterande) svar på det föregående.
Svar
Vi använder regression analys för att skapa modeller som beskriver effekten av variation i prediktorvariabler på responsvariabeln. Ibland om vi har en kategorisk variabel med värden som Ja / Nej eller Man / Kvinna etc. ger den enkla regressionsanalysen flera resultat för varje värde i den kategoriska variabeln. I ett sådant scenario kan vi studera effekten av den kategoriska variabeln genom att använda den tillsammans med prediktorvariabeln och jämföra regressionslinjerna för varje nivå i den kategoriska variabeln. En sådan analys kallas Analys av kovarians, även kallad ANCOVA.
Exempel
Tänk på R
inbyggda data ställa in mtcars
. I det observerar vi att fältet am
representerar typen av överföring (automatisk eller manuell). Det är en kategorisk variabel med värdena 0 och 1. Miles per gallonvärde (mpg
) för en bil kan också bero på den förutom värdet av hästkraft (hp
). Vi undersöker effekten av värdet av am
på regressionen mellan mpg
och hp
. Det görs med funktionen aov()
följt av anova()
-funktionen för att jämföra flera regressioner.
Ingångsdata
Skapa en dataram som innehåller fälten mpg
, hp
och am
från datamängden mtcars
. Här tar vi mpg
som svarsvariabel, hp
som prediktorvariabel och am
som den kategoriska variabeln.
input <- mtcars[,c("am","mpg","hp")] head(input)
När vi kör ovanstående kod, ger den följande resultat:
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
ANCOVA-analys
Vi skapar en regressionsmodell som tar hp
som prediktorvariabel och mpg
som svarsvariabel med beaktande av interaktionen mellan am
och hp
.
Modell med interaktion mellan kategorisk variabel och prediktorvariabel
Skapa regressionsmodell1
result1 <- aov(mpg~hp*am,data=mtcars) summary(result1)
När vi kör ovanstående kod ger den följande resultat:
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
Detta resultat visar att både hästkraft och transmissionstyp har signifikant effekt på miles per gallon eftersom p-värdet i båda fallen är mindre än 0,05. Men interaktionen mellan dessa två variabler är inte signifikant eftersom p-värdet är mer än 0,05.
Modell utan interaktion mellan kategorisk variabel och prediktorvariabel
Skapa regressionsmodellen2
result2 <- aov(mpg~hp+am,data=mtcars) summary(result2)
När vi kör ovanstående kod ger det följande resultat:
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
Detta resultat visar att både hästkraft och transmissionstyp har signifikant effekt på miles per gallon eftersom p-värdet i båda fallen är mindre än 0,05.
Jämförelse av två modeller
Nu kan vi jämföra de två modellerna för att dra slutsatsen om interaktionen mellan variablerna verkligen är obetydlig. För detta använder vi funktionen anova()
.
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
Eftersom p-värdet är större än 0,05 drar vi slutsatsen att samspelet mellan hästkraft och transmissionstyp är inte signifikant. Så körsträcka per gallon kommer på samma sätt att bero på bilens hästkraft i både automatisk och manuell växelläge.
Kommentarer
- Så som kom först, det här svaret eller det här inlägget på tutorials pekar? tutorialspoint.com/r/r_analysis_of_covariance.htm . Ska detta svar tas bort som plagiering? Eller har handledning pekat bara kopierats härifrån?
anova
(du ’ kommer snart att se om du ger dem i fel ordning eftersom vissa SS kommer att vara negativa om du gör det.