R'de aov() yerine anova() ne zaman kullanılır?
R’deki aov() ve anova() işlevleri benzer görünse de aslında bunları iki farklı senaryoda kullanıyoruz.
Bir ANOVA modeline sığdırmak ve sonuçları bir ANOVA özet tablosunda görüntülemek istediğimizde aov() kullanırız.
Belirli bir katsayılar dizisine sahip bir regresyon modelinin, yalnızca bir katsayılar alt kümesine sahip bir modele göre önemli ölçüde daha iyi bir uyum sağlayıp sağlamadığını belirlemek için iç içe regresyon modellerinin uyumunu karşılaştırmak istediğimizde anova() kullanırız.
Aşağıdaki örnekler her bir fonksiyonun pratikte nasıl kullanılacağını göstermektedir.
Örnek 1: R’de aov() nasıl kullanılır?
Diyelim ki üç farklı egzersiz programının kilo kaybı üzerinde farklı bir etkiye sahip olup olmadığını belirlemek için tek yönlü bir ANOVA yapmak istiyoruz.
Bir ay boyunca Program A, Program B veya Program C’yi takip etmek üzere rastgele 30 kişiyi atadığımız bir deneye katılmak üzere 90 kişiyi işe alıyoruz.
Aşağıdaki kod, bu tek yönlü ANOVA’yı gerçekleştirmek için R’de aov() işlevinin nasıl kullanılacağını gösterir:
#make this example reproducible set. seeds (0) #create data frame df <- data. frame (program = rep(c("A", "B", "C"), each= 30 ), weight_loss = c(runif(30, 0, 3), runif(30, 0, 5), runif(30, 1, 7))) #fit one-way anova using aov() fit <- aov(weight_loss ~ program, data=df) #view results summary(fit) Df Sum Sq Mean Sq F value Pr(>F) program 2 98.93 49.46 30.83 7.55e-11 *** Residuals 87 139.57 1.60 --- Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Model sonuçlarından programın p değerinin (0,0000000000755) 0,05’ten küçük olduğunu görebiliyoruz, bu da üç program arasında ortalama kilo kaybı açısından istatistiksel olarak anlamlı bir fark olduğu anlamına geliyor.
Örnek 2: R’de anova() nasıl kullanılır?
Belirli bir üniversitedeki öğrencilerin sınav puanlarını tahmin etmek için çalışılan saat sayısını kullanmak istediğimizi varsayalım. Aşağıdaki iki regresyon modelini uyarlamaya karar verebiliriz:
Tam model: puan = β 0 + B 1 (saat) + B 2 (saat) 2
İndirgenmiş model: puan = β 0 + B 1 (saat)
Aşağıdaki kod, tam modelin azaltılmış modelden önemli ölçüde daha iyi bir uyum sağlayıp sağlamadığını belirlemek amacıyla uyum eksikliği testi gerçekleştirmek için R’deki anova() işlevinin nasıl kullanılacağını gösterir:
#make this example reproducible
set. seeds (1)
#create dataset
df <- data.frame(hours = runif(50, 5, 15), score=50)
df$score = df$score + df$hours^3/150 + df$hours*runif(50, 1, 2)
#view head of data
head(df)
hours score
1 7.655087 64.30191
2 8.721239 70.65430
3 10.728534 73.66114
4 14.082078 86.14630
5 7.016819 59.81595
6 13.983897 83.60510
#fit full model
full <- lm(score ~ poly(hours,2), data=df)
#fit reduced model
reduced <- lm(score ~ hours, data=df)
#perform lack of fit test using anova()
anova(full, reduced)
Analysis of Variance Table
Model 1: score ~ poly(hours, 2)
Model 2: score ~ hours
Res.Df RSS Df Sum of Sq F Pr(>F)
1 47 368.48
2 48 451.22 -1 -82.744 10.554 0.002144 **
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Çıktı tablosundaki p değeri (0,002144) 0,05’ten küçük olduğundan, testin sıfır hipotezini reddedebilir ve tam modelin indirgenmiş modelden istatistiksel olarak anlamlı derecede daha iyi bir uyum sağladığı sonucuna varabiliriz.
Ek kaynaklar
Aşağıdaki eğitimlerde R’de diğer ortak görevlerin nasıl gerçekleştirileceği açıklanmaktadır:
R’de tek yönlü ANOVA nasıl gerçekleştirilir
R’de iki yönlü ANOVA nasıl gerçekleştirilir
R’de tekrarlanan ölçümler ANOVA nasıl gerçekleştirilir?