Măsuri repetate în două sensuri ANOVA în r

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

Măsuri repetate în două sensuri ANOVA este un test statistic puternic utilizat pentru a analiza seturi de date unde doi factori în cadrul subiectului (variabile independente) sunt măsurate de mai multe ori pentru fiecare subiect. Acest test ajută la determinarea dacă există diferențe semnificative între grupuri în timp sau în diferite condiții, în timp ce contabilizează variabilitatea individuală.

În acest ghid, vom acoperi:

  • Ce este o măsuri repetate în două sensuri ANOVA?
  • Când să -l folosești?
  • Cum să efectuați măsuri repetate în două sensuri ANOVA în R?
  • Interpretarea rezultatelor.

Măsuri repetate în două sensuri ANOVA este cunoscută și ca:

  • Doi factori repetați măsoară ANOVA
  • Doi factori sau două sensuri ANOVA cu măsuri repetate
  • În cadrul subiecților ANOVA

Măsuri repetate în două sensuri ANOVA este adesea utilizată în studiile în care ați măsurat:

  • O variabilă dependentă pe două sau mai multe puncte de timp
  • Când subiecții au suferit două sau mai multe condiții

De asemenea, ar trebui să știți cum să identificați măsurile repetate în două sensuri ANOVA de la ANOVA mixtă. ANOVA mixtă este foarte asemănătoare cu măsurile repetate în două sensuri ANOVA, deoarece ambele teste implică doi factori. Într -o ANOVA mixtă, subiecții care suferă fiecare afecțiune sunt diferiți. În timp ce, în două sensuri, măsoară repetate ANOVA, aceiași subiecți suferă ambele condiții.

Care este măsurile repetate în două sensuri ANOVA?

O măsuri repetate în două sensuri ANOVA examinează efectele a doi factori în cadrul subiectului asupra unei variabile dependente. Extinde măsurile repetate unidirecționale ANOVA prin încorporarea unui factor suplimentar, permițând înțelegerea atât a efectelor principale, cât și a efectelor de interacțiune.

Componente cheie:

  • Factorii în cadrul subiecților: Două variabile independente categorice măsurate pe aceiași subiecți.
  • Variabilă dependentă: O variabilă continuă afectată de factorii independenți.
  • Subiecți ca efecte aleatorii: Fiecare participant este expus la toate condițiile, reducând variabilitatea cauzată de diferențele individuale.

Când să folosiți o măsuri repetate în două sensuri ANOVA?

Folosiți acest test când:

  1. Aveți doi factori în cadrul subiectului (de exemplu, timp, condiție).
  2. Aceiași subiecți participă la toate combinațiile de factori.
  3. Variabila dependentă este continuă și distribuită în mod normal.
  4. Doriți să analizați atât efectele principale, cât și cele de interacțiune.
Măsuri repetate în două sensuri ANOVA în r

Descrierea datelor

Fișierul de date pentru analiză conține ID -ul subiectului, starea, intervalul de timp și variabila de răspuns. Cercetătorii au înregistrat măsurători variabile de răspuns de la aceiași subiecți la patru intervale de timp diferite. Subiecții au inclus atât persoane masculine, cât și feminine. În loc să folosească persoane diferite, cercetătorii au măsurat în mod repetat aceiași subiecți pe intervale de timp diferite. Deoarece aceiași subiecți au fost folosiți în mod repetat, vom efectua măsuri repetate în două sensuri ANOVA în R Studio.

Mediu clar

Ca prim pas, recomand întotdeauna să ștergeți obiecte și valori de date în mediul global cu rm() funcţie. Setați adevărata valoare pentru argument all Pentru a elimina obiecte și valori dacă ați creat mai devreme. Opriți toate ferestrele grafice folosind graphics.off() funcţie. Punerea valorii „CLS” în shell() Funcția va șterge mediul consolei.

rm(list = ls(all = TRUE))
graphics.off()
shell("cls")

Importul datelor

Pentru a importa setul de date am plasat fișierul de date CSV în directorul de lucru al proiectului. Creați o date obiect și atribuiți -le o funcție pe care o sun read.csv(). În fișierul de argumente după semnul egal din citate, trebuie doar să apăsați butonul Tab pentru a accesa fișierele prezente în directorul de lucru. Acum trebuie să alegem fișierul de date CSV respectiv. În următorul argument header Tip adevărat pentru a indica faptul că primul rând al fișierului de date conține nume sau titluri variabile.

În următoarea linie putem folosi head() Funcție pentru a imprima primele șase rânduri ale cadrului de date. Aici convertesc primele 2 variabile ca variabile ale factorului folosind as.factor() funcţie. Utilizare attach() Funcție pentru obiect de date pentru a masca componentele variabilelor din cadrul de date.

data <- read.csv(file = "data.csv", 
                 header = TRUE)
head(data)

data$group = as.factor(data$group)
data$time = as.factor(data$time)
attach(data)
#   subID  group time resp.var
# 1     1   male day1       26
# 2     2   male day1       27
# 3     3   male day1       24
# 4     4 female day1       18
# 5     5 female day1       17
# 6     6 female day1       16

Montarea modelului ANOVA

Să procedăm cu analiza variației pentru a vedea cum se modifică variabila de răspuns ca funcție a condiției și a timpului aplicat fiecărui participant. aov() Funcția este utilizată pentru a se potrivi cu analiza modelului de varianță. Funcția este aceeași ca și cea utilizată în două sensuri ANOVA, cu o singură diferență de argument de eroare. Aici trebuie să definiți eroarea ca raport între ID -ul subiectului și interacțiunea grupului și factorului de timp. Pentru numitor, puteți utiliza, de asemenea, un termen de grup, timp și interacțiune, combinat cu semnul plus. Summary() Funcția pentru obiectul modelului va imprima rezultatele.

model.aov <- aov(resp.var ~ 
                           group * time + 
                           Error(subID/(group*time)))
#OR
model.aov <- aov(resp.var ~
                           group * time + 
                           Error(subID/(group + time + group:time)))

summary(model.aov)
# 
# Error: subID
#       Df Sum Sq Mean Sq
# group  1    408     408
# 
# Error: subID:group
#       Df Sum Sq Mean Sq
# group  1  67.25   67.25
# 
# Error: subID:time
#      Df Sum Sq Mean Sq
# time  3  356.7   118.9
# 
# Error: subID:group:time
#      Df Sum Sq Mean Sq
# time  3  49.94   16.65
# 
# Error: Within
#            Df Sum Sq Mean Sq F value  Pr(>F)   
# group       1  13.86  13.863   6.105 0.03866 * 
# time        3  52.79  17.596   7.749 0.00943 **
# group:time  3   2.60   0.868   0.382 0.76887   
# Residuals   8  18.17   2.271                   
# ---
# Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Rezultatele au arătat că funcția de eroare a descompus reziduurile în:

  • ID -ul subiectului
  • ID -ul subiectului și interacțiunea de grup
  • ID -ul subiectului și interacțiunea timpului
  • Interacțiunea cu trei căi a ID -ului, grupului și timpului

Această descompunere a termenului de eroare reduce considerabil sursa reziduală de varianță pentru calculul valorii F. Atât variabilele de timp, cât și cele de grup influențează semnificativ variabila de răspuns. Cu toate acestea, interacțiunea lor a fost nesemnificativă.

Test de comparație mediu

Acum să calculăm comparații medii pentru a observa diferențele dintre efectele principale.

Test SNK

Testul SNK este derivat din Tukey, dar este mai puțin conservator. Testul Tukey controlează eroarea pentru toate comparațiile, unde SNK controlează doar pentru comparații luate în considerare. Înainte de a utiliza SNK.test() Funcție, definiți mai întâi gradul de eroare de libertate și eroare valoarea pătrată medie care va fi utilizată în această funcție.

Edf <- df.residual(model.aov$Within)
Edf
# (1) 8
EMS <- deviance(model.aov$Within)/Edf
EMS
# (1) 2.270833

Pentru a aplica testul SNK utilizarea testului SNK.test() funcţie. Această funcție necesită:

  • Y argument care specifică variabila de răspuns
  • Argument TRT care reprezintă variabila factorului de tratament aplicată fiecărei unități experimentale ca grup și timp în acest exemplu.
  • Eroarea DF și eroarea MS reprezintă gradul de libertate și pătratul mediu pentru termenul de eroare, așa cum este stabilit anterior
  • Alpha arată nivelul de semnificație. Valoarea implicită este de 5 %.
  • Argumentul de grup specifică formarea grupurilor de tratament. Adevărata valoare pentru grup va duce la grupuri de tratament cu litere. Valoarea falsă pentru grup va oferi informații cu privire la comparațiile dintre tratamente.
library(agricolae)
SNK.test1 <- SNK.test(y = resp.var,
                     trt = group,
                     DFerror = Edf,
                     MSerror = EMS,
                     alpha = 0.05,
                     group = TRUE)
print(SNK.test1)
# $statistics
#    MSerror Df     Mean       CV
#   2.270833  8 14.33333 10.51345
# 
# $parameters
#   test name.t ntr alpha
#    SNK  group   2  0.05
# 
# $snk
#      Table CriticalRange
# 2 3.261182      1.418656
# 
# $means
#         resp.var      std  r Min Max   Q25  Q50   Q75
# female  9.833333 4.687184 12   4  18  6.75  9.0 11.50
# male   18.833333 4.687184 12  13  27 15.75 17.5 21.75
# 
# $comparison
# NULL
# 
# $groups
#         resp.var groups
# male   18.833333      a
# female  9.833333      b
# 
# attr(,"class")
# (1) "group"

În mod similar, pentru comparații medii în variabilă de timp, înlocuiți grupul cu timpul în trt argument.

SNK.test2 <- SNK.test(y = resp.var,
                     trt = time,
                     DFerror = Edf,
                     MSerror = EMS,
                     alpha = 0.05,
                     group = TRUE)
print(SNK.test2)
# $statistics
#    MSerror Df     Mean       CV
#   2.270833  8 14.33333 10.51345
# 
# $parameters
#   test name.t ntr alpha
#    SNK   time   4  0.05
# 
# $snk
#      Table CriticalRange
# 2 3.261182      2.006283
# 3 4.041036      2.486050
# 4 4.528810      2.786128
# 
# $means
#       resp.var      std r Min Max   Q25  Q50   Q75
# day1 21.333333 4.885352 6  16  27 17.25 21.0 25.50
# day2 13.833333 6.145459 6   7  21  9.00 13.5 18.75
# day3 12.500000 3.937004 6   8  17  9.25 12.5 15.75
# day4  9.666667 5.240865 6   4  16  5.25  9.5 13.75
# 
# $comparison
# NULL
# 
# $groups
#       resp.var groups
# day1 21.333333      a
# day2 13.833333      b
# day3 12.500000      b
# day4  9.666667      c
# 
# attr(,"class")
# (1) "group"

Vizualizarea rezultatelor

Barplot pentru variabilă de timp

Puteți complota graficul de bare cu o eroare standard în partea de sus a fiecărei bare din ieșirea testului SNK aplicat anterior. Codul de mai jos arată cum va fi desenat graficul folosind ggplot() funcţie.

library(ggplot2)

SE1 = SNK.test1$means$std/sqrt(SNK.test1$means$r)

ggplot(data=SNK.test1$means, 
       aes(x= rownames(SNK.test1$means), 
           y= resp.var, 
           fill=rownames(SNK.test1$means))) +
  geom_bar(stat="identity") +
  geom_errorbar(aes(ymax = resp.var + std/sqrt(r),
                    ymin = resp.var - std/sqrt(r)), 
                position = position_dodge(width=0.9), 
                width = 0.25) +
  labs(title = "",
       x = "group",
       y = "Response variable",
       fill = "group") +
  geom_text(data = SNK.test1$groups, 
            aes(x = rownames(SNK.test1$groups),
                y = resp.var + SE1,
                label = as.matrix(groups)),
            position = position_dodge(width = 0.9),
            vjust = -(0.5))

măsură repetatămăsură repetată

Interpretarea rezultatelor

Produsul va include:

  • Efecte principale: Examinarea efectului Timp şi Stare independent.
  • Efect de interacțiune: Verificarea dacă efectul unui factor depinde de celălalt.
  • valorile p: Dacă p <0.05, efectul este semnificativ statistic.

Concluzie

O măsuri repetate în două sensuri ANOVA în R este o metodă utilă pentru analiza observațiilor repetate în mai multe condiții. Urmând pașii prezentate, puteți testa eficient efectele principale și de interacțiune, asigurând inferențe statistice valide.

Prin stăpânirea acestei tehnici, puteți debloca informații mai profunde asupra datelor dvs. experimentale și puteți trage concluzii mai precise.

Post Bid Way Repeted Măsuri ANOVA în R a apărut mai întâi pe ajutorul statistic: o școală de statistici.

Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.