R'de uyum eksikliği testi nasıl yapılır (adım adım)


Tam regresyon modelinin, modelin azaltılmış versiyonuna göre veri setine önemli ölçüde daha iyi uyum sağlayıp sağlamadığını belirlemek için uyum eksikliği testi kullanılır.

Örneğin, 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

Azaltılmış model: puan = β 0 + B 1 (saat)

Aşağıdaki adım adım örnek, tam modelin azaltılmış modelden önemli ölçüde daha iyi bir uyum sağlayıp sağlamadığını belirlemek için R’de uyum eksikliği testinin nasıl gerçekleştirileceğini gösterir.

1. Adım: Veri kümesi oluşturun ve görselleştirin

İlk olarak, 50 öğrenci için çalışılan saat sayısını ve kazanılan sınav puanlarını içeren bir veri kümesi oluşturmak için aşağıdaki kodu kullanacağız:

 #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 first six rows 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

Daha sonra saatlerle puan arasındaki ilişkiyi görselleştirmek için bir dağılım grafiği oluşturacağız:

 #load ggplot2 visualization package
library (ggplot2)

#create scatterplot
ggplot(df, aes (x=hours, y=score)) +
  geom_point() 

Adım 2: İki farklı modeli veri kümesine yerleştirin

Daha sonra veri kümesine iki farklı regresyon modeli yerleştireceğiz:

 #fit full model
full <- lm(score ~ poly (hours,2), data=df)

#fit reduced model
reduced <- lm(score ~ hours, data=df)

3. Adım: Uyum eksikliği testi yapın

Daha sonra, iki model arasında uyum eksikliği testi gerçekleştirmek için anova() komutunu kullanacağız:

 #lack of fit test
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

F testi istatistiği 10,554 ve buna karşılık gelen p değeri 0,002144 olarak ortaya çıkıyor. Bu p değeri 0,05’ten küçük olduğundan testin sıfır hipotezini reddedebilir ve tam modelin indirgenmiş modele göre istatistiksel olarak anlamlı derecede daha iyi bir uyum sağladığı sonucuna varabiliriz.

4. Adım: Son modeli görselleştirin

Son olarak, nihai modeli (tam model) orijinal veri kümesine göre görselleştirebiliriz:

 ggplot(df, aes (x=hours, y=score)) + 
          geom_point() +
          stat_smooth(method=' lm ', formula = y ~ poly (x,2), size = 1) + 
          xlab(' Hours Studied ') +
          ylab(' Score ') 

R'de uyum eksikliğini görselleştirme

Model eğrisinin verilere oldukça iyi uyum sağladığını görebiliriz.

Ek kaynaklar

R’de basit doğrusal regresyon nasıl gerçekleştirilir
R’de çoklu doğrusal regresyon nasıl gerçekleştirilir
R’de polinom regresyonu nasıl gerçekleştirilir

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir