Python'da doğrusal regresyon i̇çin tam bir kılavuz
Doğrusal regresyon, bir veya daha fazla yordayıcı değişken ile bir yanıt değişkeni arasındaki ilişkiyi anlamak için kullanabileceğimiz bir yöntemdir.
Bu eğitimde Python’da doğrusal regresyonun nasıl gerçekleştirileceği açıklanmaktadır.
Örnek: Python’da doğrusal regresyon
Çalışmak için harcanan saatlerin ve alınan uygulama sınavlarının sayısının, öğrencinin belirli bir sınavda aldığı notu etkileyip etkilemediğini bilmek istediğimizi varsayalım.
Bu ilişkiyi araştırmak için Python’da çoklu doğrusal regresyon gerçekleştirmek üzere aşağıdaki adımları uygulayabiliriz.
Adım 1: Verileri girin.
Öncelikle veri kümemizi tutacak bir pandas DataFrame oluşturacağız:
import pandas as pd #create data df = pd.DataFrame({'hours': [1, 2, 2, 4, 2, 1, 5, 4, 2, 4, 4, 3, 6, 5, 3, 4, 6, 2, 1, 2], 'exams': [1, 3, 3, 5, 2, 2, 1, 1, 0, 3, 4, 3, 2, 4, 4, 4, 5, 1, 0, 1], 'score': [76, 78, 85, 88, 72, 69, 94, 94, 88, 92, 90, 75, 96, 90, 82, 85, 99, 83, 62, 76]}) #view data df hours exam score 0 1 1 76 1 2 3 78 2 2 3 85 3 4 5 88 4 2 2 72 5 1 2 69 6 5 1 94 7 4 1 94 8 2 0 88 9 4 3 92 10 4 4 90 11 3 3 75 12 6 2 96 13 5 4 90 14 3 4 82 15 4 4 85 16 6 5 99 17 2 1 83 18 1 0 62 19 2 1 76
Adım 2: Doğrusal regresyon gerçekleştirin.
Daha sonra, tahmin değişkenleri olarak “saatler” ve “sınavlar”ı ve yanıt değişkeni olarak “puan”ı kullanarak sıradan bir en küçük kareler regresyonu gerçekleştirmek için statsmodels kütüphanesindeki OLS() işlevini kullanacağız:
import statsmodels.api as sm #define response variable y = df['score'] #define predictor variables x = df[['hours', 'exams']] #add constant to predictor variables x = sm.add_constant(x) #fit linear regression model model = sm.OLS(y, x).fit() #view model summary print(model.summary()) OLS Regression Results ==================================================== ============================ Dept. Variable: R-squared score: 0.734 Model: OLS Adj. R-squared: 0.703 Method: Least Squares F-statistic: 23.46 Date: Fri, 24 Jul 2020 Prob (F-statistic): 1.29e-05 Time: 13:20:31 Log-Likelihood: -60.354 No. Observations: 20 AIC: 126.7 Df Residuals: 17 BIC: 129.7 Df Model: 2 Covariance Type: non-robust ==================================================== ============================ coef std err t P>|t| [0.025 0.975] -------------------------------------------------- ---------------------------- const 67.6735 2.816 24.033 0.000 61.733 73.614 hours 5.5557 0.899 6.179 0.000 3.659 7.453 exams -0.6017 0.914 -0.658 0.519 -2.531 1.327 ==================================================== ============================ Omnibus: 0.341 Durbin-Watson: 1.506 Prob(Omnibus): 0.843 Jarque-Bera (JB): 0.196 Skew: -0.216 Prob(JB): 0.907 Kurtosis: 2,782 Cond. No. 10.8 ==================================================== ============================
Adım 3: Sonuçları yorumlayın.
Sonuçtaki en alakalı sayıları nasıl yorumlayacağınız aşağıda açıklanmıştır:
R kare: 0,734 . Buna belirleme katsayısı denir. Bu, yordayıcı değişkenler tarafından açıklanabilen yanıt değişkenindeki varyansın oranıdır. Bu örnekte sınav puanlarındaki farklılığın %73,4’ü çalışılan saat ve girilen hazırlık sınavı sayısıyla açıklanmaktadır.
F istatistiği: 23.46 . Bu, regresyon modelinin genel F istatistiğidir.
Olasılık (F istatistiği): 1.29e-05. Bu, genel F istatistiğiyle ilişkili p değeridir. Bu bize regresyon modelinin bir bütün olarak istatistiksel olarak anlamlı olup olmadığını söyler. Başka bir deyişle, bize iki yordayıcı değişkenin birleşiminin yanıt değişkeni ile istatistiksel olarak anlamlı bir ilişkiye sahip olup olmadığını söyler. Bu durumda p değeri 0,05’ten küçüktür; bu durum yordayıcı değişkenler olan “çalışma saatleri” ve “girilen hazırlık sınavları”nın birleşiminin sınav puanıyla istatistiksel olarak anlamlı bir ilişkiye sahip olduğunu göstermektedir.
katsayı: Her yordayıcı değişkenin katsayıları, diğer yordayıcı değişkenin sabit kaldığını varsayarak, bize yanıt değişkeninde beklenen ortalama değişikliği söyler. Örneğin, alınan deneme sınavlarının sabit kaldığı varsayılarak, ders çalışmak için harcanan her ek saat için ortalama sınav puanının 5,56 artması beklenir.
Buna başka bir açıdan da bakabiliriz: Öğrenci A ve Öğrenci B aynı sayıda hazırlık sınavına girerse ancak Öğrenci A bir saat daha uzun çalışırsa, Öğrenci A, Öğrenci B’den 5,56 puan daha yüksek puan almalıdır.
Kesişme katsayısını, ders saati çalışmayan ve hazırlık sınavına girmeyen bir öğrenci için beklenen sınav puanının 67,67 olduğu şeklinde yorumluyoruz.
P>|t|. Bireysel p değerleri bize her bir yordayıcı değişkenin istatistiksel olarak anlamlı olup olmadığını söyler. “Saatler”in istatistiksel olarak anlamlı (p=0,00), “sınavlar”ın ise anlamlı olduğunu görüyoruz. (p = 0,52) α = 0,05’te istatistiksel olarak anlamlı değildir. “Sınavlar” terimi istatistiksel olarak anlamlı olmadığından onu modelden çıkarmaya karar verebiliriz.
Tahmini regresyon denklemi: Aşağıdaki tahmini regresyon denklemini oluşturmak için model çıktısındaki katsayıları kullanabiliriz:
sınav puanı = 67,67 + 5,56*(saat) – 0,60*(hazırlık sınavları)
Bu tahmini regresyon denklemini, bir öğrencinin çalışma saati ve girdiği deneme sınavlarının sayısına bağlı olarak beklenen sınav puanını hesaplamak için kullanabiliriz. Örneğin üç saat çalışıp hazırlık sınavına giren bir öğrencinin notunun 83,75 olması gerekir:
Geçmiş hazırlık sınavlarının istatistiksel olarak anlamlı olmaması nedeniyle (p = 0,52), genel modele herhangi bir iyileştirme sağlamaması nedeniyle bunları kaldırmaya karar verebileceğimizi unutmayın. Bu durumda, yordayıcı değişken olarak yalnızca çalışılan saatleri kullanarak basit bir doğrusal regresyon gerçekleştirebiliriz.
Adım 4: Model varsayımlarını doğrulayın.
Doğrusal bir regresyon gerçekleştirdikten sonra, regresyon modelinin sonuçlarının güvenilir olduğundan emin olmak için çeşitli varsayımları kontrol etmek isteyebilirsiniz. Bu varsayımlar şunları içerir:
Varsayım #1: Yordayıcı değişkenler ile yanıt değişkeni arasında doğrusal bir ilişki vardır.
- Bir regresyon modeli için artıklara karşı uygun değerleri görüntüleyen birartık grafiği oluşturarak bu varsayımı doğrulayın.
Hipotez #2: Artıkların bağımsızlığı.
- Durbin-Watson testi yaparak bu hipotezi doğrulayın.
Hipotez #3: Artıkların homojen varyanslılığı.
- Breusch-Pagan testi yaparak bu hipotezi doğrulayın.
Varsayım No. 4: Artıkların normalliği.
- BirQQ grafiği kullanarak bu varsayımı görsel olarak doğrulayın.
- Bu hipotezi Jarque-Bera testi veya Anderson-Darling testi gibi resmi testlerle doğrulayın.
Varsayım #5: Yordayıcı değişkenler arasında çoklu bağlantı olmadığını doğrulayın.
- Her yordayıcı değişkenin VIF değerini hesaplayarak bu hipotezi doğrulayın.
Bu varsayımlar karşılanırsa çoklu doğrusal regresyon modelinizin sonuçlarının güvenilir olduğundan emin olabilirsiniz.
Bu eğitimde kullanılan Python kodunun tamamını burada bulabilirsiniz.