Tytuł mówi wszystko i jestem zdezorientowany. Poniżej uruchamiane są powtarzane miary aov () w R i uruchamiane jest to, co myślałem, że było równoważne wywołanie lm (), ale zwracają różne wartości resztkowe błędów (chociaż sumy kwadratów są takie same).
Najwyraźniej wartości resztowe i dopasowane z aov () są tymi stosowanymi w modelu, ponieważ ich sumy kwadratów sumują się do każdego modelu / sumy resztkowej kwadratów zgłoszonych w podsumowaniu (my.aov). Jakie są rzeczywiste modele liniowe zastosowane do projektu z powtarzanymi pomiarami?
set.seed(1)
# make data frame,
# 5 participants, with 2 experimental factors, each with 2 levels
# factor1 is A, B
# factor2 is 1, 2
DF <- data.frame(participant=factor(1:5), A.1=rnorm(5, 50, 20), A.2=rnorm(5, 100, 20), B.1=rnorm(5, 20, 20), B.2=rnorm(5, 50, 20))
# get our experimental conditions
conditions <- names(DF)[ names(DF) != "participant" ]
# reshape it for aov
DFlong <- reshape(DF, direction="long", varying=conditions, v.names="value", idvar="participant", times=conditions, timevar="group")
# make the conditions separate variables called factor1 and factor2
DFlong$factor1 <- factor( rep(c("A", "B"), each=10) )
DFlong$factor2 <- factor( rep(c(1, 2), each=5) )
# call aov
my.aov <- aov(value ~ factor1*factor2 + Error(participant / (factor1*factor2)), DFlong)
# similar for an lm() call
fit <- lm(value ~ factor1*factor2 + participant, DFlong)
# what's aov telling us?
summary(my.aov)
# check SS residuals
sum(residuals(fit)^2) # == 5945.668
# check they add up to the residuals from summary(my.aov)
2406.1 + 1744.1 + 1795.46 # == 5945.66
# all good so far, but how are the residuals in the aov calculated?
my.aov$"participant:factor1"$residuals
#clearly these are the ones used in the ANOVA:
sum(my.aov$"participant:factor1"$residuals ^ 2)
# this corresponds to the factor1 residuals here:
summary(my.aov)
# but they are different to the residuals reported from lm()
residuals(fit)
my.aov$"participant"$residuals
my.aov$"participant:factor1"$residuals
my.aov$"participant:factor1:factor2"$residuals
participant
, jak wanova(lm(value ~ factor1*factor2*participant, DFlong))
Odpowiedzi:
Jednym ze sposobów myślenia o tym jest traktowanie sytuacji jako 3-czynnikowej między ANOVA badanych z IV
participant
,factor1
ifactor2
, a wielkość komórki 1.anova(lm(value ~ factor1*factor2*participant, DFlong))
oblicza wszystkie SS dla wszystkich efektów w tej 3-drogowej ANOVA (3 główne efekty, 3 interakcje pierwszego rzędu, 1 interakcja drugiego rzędu). Ponieważ w każdej komórce jest tylko jedna osoba, pełny model nie zawiera błędów i powyższe wezwanie doanova()
nie może obliczyć testów F. Ale SS są takie same jak w 2-czynnikowym projekcie.Jak
anova()
faktycznie oblicza SS dla efektu? Poprzez sekwencyjne porównania modeli (typ I): Pasuje do modelu ograniczonego bez danego efektu i nieograniczonego modelu, który obejmuje ten efekt. SS związane z tym efektem jest różnicą błędu SS między obydwoma modelami.Teraz sprawdźmy efekt SS związany z interakcją
id:IV1
, odejmując błąd SS modelu nieograniczonego od błędu SS modelu ograniczonego.Teraz, gdy masz już wszystkie „surowe” efekty SS, możesz zbudować testy wewnątrz badanych, po prostu wybierając odpowiedni termin błędu, na którym chcesz przetestować efekt SS. Np. Przetestuj efekt SS pod kątem
factor1
efektu interakcji SS zparticipant:factor1
.Aby uzyskać doskonałe wprowadzenie do metody porównywania modeli, polecam Maxwell i Delaney (2004). Projektowanie eksperymentów i analiza danych.
źródło