Küçük örneklemli deneysel araştırmalarda istatistiksel analiz

Deneysel çalışmalar yaygın olarak her bir grupta 30’un altında kişi sayısı olacak şekilde uygulanırlar. Örneğin bir ilacın verildiği ve verilmediği iki grupta 15’er kişi olabilir. Başka bir örnek verirsek bir eğitimi alan ve almayan gruplarda 18’er kişi olabilir.

Gruplardaki kişi sayılarının küçük olduğu ve tekrarlı ölçümün bulunduğu durumlarda ANOVA’nın varsayımlarını karşılamak çoğu kez mümkün olmaz. Bu tür durumlarda bir dağılım şartı bulunmayan non-parametrik testlerden birisi olan Brunner ve arkadaşlarının (2002) geliştirdiği f1-ld-f1 desenine uygun test uygulanabilir.

Bu test bir değişkenin farklı gruplarda birden çok defa ölçüldüğü durumlarda kullanılabilecek olan ve sıra ortalamalarını karşılaştıran bir testtir.

Bunu tekrarlamakta yarar var çünkü bu test geleneksel olarak kullandığımız ortalamaları karşılaştırmaz. Karşılaştırdığı şey puanlar sıraya dizildiğinde bu sıralamaların ortalamasının aynı kalıp kalmadığıdır. Şöyle örneklendirebiliriz:

 Ölçüm
GrupÖntestSontest
1 (Deney)1732
1 (Deney)1830
1 (Deney)2029
2 (Kontrol)1522
2 (Kontrol)2123
2 (Kontrol)1922

Yukarıdaki tabloda deney ve kontrol gruplarındaki kişilerin öntest ve sontest puanları bulunuyor. Şimdi bunları sıralama düzeyine dönüştürelim. Bu işlemi yaparken en küçük değere 1 vereceğiz, en yüksek değere doğru sırasıyla 2,3,4 şeklinde sıralandıracağız.

 Ölçüm
GrupÖntestSontest
1 (Deney)212
1 (Deney)311
1 (Deney)59,5
2 (Kontrol)17,5
2 (Kontrol)69,5
2 (Kontrol)47,5

Görüleceği gibi deney grubundaki bireyler ikincilikten onikinciliğe, üçüncülükten onbirinciliğe yükselirken (evet yükselmek, sıralamanın mantığı gereği puanı artmış anlamında yükselmek) kontrol grubu birincilikten yedibuçukunculuğa, altıncılıktan dokuzbuçukunculuğa yükselmiştir. İşte bu iki grubun artışları anlamlı mıdır değil midir? Bu sorunun cevabını Brunner ve arkadaşlarının geliştirdiği test ile bulabiliriz.

Bunu yapabilmek için verilerinin aşağıdaki formatta girili olması gerekmektedir:

grupbireyolcumpuan
11145
11236
12127
12248
23156
23228
24134
24239

Henüz bu verileri R ile analiz etmekten başka bir yol bulunmuyor. O nedenle veri dosyasını RStudio veya Positron programına aktararak öyle devam edebilirsiniz.

Ardından analizi yapacak olan kodları aşağıdaki gibi kullanabilirsiniz.

install.packages("nparLD")
library(nparLD)
data(veri_dosyasi_adi)
attach(veri_dosyasi_adi)
sonuc<-f1.ld.f1(y=puan, time=olcum, group=grup, subject=birey)

Analiz sonuçlarını görmek için

sonuc$ANOVA.test

yazmak yeterlidir. Aşağıdaki gibi bir çıktı karşımıza çıkacaktır:

          Statistic       df      p-value
olcum       2.352854 1.968147      0.091
grup       21.389142 2.729147      0.000
grup:olcum  3.113632 5.346834      0.006

Yukarıda grup:olcum kısmı grupların öntestten sonteste farklı ilerleme gösterip göstermediğini analiz eden kısımdır. Buradaki p değerinin 0.05’ten küçük olması etkileşimin anlamlı olduğunu göstermektedir. Gruplardan ikisinin de ön testten son teste aynı oranda değişim gösterdiğini iddia eden sıfır hipotezini reddetmek için önemli bir bilgi edinilmiş demektir.

Grupların hangisinin daha iyi ilerleme gösterdiğini görebilmek için iki grup varsa betimsel istatistiklere bakmak yeterlidir. Üç ölçüm, üç grup veya daha fazlası varsa bu durumda nonparametrik post-hoc testleri uygulamanız gerekecektir. Onu da aşağıdaki gibi yapabilirsiniz.

sonuc$pairwise.comparison isteyerek post-hoc’lar istenebilir ama bu post-hoc değerleri yeterince ayrıntılı değildir. Bu nedenle başka bir paket ile bonferroni düzeltmesi yaparak hem her birölçüm düzeyinde hem de her bir grup düzeyinde karşılaştırmalar yapılabilir. Bunun için aşağıdaki kodlar kullanılabilir:

Önce örnek veri dosyasını nasıl üretiriz onu öğrenelim:

set.seed(42)

time_levels <- c(1, 2, 3, 4)
group_levels <- c(“D0”, “D1”, “D2”)

data <- data.frame()

for (time in time_levels) {
for (group in group_levels) {
if (group == “D0”) {
resp <- rnorm(25, mean = 10 + time, sd = time * 0.5)
} else if (group == “D1”) {
resp <- rnorm(30, mean = 12 + time * 1.2, sd = time * 0.7)
} else if (group == “D2”) {
resp <- rnorm(20, mean = 14 – time * 0.8, sd = time * 0.6)
}
# Veriyi birleştir
temp <- data.frame(time = rep(time, length(resp)), group = rep(group, length(resp)), resp = resp)
data <- rbind(data, temp)
}
}

şimdi post-hoc analizi yapabiliriz.

once
install.packages(“nparcomp”)
library(nparcomp)

library(dplyr)

Her bir zaman düzeyi için analiz

for (time in unique(data$time)) {
# dplyr kullanarak filtreleme
specific_year <- data %>% filter(time == !!time)

# Zaman düzeyini ve satır sayısını yazdır
cat(“\nTime level:”, time, ” – Number of rows:”, nrow(specific_year), “\n”)

# Eğer yeterli veri yoksa analiz yapma
if (nrow(specific_year) < 2) {
cat(“Not enough data for analysis.\n”)
next
}

# nparcomp ile analiz
result <- mctp(resp ~ group, data = specific_year,
type = “Tukey”, alternative = “two.sided”)

# Analiz sonuçlarını özetle
analysis_table <- summary(result)$Analysis.Inf

# Orijinal p-değerlerini al
original_p_values <- analysis_table$p.Value

# Bonferroni düzeltmesi uygula
adjusted_p_values <- p.adjust(original_p_values, method = “bonferroni”)

# Adjusted p-değerlerini tabloya ekle
analysis_table$Adjusted_P <- adjusted_p_values

# Sonuçları yazdır
print(analysis_table)
}

Bu kodlar ile her bir ölçüm düzeyinde grupları karşılaştırılır. İki tane p değeri olacaktır. Birisi normal p değerleri diğerleri ise adjusted olanları gösterir. Adjusted olanları kullanmak daha uygun olur.

Aşağıdaki kod ile ise her bir grup için ön-son-izleme karşılaştırması yapılabilir ve p değerleri elde edilebilir. Yine adjusted olanları kullanılırsa iyi olur.

Her bir zaman düzeyi için analiz

for (group in unique(data$group)) {
# dplyr kullanarak filtreleme
specific_group <- data %>% filter(group == !!group)

# Zaman düzeyini ve satır sayısını yazdır
cat(“\nGroup level:”, group, ” – Number of rows:”, nrow(specific_group), “\n”)

# Eğer yeterli veri yoksa analiz yapma
if (nrow(specific_group) < 2) {
cat(“Not enough data for analysis.\n”)
next
}

# nparcomp ile analiz
result <- mctp(resp ~ olcum, data = specific_group,
type = “Tukey”, alternative = “two.sided”)

# Analiz sonuçlarını özetle
analysis_table <- summary(result)$Analysis.Inf

# Orijinal p-değerlerini al
original_p_values <- analysis_table$p.Value

# Bonferroni düzeltmesi uygula
adjusted_p_values <- p.adjust(original_p_values, method = “bonferroni”)

# Adjusted p-değerlerini tabloya ekle
analysis_table$Adjusted_P <- adjusted_p_values

# Sonuçları yazdır
print(analysis_table)
}

Bu kodlarda olcum_degiskeni_adi = Ontest-sontest izleme olduğunu gösteren değişkenin adı, grup_degiskeni_adi= grupların kodlarını gösteren değişkenin adı, puan_adi = ölçekten elde edilen puanları gösteren değişkenin adını, veri_adi ise veri dosyasının adını ifade eder.

Brunner, E., Domhof, S., and Langer, F. (2002). Nonparametric Analysis of Longitudinal Data in Factorial Experiments, Wiley, New York.


Yayımlandı

kategorisi

yazarı:

Etiketler:

Yorumlar

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir