Python’da Panel Veri Analizi: Temel Yöntemler
Birim-zaman çiftlerini tekilleştirmek, panel modelinin temel veri kontrolüdür. Rehber, Python kodunu ve çıktı raporlamasında belirtilecek model tercihlerini gösterir.

Bu yazıda neler var?
Python’da panel veri analizi için pandas ve linearmodels paketlerini kurun. Birim ve zaman sütunlarını MultiIndex yapın, ardından sabit etkiler için PanelOLS kullanın. Birim ve zaman etkilerini aynı modele ekleyerek her iki boyuttaki sabit farklılıkları kontrol edebilirsiniz.
Panel Veri Yapısını ve Model Seçeneklerini Belirleyin
Panel veri, aynı analiz birimlerinin birden fazla dönemde gözlenmesidir. Her satır bir birim-zaman gözlemini temsil eder. Örneğin ülke-yıl verisinde birim ülke, zaman değişkeni yıldır.
| Yöntem | Temel kullanım | Varsayım veya sınır |
|---|---|---|
| Birleştirilmiş OLS | Panel etkileri ayrıca modellenmediğinde | Birim ve dönem farklılıklarını ayrı kontrol etmez |
| Birim sabit etkileri | Birimlere özgü sabit özellikleri kontrol etmek için | Zaman etkilerini kendiliğinden eklemez |
| Birim ve zaman sabit etkileri | Birim ve dönem etkilerini birlikte kontrol etmek için | İki etki boyutunu da modele dahil eder |
| Rassal etkiler | Birim etkilerinin açıklayıcı değişkenlerle ilişkisiz olduğu varsayımında | İlişkisizlik varsayımı araştırma bağlamında savunulmalıdır |
Yöntemi araştırma sorunuza göre seçin. Birimlere özgü sabit özellikleri kontrol edecekseniz sabit etkileri değerlendirin. Rassal etkiler için birim etkileriyle açıklayıcı değişkenlerin ilişkisiz olduğu varsayımını gerekçelendirin.
Python Paketlerini Kurun ve Veriyi Hazırlayın
Terminalde temel paketleri şu komutla kurun: pip install pandas linearmodels. CSV dosyanızda birim, zaman, bağımlı değişken ve açıklayıcı değişken sütunları bulunsun. Örnekte bu sütunlar id, year, y, x1 ve x2 olarak adlandırılmıştır.
- Dosyayı pd.read_csv("panel.csv") ile okuyun.
- id ve year çiftlerinin tekrar edip etmediğini kontrol edin.
- Eksik değerleri ve sütun türlerini inceleyin.
- Birim ve zaman sütunlarını sıralı MultiIndex yapın.
Tekrarlanan çiftleri df.duplicated(["id", "year"]).any() ile kontrol edebilirsiniz. İndeksi df.set_index(["id", "year"]).sort_index() ile kurun. Sayısal değişkenlerde metin veya boş değer kalırsa model öncesinde bunları düzeltin.
PanelOLS ile Sabit Etkiler Modeli Kurun
PanelOLS sınıfını linearmodels.panel içinden çağırın. Formülde EntityEffects birim, TimeEffects ise zaman etkisini belirtir. İki terimi aynı formüle ekleyerek her iki etki boyutunu birlikte modele dahil edin.
Önce modeli şu formülle tanımlayın: PanelOLS.from_formula("y ~ 1 + x1 + x2 + EntityEffects + TimeEffects", data=df). Formüldeki değişken adlarının DataFrame sütunlarıyla aynı yazıldığını kontrol edin. Buradaki 1, sabit terimi gösterir.
Birim düzeyinde kümelenmiş standart hatalar için modeli model.fit(cov_type="clustered", cluster_entity=True) ile tahmin edin. Ardından results.summary çıktısını inceleyin. Standart hata yöntemini araştırma tasarımınıza ve hata yapınıza göre seçin.
Model Çıktısını ve Katsayıları Yorumlayın
Çıktıda katsayıyı, standart hatayı ve gözlem sayısını birlikte değerlendirin. Katsayı, açıklayıcı değişkendeki bir birimlik artışla bağımlı değişkendeki tahmini değişimi gösterir. Yorumunuzu değişkenlerin ölçü birimleriyle birlikte yazın.
Bir birim içinde zamanla değişmeyen değişken, birim sabit etkileriyle örtüşebilir. Bu durumda model o değişken için ayrı bir katsayı tahmin edemez. Böyle bir değişkenin katsayısını ölçmek istiyorsanız model tercihinizi araştırma sorusuyla birlikte yeniden değerlendirin.
İstatistiksel anlamlılığı etki büyüklüğünden ayrı raporlayın. Standart hata yöntemini, modeldeki sabit etkileri ve kullanılan gözlem sayısını sonuç tablosuna ekleyin. Bu bilgiler, katsayıların hangi model ve belirsizlik hesabıyla üretildiğini açıklar.
Sık Yapılan Veri Hatalarını Düzeltin
| Hata | Kontrol | Çözüm |
|---|---|---|
| Tekrarlanan birim-zaman çifti | Aynı anahtar için birden fazla satır var mı? | Kaynağı inceleyin; kayıtları gerekçeli biçimde düzeltin veya birleştirin |
| Yanlış indeks sırası | İlk seviye birim, ikinci seviye zaman mı? | İndeksi birim ve ardından zaman sütunuyla kurun |
| Sayıların metin olarak okunması | Sütun türlerini ve ondalık ayıracını inceleyin | Değerleri sayısal türe dönüştürün |
| Eksik değerlerin gözden kaçması | Sütunlardaki boş değerleri sayın | Eksik gözlemlerin model örneklemini nasıl etkilediğini raporlayın |
Yıl sütunu metin olarak okunursa sıralama kronolojik olmayabilir. Sütunun türünü ve sıralama sonucunu modelden önce kontrol edin. Ayrıca her analiz biriminin kaç dönem içerdiğini inceleyin.
Bir hata mesajı aldığınızda önce sütun adlarını, indeks yapısını ve değişken türlerini kontrol edin. Model formülündeki her değişkenin veri çerçevesinde bulunduğunu doğrulayın. Hata giderme sırasında veri satırlarını sessizce silmek yerine yapılan işlemi kaydedin.
Analiz Sonuçlarını Yeniden Üretilebilir Biçimde Raporlayın
Raporunuzda veri birimini, zaman değişkenini ve model formülünü açıklayın. Hangi sabit etkileri kullandığınızı, standart hataları hangi düzeyde kümelendirdiğinizi ve modelde kaç gözlem kaldığını belirtin. Eksik değerleri nasıl işlediğinizi de aynı bölümde yazın.
Analizi yeniden çalıştırmayı kolaylaştırmak için veri hazırlama ve model tahmini adımlarını aynı kod akışında tutun. Veri kaynağını ve sütun tanımlarını kaydedin. Böylece başka bir okuyucu indeksin nasıl kurulduğunu ve model formülünün hangi değişkenleri kullandığını izleyebilir.
Veri hazırlama adımlarına ilişkin ek açıklamalar için Veri Analizi Nasıl Yapılır? Adım Adım Uygulama Rehberi sayfasına bakabilirsiniz. Excel dosyalarını düzenleme konusunda Excel nasıl öğrenilir? Başlangıç için yol haritası içeriğini kullanabilirsiniz.