R ANOVA Eğitimi: Tek yönlü ve Çift yönlü (Örneklerle)

ANOVA nedir?

Varyans Analizi (ANOVA), iki veya daha fazla grup ortalaması arasındaki farkları incelemek için yaygın olarak kullanılan bir istatistiksel tekniktir. ANOVA testi, tipik bir değişkendeki farklı varyasyon kaynaklarına odaklanır. R'deki ANOVA, öncelikle gruplar arasındaki ortalama eşitliğinin varlığına dair kanıt sağlar. Bu istatistiksel yöntem, t-testinin bir uzantısıdır. Faktör değişkeninin birden fazla gruba sahip olduğu durumlarda kullanılır.

Tek yönlü ANOVA

Birden fazla grup arasındaki ortalamayı karşılaştırmanız gereken birçok durum vardır. Örneğin pazarlama departmanı üç ekibin aynı satış performansına sahip olup olmadığını bilmek istiyor.

  • Takım: 3 seviye faktörü: A, B ve C
  • Satış: Bir performans ölçüsü

ANOVA testi üç grubun benzer performanslara sahip olup olmadığını söyleyebilir.

Verilerin aynı popülasyondan gelip gelmediğini netleştirmek için tek yönlü varyans analizi (bundan sonra tek yönlü ANOVA). Bu test, diğer istatistiksel testler gibi, H0 hipotezinin kabul edilip edilmeyeceğine dair kanıt sağlar.

Tek yönlü ANOVA testinde hipotez

  • H0: Gruplar arasındaki ortalamalar aynıdır
  • H3: En azından bir grubun ortalaması farklıdır

Başka bir deyişle, H0 hipotezi, grubun (faktörün) ortalamasının diğerinden farklı olduğunu kanıtlayacak yeterli kanıtın olmadığını ima eder.

Bu test t-testine benzerdir, ancak 2'den fazla gruplu durumlarda ANOVA testi önerilir. Bunun dışında t-testi ve ANOVA benzer sonuçlar sağlar.

varsayımlar

Her faktörün rastgele örneklendiğini, bağımsız olduğunu ve bilinmeyen ancak eşit varyanslara sahip normal dağılıma sahip bir popülasyondan geldiğini varsayıyoruz.

ANOVA testini yorumlayın

F istatistiği, verilerin önemli ölçüde farklı popülasyonlardan, yani farklı örnek ortalamalarından olup olmadığını test etmek için kullanılır.

F istatistiğini hesaplamak için bölmeniz gerekir. gruplar arası değişkenlik üzerinde grup içi değişkenlik.

The grup arası Değişkenlik, popülasyonun tamamı içindeki gruplar arasındaki farklılıkları yansıtır. Gruplar arası varyans kavramını anlamak için aşağıdaki iki grafiğe bakın.

Soldaki grafik, üç grup arasında çok az farklılık gösteriyor ve üç ortalamanın da aynı eğilimde olması çok muhtemel. tüm ortalama (yani üç grup için ortalama).

Sağdaki grafik birbirinden uzak üç dağılımı gösteriyor ve hiçbiri örtüşmüyor. Toplam ortalama ile grup ortalaması arasındaki farkın büyük olma ihtimali yüksektir.

ANOVA testini yorumlayın

The grup içinde değişkenlik gruplar arasındaki farkı dikkate alır. Çeşitlilik bireysel gözlemlerden gelir; bazı noktalar grup ortalamalarından tamamen farklı olabilir. grup içinde değişkenlik bu etkiyi alır ve örnekleme hatasına atıfta bulunur.

Grup içi değişkenlik kavramını görsel olarak anlamak için aşağıdaki grafiğe bakın.

Sol kısım üç farklı grubun dağılımını gösteriyor. Her örneğin yayılımını artırdınız ve bireysel varyansın büyük olduğu açık. F testi azalacak, bu da boş hipotezi kabul etme eğiliminde olacağınız anlamına geliyor

Sağ kısım tamamen aynı örnekleri (aynı ortalama) ancak daha düşük değişkenlikle gösterir. F testinin artmasına yol açar ve alternatif hipotez lehine eğilim gösterir.

ANOVA testini yorumlayın

F istatistiklerini oluşturmak için her iki ölçümü de kullanabilirsiniz. F istatistiğini anlamak çok sezgiseldir. Payın artması gruplar arası değişkenliğin yüksek olduğu anlamına gelir ve örneklemdeki grupların tamamen farklı dağılımlardan oluşması muhtemeldir.

Başka bir deyişle, düşük bir F istatistiği, grubun ortalamaları arasında çok az veya hiç anlamlı fark olmadığını gösterir.

Örnek Tek yönlü ANOVA Testi

Tek yönlü ANOVA testini uygulamak için zehir veri setini kullanacaksınız. Veri seti 48 satır ve 3 değişken içeriyor:

  • Zaman: Hayvanın hayatta kalma süresi
  • zehir: Kullanılan zehir türü: faktör düzeyi: 1,2 ve 3
  • tedavi: Kullanılan tedavi türü: faktör düzeyi: 1,2 ve 3

ANOVA testini hesaplamaya başlamadan önce, verileri aşağıdaki gibi hazırlamanız gerekir:

  • 1. Adım: Verileri içe aktarın
  • 2. Adım: Gereksiz değişkeni kaldırın
  • Adım 3: Zehir değişkenini sıralı seviyeye dönüştürün
library(dplyr)
PATH <- "https://raw.githubusercontent.com/guru99-edu/R-Programming/master/poisons.csv"
df <- read.csv(PATH) %>%
select(-X) %>% 
mutate(poison = factor(poison, ordered = TRUE))
glimpse(df)

Çıktı:

## Observations: 48
## Variables: 3
## $ time   <dbl> 0.31, 0.45, 0.46, 0.43, 0.36, 0.29, 0.40, 0.23, 0.22, 0...
## $ poison <ord> 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 1, 1, 1, 1, 2, 2, 2...
## $ treat  <fctr> A, A, A, A, A, A, A, A, A, A, A, A, B, B, B, B, B, B, ...		

Amacımız aşağıdaki varsayımı test etmektir:

  • H0: Gruplar arasında hayatta kalma süresi ortalamasında fark yok
  • H3: Hayatta kalma süresi ortalaması en az bir grup için farklıdır.

Yani kobaylara verilen zehirin türüne göre hayatta kalma süreleri ortalamaları arasında istatistiksel bir fark olup olmadığını bilmek istiyorsunuz.

Aşağıdaki gibi ilerleyeceksin:

  • Adım 1: zehir değişkeninin biçimini kontrol edin
  • Adım 2: Özet istatistiği yazdırın: sayım, ortalama ve standart sapma
  • Adım 3: Bir kutu grafiği çizin
  • Adım 4: Tek yönlü ANOVA testini hesaplayın
  • Adım 5: Çiftler arası t-testi çalıştırın

) 1 Adım Aşağıdaki kodla zehir seviyesini kontrol edebilirsiniz. Mutate fiili ile faktörde dönüştürdüğünüz için üç karakter değeri görmelisiniz.

levels(df$poison)

Çıktı:

## [1] "1" "2" "3"

) 2 Adım Ortalamayı ve standart sapmayı hesaplarsınız.

df % > %
	group_by(poison) % > %
	summarise(
		count_poison = n(),
		mean_time = mean(time, na.rm = TRUE),
		sd_time = sd(time, na.rm = TRUE)
	)

Çıktı:

## 
# A tibble: 3 x 4
##   poison count_poison mean_time    sd_time
##    <ord>        <int>     <dbl>      <dbl>
## 1      1           16  0.617500 0.20942779
## 2      2           16  0.544375 0.28936641
## 3      3           16  0.276250 0.06227627

) 3 Adım Üçüncü adımda dağılımlar arasında fark olup olmadığını grafiksel olarak kontrol edebilirsiniz. Titreşen noktayı dahil ettiğinizi unutmayın.

ggplot(df, aes(x = poison, y = time, fill = poison)) +
    geom_boxplot() +
    geom_jitter(shape = 15,
        color = "steelblue",
        position = position_jitter(0.21)) +
    theme_classic()

Çıktı:

Tek yönlü ANOVA Testi Örneği

) 4 Adım Tek yönlü ANOVA testini aov komutuyla çalıştırabilirsiniz. ANOVA testi için temel sözdizimi şudur:

aov(formula, data)
Arguments:			
- formula: The equation you want to estimate
- data: The dataset used	

Formülün sözdizimi şöyledir:

y ~ X1+ X2+...+Xn # X1 +  X2 +... refers to the independent variables
y ~ . # use all the remaining variables as independent variables

Kobaylara verilen zehirin türünü bilerek, kobayların hayatta kalma sürelerinde bir fark var mıdır diye sorumuza cevap verebilirsiniz.

Sonuçların daha iyi yazdırılması için modeli saklamanız ve Summary() işlevini kullanmanız tavsiye edilir.

anova_one_way <- aov(time~poison, data = df)
summary(anova_one_way)

Kod Açıklama

  • aov(zaman ~ zehir, veri = df): Aşağıdaki formülle ANOVA testini çalıştırın
  • summary(anova_one_way): Testin özetini yazdır

Çıktı:

##             Df Sum Sq Mean Sq F value   Pr(>F)
## poison       2  1.033  0.5165   11.79 7.66e-05 ***
## Residuals   45  1.972  0.0438                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

P değeri olağan eşik olan 0.05'ten düşüktür. “*” ile gösterilen gruplar arasında istatistiksel bir fark olduğunu rahatlıkla söyleyebilirsiniz.

Çiftler arası karşılaştırma

Tek yönlü ANOVA testi hangi grubun farklı bir ortalamaya sahip olduğunu bildirmez. Bunun yerine TukeyHSD() fonksiyonuyla bir Tukey testi gerçekleştirebilirsiniz.

TukeyHSD(anova_one_way)

Çıktı:

Çiftler arası karşılaştırma

İki yönlü ANOVA

İki yönlü ANOVA testi formüle başka bir grup değişkeni ekler. Tek yönlü ANOVA testiyle aynıdır, ancak formül biraz değişir:

y=x1+x2

with niceliksel bir değişkendir ve ve kategorik değişkenlerdir.

İki yönlü ANOVA testinde hipotez

  • H0: Ortalamalar her iki değişken için de eşittir (yani faktör değişkeni)
  • H3: Her iki değişkenin ortalamaları farklıdır

Modelimize tedavi değişkenini eklersiniz. Bu değişken kobaylara uygulanan tedaviyi gösterir. Zehir ile Gine domuzuna verilen tedavi arasında istatistiksel bir bağımlılık olup olmadığını görmek istiyorsunuz.

Diğer bağımsız değişkenin yanına Treat ekleyerek kodumuzu ayarlıyoruz.

anova_two_way <- aov(time~poison + treat, data = df)
summary(anova_two_way)

Çıktı:

##             Df Sum Sq Mean Sq F value  Pr(>F)    
## poison       2 1.0330  0.5165   20.64 5.7e-07 ***
## treat        3 0.9212  0.3071   12.27 6.7e-06 ***
## Residuals   42 1.0509  0.0250                    
## ---

Hem zehirin hem de tedavinin istatistiksel olarak 0'dan farklı olduğu sonucuna varabilirsiniz. NULL hipotezini reddedebilir ve tedaviyi veya zehiri değiştirmenin hayatta kalma süresini etkilediğini doğrulayabilirsiniz.

ÖZET

Testi aşağıdaki tabloda özetleyebiliriz:

test Kod Hipotez P-değeri
Tek yönlü ANOVA
aov(y ~ X, data = df)
H3: Ortalama en az bir grup için farklıdır 0.05
ikili
TukeyHSD(ANOVA summary)
0.05
İki yönlü ANOVA
aov(y ~ X1 + X2, data = df)
H3: Ortalama her iki grupta da farklıdır 0.05