R'de ols regresyon nasıl gerçekleştirilir (örnekle)
Sıradan en küçük kareler (OLS) regresyonu, bir veya daha fazla yordayıcı değişken ile bir yanıt değişkeni arasındaki ilişkiyi en iyi tanımlayan doğruyu bulmamızı sağlayan bir yöntemdir.
Bu yöntem aşağıdaki denklemi bulmamızı sağlar:
ŷ = b 0 + b 1 x
Altın:
- ŷ : Tahmini yanıt değeri
- b 0 : Regresyon çizgisinin başlangıcı
- b 1 : Regresyon çizgisinin eğimi
Bu denklem, yordayıcı ile yanıt değişkeni arasındaki ilişkiyi anlamamıza yardımcı olabilir ve yordayıcı değişkenin değeri göz önüne alındığında, bir yanıt değişkeninin değerini tahmin etmek için kullanılabilir.
Aşağıdaki adım adım örnek, R’de OLS regresyonunun nasıl gerçekleştirileceğini gösterir.
1. Adım: Verileri oluşturun
Bu örnekte 15 öğrenci için aşağıdaki iki değişkeni içeren bir veri seti oluşturacağız:
- Toplam çalışılan saat sayısı
- Sınav sonucu
Tahmin edici değişken olarak saatleri ve yanıt değişkeni olarak sınav puanını kullanarak bir OLS regresyonu gerçekleştireceğiz.
Aşağıdaki kod, bu sahte veri kümesinin R’de nasıl oluşturulacağını gösterir:
#create dataset df <- data. frame (hours=c(1, 2, 4, 5, 5, 6, 6, 7, 8, 10, 11, 11, 12, 12, 14), score=c(64, 66, 76, 73, 74, 81, 83, 82, 80, 88, 84, 82, 91, 93, 89)) #view first six rows of dataset head(df) hours score 1 1 64 2 2 66 3 4 76 4 5 73 5 5 74 6 6 81
2. Adım: Verileri görselleştirin
OLS regresyonunu gerçekleştirmeden önce saatlerle sınav puanı arasındaki ilişkiyi görselleştirmek için bir dağılım grafiği oluşturalım:
library (ggplot2) #create scatterplot ggplot(df, aes(x=hours, y=score)) + geom_point(size= 2 )
Doğrusal regresyonundört varsayımından biri, yordayıcı ile yanıt değişkeni arasında doğrusal bir ilişkinin olmasıdır.
Grafikten ilişkinin doğrusal olduğunu görebiliriz. Saat sayısı arttıkça puan da doğrusal olarak artma eğilimindedir.
Daha sonra sınav sonuçlarının dağılımını görselleştirmek ve aykırı değerleri kontrol etmek için bir kutu grafiği oluşturabiliriz.
Not : R, üçüncü çeyreğin çeyrekler arası aralığının 1,5 katı üzerinde veya birinci çeyreğin altında çeyrekler arası aralığın 1,5 katı olan bir gözlemi aykırı değer olarak tanımlar.
Bir gözlem aykırı ise kutu grafiğinde küçük bir daire görünecektir:
library (ggplot2) #create scatterplot ggplot(df, aes(y=score)) + geom_boxplot()
Kutu grafiğinde küçük daireler yok, bu da veri setimizde aykırı değerlerin olmadığı anlamına geliyor.
Adım 3: OLS Regresyonunu Gerçekleştirin
Daha sonra, tahmin değişkeni olarak saatleri ve yanıt değişkeni olarak puanı kullanarak bir OLS regresyonu gerçekleştirmek için R’deki lm() işlevini kullanabiliriz:
#fit simple linear regression model model <- lm(score~hours, data=df) #view model summary summary(model) Call: lm(formula = score ~ hours) Residuals: Min 1Q Median 3Q Max -5,140 -3,219 -1,193 2,816 5,772 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 65,334 2,106 31,023 1.41e-13 *** hours 1.982 0.248 7.995 2.25e-06 *** --- Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 3.641 on 13 degrees of freedom Multiple R-squared: 0.831, Adjusted R-squared: 0.818 F-statistic: 63.91 on 1 and 13 DF, p-value: 2.253e-06
Model özetinden uygun regresyon denkleminin şöyle olduğunu görebiliriz:
Puan = 65,334 + 1,982*(saat)
Bu, çalışılan her ek saatin ortalama 1.982 puanlık sınav puanı artışıyla ilişkili olduğu anlamına gelir.
Orijinal değeri olan 65.334 bize sıfır saat ders çalışan bir öğrencinin ortalama beklenen sınav puanını anlatır.
Bu denklemi, öğrencinin ders çalıştığı saat sayısına göre beklenen sınav puanını bulmak için de kullanabiliriz.
Örneğin 10 saat ders çalışan bir öğrencinin sınav puanının 85,15 olması gerekir:
Puan = 65,334 + 1,982*(10) = 85,15
Model özetinin geri kalanını şu şekilde yorumlayabilirsiniz:
- Pr(>|t|): Model katsayılarıyla ilişkili p değeridir. Saatlere ilişkin p değeri (2,25e-06) 0,05’ten anlamlı derecede küçük olduğundan saat ile puan arasında istatistiksel olarak anlamlı bir ilişkinin olduğunu söyleyebiliriz.
- Çoklu R-kare: Bu sayı bize sınav puanlarındaki değişim yüzdesinin çalışılan saat sayısıyla açıklanabileceğini söyler. Genel olarak, bir regresyon modelinin R-kare değeri ne kadar büyük olursa, yordayıcı değişkenlerin yanıt değişkeninin değerini tahmin etmede o kadar iyi olur. Bu durumda puanlardaki değişimin %83,1’i çalışılan saatlerle açıklanabilir.
- Artık standart hata: gözlenen değerler ile regresyon çizgisi arasındaki ortalama mesafedir. Bu değer ne kadar düşük olursa, bir regresyon çizgisinin gözlemlenen verilere o kadar fazla karşılık gelebilmesi mümkündür. Bu durumda sınavda gözlemlenen ortalama puan, regresyon çizgisinin öngördüğü puandan 3.641 puan sapmaktadır.
- F istatistiği ve p değeri: F istatistiği ( 63.91 ) ve karşılık gelen p değeri ( 2.253e-06 ) bize regresyon modelinin genel önemini, yani modeldeki yordayıcı değişkenlerin varyasyonu açıklamada yararlı olup olmadığını anlatır. . yanıt değişkeninde. Bu örnekteki p değeri 0,05’ten küçük olduğundan modelimiz istatistiksel olarak anlamlıdır ve saatlerin puan değişimini açıklamada faydalı olduğu düşünülmektedir.
Adım 4: Artık Grafikler Oluşturun
Son olarak, eşcinsellik ve normallik varsayımlarını kontrol etmek için artık grafikleri oluşturmamız gerekiyor.
Eş varyans varsayımı, bir regresyon modelinin artıklarının , yordayıcı değişkenin her seviyesinde yaklaşık olarak eşit varyansa sahip olmasıdır.
Bu varsayımın karşılandığını doğrulamak için artıkların ve uyumların grafiğini oluşturabiliriz.
X ekseni takılan değerleri, y ekseni ise artıkları görüntüler. Artıklar grafik boyunca sıfır değeri etrafında rastgele ve düzgün bir şekilde dağılmış göründüğü sürece, eş varyanslılığın ihlal edilmediğini varsayabiliriz:
#define residuals res <- resid(model) #produce residual vs. fitted plot plot(fitted(model), res) #add a horizontal line at 0 abline(0,0)
Artıklar sıfır etrafında rastgele dağılmış gibi görünüyor ve fark edilebilir bir desen göstermiyor, dolayısıyla bu varsayım karşılanıyor.
Normallik varsayımı, bir regresyon modelinin artıklarının yaklaşık olarak normal dağıldığını belirtir.
Bu varsayımın karşılanıp karşılanmadığını kontrol etmek için bir QQ grafiği oluşturabiliriz. Çizim noktaları 45 derecelik bir açı oluşturan kabaca düz bir çizgi boyunca uzanıyorsa veriler normal şekilde dağıtılır:
#create QQ plot for residuals qqnorm(res) #add a straight diagonal line to the plot qqline(res)
Kalıntılar 45 derece çizgisinden biraz sapıyor ancak ciddi endişe yaratacak kadar değil. Normallik varsayımının karşılandığını varsayabiliriz.
Artıklar normal dağıldığı ve homoskedastic olduğu için OLS regresyon modelinin varsayımlarının karşılandığını doğruladık.
Dolayısıyla modelimizin çıktısı güvenilirdir.
Not : Varsayımlardan bir veya daha fazlası karşılanmazsa verilerimizi dönüştürmeyi deneyebiliriz.
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 çoklu doğrusal regresyon nasıl gerçekleştirilir
R’de üstel regresyon nasıl gerçekleştirilir
R’de ağırlıklı en küçük kareler regresyonu nasıl gerçekleştirilir?