Tekrarlı ölçümlerde kullanılan varyans analizi, aynı katılımcıların farklı koşullarda (farklı zamanlarda) ölçülmesinde ortalamaları arasında farklılık olup olmadığını analiz eden bir parametrik testtir. Aynı zamanda grup içi desen olarak da bilinmektedir (pallant?). Öyleyse en az üç ölçümün olması ve aynı gruba uygulamanın yapılmasına ihtiyacımız vardır.
Bu desenlerde kareler toplamının ve bağımsız değişken etkisi ortalama karesinin hesaplanması gruplararası desende olduğu gibidir. Kareler toplamı ve Bağımsız Değişken Etkisi Ortalama Kare Hesaplaması
F değeri
Tekrarlı ölçümlerdeki hata gruplararasına göre daha hassastır. Ancak katılımcıların ölçümlerde aldıkları puanlarda bireysel farklılıklar yoksa ya da vakalar ve işlem arasında etkileşim varsa hata terimi gruplararası deseninkinden daha büyük olabilir. Böyle bir durumda yokluk hipotezini reddetmek zorlaşır (tabahnick?).
ANOVA (Analysis of Variance)’nın üç temel varsayımı bulunmaktadır. Bu varsayımlar aşağıdaki gibidir.
Normallik
Varyansların eşitliği
Bağımsızlık (Carter, n.d.)
İlişkili örneklemlerde tek yönlü ANOVA için seçilen veri setinde iki grup (deney ve kontrol) bulunmaktadır ancak bu gruplardan yalnızca deney grubuna ait olan veriler alınmıştır. Zenginleştirilmiş ortam olan müdahale, 6 aylık bebekliklerinden itibaren deney grubuna yapılmıştır ve 1 yaş, 1.5 yaş ve 2 yaşında bu müdahale sonucunda bebeklerin bilişsel skorları ölçülmüştür. Yapacağımız analizde ise yaş gruplarında deney grubunda olan bebeklerin bilişsel skorlarında anlamlı bir farklılık oluşup oluşmadığı değerlendirilecektir. Bu kapsamda problem durumu ve hipotezler aşağıdaki gibi hazırlanmıştır.
Problem durumu: Zenginleştirilmiş ortam müdahalesi bebeklerin 1, 1.5 ve 2 yaşlarında bilişsel skorlarında anlamlı farklılığı sağlar mı?
H0 : Zenginleştirilmiş ortam müdahalesi bebeklerin 1, 1.5 ve 2 yaşlarında bilişsel skorlarında anlamlı farklılığa neden olmaz.
H1 : Zenginleştirilmiş ortam müdahalesi bebeklerin 1, 1.5 ve 2 yaşlarında bilişsel skorlarında anlamlı farklılığa neden olur.
Yukarıda da bahsettiğimiz gibi yalnızca deney grubunda olan bebeklerin 3 farklı ölçümünden elde edilen bilişsel skorlarına müdahalenin anlamlı farklılık oluşturup oluşturmadığı analiz edilecektir. 58 deney ve 45 kontrol grubundan oluşan bu veri setinde düşük sosyoekonomik duruma sahip Afro-Amerikan ailelelerin bebekleri yer almaktadır. Bizim analizde kullanacağımız grup olan deney grubuna 6 aydan itibaren zenginleştirilmiş ortam müdahalesi yapılmaya başlanmıştır.
Veri seti aşağıdaki gibi R ortamına aktarılır. Öncesinde install.packages() ile readxl paketi yüklenir.
library(readxl)
earlychild <- read_xlsx("earlychild.xlsx")
Veri setinde üç farklı zamanda bebeklere uygulanan bilişsel testin sonuçları yer almaktadır. Burada zenginleştirilmiş ortam müdahalesinin yaşları değiştikçe bebeklerde anlamlı bir farklılık yaratıp yaratmadığı analiz edilecektir. Öncesinde betimsel istatistiklerinin incelenmesi ve normallik analizinin yapılması önemlidir.
Bu verileri gruplayarak (örn; bebeklerin 1., 1,5. ve 2. yaşı) betimsel istatistikleri ortaya çıkarabiliriz. group_by() fonksiyonu dplyr paketinde yer almaktadır. install.packages ile öncelikle bu paketin yüklenmesi ve library ile aktif hale getirilmesi gerekmektedir.
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
betimsel <- earlychild %>%
filter(age == 1) %>%
summarise(mean_cog = mean(cog, na.rm = TRUE),
median_cog = median(cog, na.rm = TRUE),
sd_cog = sd(cog, na.rm = TRUE),
min_cog = min(cog, na.rm = TRUE),
max_cog = max(cog, na.rm = TRUE))
Daha fazla betimsel istatistiğe ulaşmak için psych paketindeki describe fonksiyonunu da kullanabiliriz. Aşağıda bu fonksiyonun kullanım örneği verilmiştir.
library(dplyr)
library(psych)
age_1_data <- filter(earlychild, age == 1)
cog_age_1 <- describe(age_1_data$cog)
Tablo 1
Yaş 1 için Betimsel İstatistikler
colnames(cog_age_1) <- c("Değişken Sayısı", "n", "Ortalama", "Standart Sapma","Medyan", "Trimmed", "Medyana Olan Uzaklık", "Minimum", "Maksimum", "Ranj", "Çarpıklık", "Basıklık", "Standart Hata")
knitr::kable(cog_age_1)
| Değişken Sayısı | n | Ortalama | Standart Sapma | Medyan | Trimmed | Medyana Olan Uzaklık | Minimum | Maksimum | Ranj | Çarpıklık | Basıklık | Standart Hata | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| X1 | 1 | 58 | 112.931 | 14.93478 | 112 | 113.875 | 14.0847 | 57 | 137 | 80 | -0.9470501 | 1.941336 | 1.961033 |
1, 5 yaşında bebekleirn elde ettikleri puanlara ilişkin betimsel istatistikler Tablo 2’de sunulmuştur.
Tablo 2
Yaş 1, 5 için Betimsel İstatistikler
age_1.5_data <- filter(earlychild, age == "1, 5")
cog_age_1.5 <- describe(age_1.5_data$cog)
colnames(cog_age_1.5) <- c("Değişken Sayısı", "n", "Ortalama", "Standart Sapma","Medyan", "Trimmed", "Medyana Olan Uzaklık", "Minimum", "Maksimum", "Ranj", "Çarpıklık", "Basıklık", "Standart Hata")
knitr::kable(cog_age_1.5)
| Değişken Sayısı | n | Ortalama | Standart Sapma | Medyan | Trimmed | Medyana Olan Uzaklık | Minimum | Maksimum | Ranj | Çarpıklık | Basıklık | Standart Hata | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| X1 | 1 | 58 | 110.2931 | 13.82727 | 109 | 110.8125 | 13.3434 | 68 | 136 | 68 | -0.4351118 | 0.4519882 | 1.815609 |
Tablo 3
Yaş 2 için Betimsel İstatistikler
age_2_data <- filter(earlychild, age == 2)
cog_age_2 <- describe(age_2_data$cog)
colnames(cog_age_2) <- c("Değişken Sayısı", "n", "Ortalama", "Standart Sapma","Medyan", "Trimmed", "Medyana Olan Uzaklık", "Minimum", "Maksimum", "Ranj", "Çarpıklık", "Basıklık", "Standart Hata")
knitr::kable(cog_age_2)
| Değişken Sayısı | n | Ortalama | Standart Sapma | Medyan | Trimmed | Medyana Olan Uzaklık | Minimum | Maksimum | Ranj | Çarpıklık | Basıklık | Standart Hata | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| X1 | 1 | 58 | 97.06897 | 10.63899 | 96 | 97.14583 | 11.8608 | 72 | 116 | 44 | -0.0724021 | -0.4377726 | 1.396968 |
Yaşlara göre katılımcılar incelendiğinde eksik veri bulunmadığına ve uç değer bulunmadığına ulaşılmıştır. Her yaş grubu için çarpıklık ve basıklık değerleri normallik varsayımını desteklemektedir (Mishra et al. 2019)
Gerekli paketler
tidyverse ggpubr rstatix ggplot2
#install.packages("ggpubr")
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats 1.0.0 ✔ readr 2.1.4
## ✔ ggplot2 3.4.4 ✔ stringr 1.5.0
## ✔ lubridate 1.9.3 ✔ tibble 3.2.1
## ✔ purrr 1.0.2 ✔ tidyr 1.3.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ ggplot2::%+%() masks psych::%+%()
## ✖ ggplot2::alpha() masks psych::alpha()
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(ggpubr)
library(rstatix)
##
## Attaching package: 'rstatix'
##
## The following object is masked from 'package:stats':
##
## filter
library(dplyr)
anova_test() [rstatix package]
data: data frame dv: (numeric) the dependent (or outcome) variable name. wid: variable name specifying the case/sample identifier. within: within-subjects factor or grouping variable get_anova_table() [rstatix package]. Extracts the ANOVA table from the output of anova_test().
earlychild %>%
filter(age==1) %>%
shapiro_test(cog)
## # A tibble: 1 × 3
## variable statistic p
## <chr> <dbl> <dbl>
## 1 cog 0.939 0.00601
earlychild %>%
filter(age== "1, 5") %>%
shapiro_test(cog)
## # A tibble: 1 × 3
## variable statistic p
## <chr> <dbl> <dbl>
## 1 cog 0.970 0.161
earlychild %>%
filter(age==2) %>%
shapiro_test(cog)
## # A tibble: 1 × 3
## variable statistic p
## <chr> <dbl> <dbl>
## 1 cog 0.970 0.157
ggqqplot(earlychild, "cog", facet.by = "age")
lm.model <- lm(cog~age, earlychild)
summary(lm.model)
##
## Call:
## lm(formula = cog ~ age, data = earlychild)
##
## Residuals:
## Min 1Q Median 3Q Max
## -55.931 -7.293 -0.931 9.069 25.707
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 112.931 1.741 64.864 < 2e-16 ***
## age1, 5 -2.638 2.462 -1.071 0.286
## age2 -15.862 2.462 -6.442 1.15e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 13.26 on 171 degrees of freedom
## Multiple R-squared: 0.218, Adjusted R-squared: 0.2088
## F-statistic: 23.83 on 2 and 171 DF, p-value: 7.415e-10
aov.model <- aov(cog ~ age, earlychild)
summary(aov.model)
## Df Sum Sq Mean Sq F value Pr(>F)
## age 2 8380 4190 23.83 7.42e-10 ***
## Residuals 171 30063 176
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
res.aov <- anova_test(data = earlychild, dv = cog, wid = id, within = age)
get_anova_table(res.aov)
## ANOVA Table (type III tests)
##
## Effect DFn DFd F p p<.05 ges
## 1 age 1.81 102.96 55.501 4.3e-16 * 0.218
Etki Büyüklüğü
pwc <- earlychild %>%
pairwise_t_test(
cog~age, paired = TRUE,
p.adjust.method = "bonferroni"
)
pwc
## # A tibble: 3 × 10
## .y. group1 group2 n1 n2 statistic df p p.adj p.adj.signif
## * <chr> <chr> <chr> <int> <int> <dbl> <dbl> <dbl> <dbl> <chr>
## 1 cog 1 1, 5 58 58 1.62 57 1.1 e- 1 3.3 e- 1 ns
## 2 cog 1 2 58 58 8.70 57 4.77e-12 1.43e-11 ****
## 3 cog 1, 5 2 58 58 9.73 57 1.03e-13 3.09e-13 ****
Rapor