Önce özete göz atDersin sonundaki özet, okumaya başlamadan önce yol haritası olarak.
- Model formülü, y ~ x biçiminde bir regresyonu yazılıma anlatmanın ortak dilidir; Wilkinson ile Rogers'ın 1973'te önerdiği sembolik gösterime uzanan bu dil, S ve R'da yerleşti ve patsy aracılığıyla statsmodels'e geçti.
- Formül yazılımın içinde bir tasarım matrisine dönüşür: sabit terim, açıklayıcılar ve kategorik değişkenlerin kukla sütunları; aynı katsayılar matris işlemleriyle doğrudan hesaplanarak doğrulanabilir.
- Katsayılar aynı veriyle aynı çıkar, ama standart hatalar istenen yönteme bağlıdır; varsayılan standart hata sabit varyansa dayanır, dayanıklı ve kümelenmiş standart hatalar açıkça istenmeli ve tabloda belirtilmelidir.
- Kategorik değişkenlerde temel grup yazılımın alfabetik sırasıyla seçilir ve katsayıların anlamını belirler; etkileşimli modellerde ana etkilerin anlamı değişir; öngörü aralığı, ortalamanın güven aralığından her zaman daha geniştir.
- Psacharopoulos ile Patrinos, 139 ülkeden 1.120 tahmine göre bir yıllık okullaşmanın özel getirisinin ortalama yüzde 9 olduğunu; Young ise 53 deneysel makalede rastgeleleştirme sınamalarının, yazarların yöntemlerine göre daha az anlamlı sonuç bulduğunu gösterdi.
Öğrenme çıktıları
- Hatırlama — Model formülünü, tasarım matrisini, model nesnesini, öngörü aralığını, rastgeleleştirme çıkarımını ve regresyon tablosunu tanımlar.
- Anlama — Bir formülün yazılımın içinde nasıl bir sayı matrisine dönüştüğünü ve regresyon çıktısındaki katsayı, standart hata ve güven aralığının, analizcinin yaptığı seçimlere nasıl bağlı olduğunu açıklar.
- Uygulama — Python'daki statsmodels ve R'daki lm ile bir kazanç regresyonu tahmin eder, dayanıklı standart hata ister, kategorik değişken ve etkileşim terimi ekler, yeni gözlemler için ortalama tahmin ve öngörü aralığı üretir.
- Değerlendirme — Psacharopoulos ile Patrinos'un eğitim getirisi derlemesini ve Young'ın rastgeleleştirme sınamalarını kullanarak bir regresyon sonucunun ne kadar kesin olduğunu ve yayımlanmış anlamlılığın ne kadar sağlam olduğunu değerlendirir.
Sezgi
Açılış
Önceki kursta en küçük kareler yönteminin mantığını, katsayıların nasıl yorumlandığını ve standart hataların neden önemli olduğunu gördük. Kâğıt üzerinde her şey açıktı: bir bağımlı değişken, birkaç açıklayıcı değişken, bir denklem. Ama gerçek bir analizde denklemi bilgisayara nasıl anlatacağız? Kategorik bir değişkeni nasıl ekleyeceğiz, hangi kategoriyi temel alacağız, hangi standart hatayı isteyeceğiz, sonucu nasıl okuyacağız ve bir rapora nasıl aktaracağız?
Bu soruların her birinin arkasında, yazılımın kullanıcı adına verdiği ya da kullanıcıdan beklediği kararlar vardır. Aynı veriyle, aynı modeli iki farklı yazılımda tahmin eden iki araştırmacı, farklı varsayılan ayarlar yüzünden farklı standart hatalar raporlayabilir. Bir kategorik değişkenin hangi grubu temel aldığı, katsayıların anlamını değiştirir. Bu kararları bilmek, bir regresyon çıktısını doğru okumanın ön koşuludur.
Bu ders, kuramı tekrarlamadan, bir regresyonu Python ve R ile uçtan uca uygulamayı ele alıyor: modeli yazmaktan, tahmin etmek, çıktıyı okumak, tahmin yapmak ve sonucu bir tabloya dökmeye kadar.
Hikâye — Bir sembolik gösterimin yolculuğu
1973'te G. N. Wilkinson ile C. E. Rogers, Applied Statistics dergisinde «Symbolic Description of Factorial Models for Analysis of Variance», yani «Varyans Analizi için Faktöriyel Modellerin Sembolik Betimlenmesi» başlıklı bir makale yayımladı. Sorunları pratikti: deneysel verilerin analizinde kullanılan modelleri, bilgisayara kısa ve açık bir biçimde anlatmanın bir yolunu arıyorlardı. Önerdikleri sembolik yazım, bir modelin terimlerini artı işaretleri ve etkileşimleri gösteren işaretlerle yan yana dizmeye dayanıyordu.
Bu fikir, istatistik yazılımlarının dili hâline geldi. Bell Laboratuvarları'nda geliştirilen S dilinde, John Chambers ile Trevor Hastie'nin 1992'de yayımladıkları «Statistical Models in S» kitabı, modellerin bir formülle yazılmasını sistemli biçimde tanımladı. R'ın kendi belgelerinde, lm ve glm gibi fonksiyonların modelleri sıkı bir sembolik biçimde aldığı, bu biçimde tilde işaretinin temel olduğu ve y ~ model biçimindeki bir ifadenin, y yanıt değişkeninin, model ile sembolik olarak tanımlanan doğrusal bir öngörücüyle modellendiği anlamına geldiği yazılıdır. R'ın bu bölümünün başvuru kaynağı olarak da Chambers ile Hastie'nin kitabı gösterilir.
Python dünyası bu dili sonradan devraldı. patsy adlı paketin belgelerine göre paket, R ve S'de kullanılan formül mini diline yakından esinlenmiş ve onunla uyumludur: y ~ x + a + b + a:b yazıldığında, paket gerekli matrisleri kendisi kurar. statsmodels'in belgelerine göre de statsmodels, 0.5.0 sürümünden bu yana R tarzı formüllerle model tahmin etmeye izin verir ve formülleri ve verileri, model tahmininde kullanılan matrislere dönüştürmek için arka planda patsy'yi kullanır.
Bu yolculuğun sonucu, bugün iki dilden birinde regresyon kuran bir iktisatçının, neredeyse aynı cümleyi kurmasıdır: logucret ~ egitim + deneyim. Yarım yüzyıl önce varyans analizi için önerilen bir gösterim, iki farklı dili konuşan araştırmacıların ortak dili oldu. Ama ortak bir dil, aynı anlamı garanti etmez: iki yazılımın bir formülü nasıl matrise çevirdiği, hangi kategoriyi temel aldığı ve varsayılan olarak hangi standart hatayı hesapladığı, küçük ama önemli farklar taşıyabilir.
Kavram
Bir modeli yazılıma anlatmanın yolu şudur.
Formül, yazılımın içinde bir sayı tablosuna dönüşür.
Tahminin sonucu, içinde her şeyi taşıyan bir nesnedir.
Bir modelle yeni gözlemler için tahmin yaparken iki farklı belirsizlik vardır.
Standart hatalara dayanan anlamlılık sınamalarının bir alternatifi şudur.
Son olarak, sonuçların sunuluş biçimi şudur.
Veri ve kanıt
Bu derleme, bu dersteki regresyonun gerçek dünyadaki karşılığıdır. Dünya genelinde yapılan bin yüzü aşkın tahminin çoğu, logaritmik ücreti eğitim yılı ve deneyimle açıklayan, bu derste kodla tahmin edeceğimiz türden bir regresyona dayanır. Yüzde 9'luk ortalama, tek bir regresyonun değil, farklı ülkelerde, farklı verilerle ve farklı yöntemlerle yapılmış yüzlerce regresyonun ortalamasıdır. Önceki kursta gördüğümüz gibi, bu tahminlerin nedensel yorumu tartışmalıdır; ama tek bir regresyon sonucunu, bu geniş dağılımın içinde nereye düştüğüne bakarak değerlendirmek, bir aykırılığı fark etmenin iyi bir yoludur.
Young'ın bulgusu, bir regresyon çıktısındaki yıldızların ve p değerlerinin ne kadar kırılgan olabileceğini gösterir. Yazılımın varsayılan ya da araştırmacının seçtiği standart hata yöntemi, küçük örneklemlerde ya da birkaç gözlemin ağırlığı taşıdığı durumlarda, belirsizliği olduğundan küçük gösterebilir. Bu, regresyonun yanlış olduğu anlamına gelmez; ama standart hata seçiminin sonucu değiştirebilen bir karar olduğunu ve farklı yöntemlerle sınamanın, bir bulgunun sağlamlığını görmenin yolu olduğunu hatırlatır.
Yaygın yanlış«Python ve R aynı formülle aynı regresyonu tahmin ettiğine göre, raporlanan standart hatalar da her zaman aynıdır.»
Katsayılar aynı veriyle aynı çıkar, ama standart hatalar, istenen yönteme bağlıdır: statsmodels'te ve R'ın lm fonksiyonunda varsayılan standart hata, sabit varyans varsayımına dayanır; dayanıklı ya da kümelenmiş standart hatalar açıkça istenmelidir ve farklı paketler, aynı ada sahip dayanıklı standart hataları farklı küçük örneklem düzeltmeleriyle hesaplayabilir. Tabloda hangi yöntemin kullanıldığı mutlaka yazılmalıdır.
Yaygın yanlış«Regresyon çıktısında yıldızı olan katsayı gerçek bir etkiyi, yıldızı olmayan katsayı etkinin olmadığını gösterir.»
Anlamlılık, etkinin büyüklüğüne, örneklem büyüklüğüne ve standart hata yöntemine bağlıdır. Gerçek bir etki, küçük bir örneklemde anlamsız çıkabilir; Young'ın gösterdiği gibi, anlamlı görünen bir sonuç da farklı bir sınamayla anlamlılığını yitirebilir. Katsayının büyüklüğüne ve güven aralığına birlikte bakmak gerekir.
Neden önemli?
Regresyon, iktisatçının en sık kullandığı araçtır ve bir politika raporundaki pek çok rakam, bir regresyon çıktısından gelir. Bu rakamların doğru okunması, yani katsayının hangi birimde olduğu, hangi grubun temel alındığı, hangi standart hatanın kullanıldığı ve güven aralığının ne kadar geniş olduğu, raporun güvenilirliğini belirler. Bir yazılımın varsayılan ayarlarını bilmeden raporlanan bir sonuç, fark edilmeden yanıltıcı olabilir.
Regresyonu bir betikle tahmin etmek, aynı zamanda sonucun tekrarlanabilmesini sağlar. Formül, veri ve standart hata seçimi betikte açıkça yazılı olduğunda, bir başka araştırmacı aynı sonucu yeniden üretebilir, farklı bir seçimle sonucun değişip değişmediğini sınayabilir. Önceki derslerde gördüğümüz tekrarlanabilirlik kaygısı, regresyon tablolarında en somut biçimini alır.
Türkiye'de işgücü anketinin TÜİK'in yayımladığı mikro verileri, eğitimin getirisinin, cinsiyet ücret farkının ve bölgesel ücret farklarının tahmininde yaygın olarak kullanılır. Bu verilerle yapılacak bir regresyonda, anketin örneklem ağırlıklarını, bölgelere göre kümelenmiş standart hataları ve kategorik değişkenlerin temel gruplarını doğru seçmek, sonuçların anlamlı olması için gereklidir.
Model
Çözümlü örnek — Gerçeği bilinen bir veri kurmak
Bir regresyon aracını öğrenmenin en iyi yolu, gerçek katsayıları bilinen yapay bir veriyle başlamaktır; böylece yazılımın bulduğu sonucu doğru cevapla karşılaştırabiliriz. 500 kişilik bir örneklem üretelim: eğitim yılı 5 ile 16, iş deneyimi 0 ile 30 yıl arasında olsun, kişilerin yaklaşık yarısı kadın olsun. Logaritmik ücreti şu kurala göre üretelim: sabit 1,5, eğitimin her yılı için 0,09, deneyimin her yılı için 0,04, deneyimin karesi için −0,0006, kadın olmak için −0,12 ve bir rastgele hata.
rng = np.random.default_rng(42)egitim = rng.integers(5, 17, 500)logucret = 1.5 + 0.09 * egitim + 0.04 * deneyim - 0.0006 * deneyim**2 - 0.12 * kadin + hata
default_rng(42), rastgele sayı üretecini sabit bir başlangıç değeriyle başlatır; aynı satırlar her çalıştırıldığında aynı veri üretilir ve sonuçlar tekrarlanabilir. Hatanın yayılımını eğitimle birlikte artacak biçimde kurduk, yani veride bilerek değişen varyans var. R'da set.seed(42) aynı işi görür, ama R ile Python'un rastgele sayı üreteçleri farklı olduğu için iki dil aynı başlangıç değeriyle aynı veriyi üretmez. Bu yüzden iki dildeki sonuçları karşılaştırmak için veriyi bir dilde üretip bir dosyaya kaydetmek ve öbür dilde o dosyayı okumak gerekir. Sayılar varsayımdır.
Çözümlü örnek — Formülle tahmin ve çıktıyı okumak
Modeli formülle yazıp tahmin edelim. Deneyimin karesini formülün içinde I() ile hesaplarız; bu işaret, içindeki ifadenin formül sözdizimi olarak değil, sıradan bir aritmetik işlem olarak yorumlanmasını sağlar.
- Python:
import statsmodels.formula.api as smf - Python:
m = smf.ols("logucret ~ egitim + deneyim + I(deneyim**2) + kadin", data=df).fit() - Python:
print(m.summary()) - R:
m <- lm(logucret ~ egitim + deneyim + I(deneyim^2) + kadin, data = df)ve ardındansummary(m)
statsmodels'in 0.14 sürümüyle çalıştırıldığında, eğitim katsayısı yaklaşık 0,1005, standart hatası 0,0074 çıktı; yüzde 95'lik güven aralığı 0,086 ile 0,115 arasındaydı ve gerçek değer olan 0,09'ı içeriyordu. Logaritmik ücret modelinde bu katsayı, bir yıl ek eğitimin ücreti yaklaşık yüzde 10 artırdığı biçiminde okunur; daha kesin karşılığı exp(0,1005) − 1 ≈ yüzde 10,6'dır. Belirlilik katsayısı 0,328 ve gözlem sayısı 500'dü.
Kadın katsayısı ise yaklaşık −0,087 çıktı ve p değeri 0,088'di; yüzde 5 düzeyinde anlamlı değildi. Oysa gerçek değeri −0,12'dir; veride gerçek bir fark vardır. 500 gözlemli ve hatası büyük bir örneklemde, bu büyüklükteki bir etkiyi kesin olarak ayırt etmek zordur. Anlamsız bir katsayı, etkinin olmadığını göstermez; yalnızca bu veriyle bu kesinlikte ölçülemediğini gösterir. Güven aralığının hem sıfırı hem de gerçek değeri içerdiğine bakmak, bu farkı görmenin yoludur. Sayılar varsayımdır.
Çözümlü örnek — Karesel terim ve verinin dışına çıkmak
Deneyim katsayısı yaklaşık 0,0259, karesinin katsayısı yaklaşık −0,000221 çıktı. Önceki kursta gördüğümüz gibi, karesel bir modelde ücretin en yükseğe ulaştığı deneyim, dönüm noktası, eksi doğrusal katsayının karesel katsayının iki katına bölümüyle bulunur: −0,0259 ÷ (2 × −0,000221) ≈ 58,7 yıl.
Bu sayıyı dikkatle okumak gerekir. Verideki deneyim 0 ile 30 yıl arasındadır; 58,7 yıl, verinin çok dışındadır ve model bu bölge hakkında hiçbir bilgi taşımaz. Üstelik gerçek modelin dönüm noktası 0,04 ÷ (2 × 0,0006) ≈ 33,3 yıldır. Karesel katsayı küçük ve belirsiz tahmin edildiği için, ondan türetilen dönüm noktası çok daha belirsizdir: paydadaki küçük bir hata, bölümü büyük ölçüde değiştirir. Karesel katsayının p değeri 0,53'tür; yani veri, eğrinin bükülüp bükülmediğini bile kesin olarak söyleyemez.
Buradan çıkan uygulama dersi şudur: bir regresyondan türetilen bir büyüklüğü, özellikle katsayıların bölümü gibi doğrusal olmayan bir birleşimini raporlarken, onun da bir belirsizliği olduğunu unutmamak ve verinin kapsadığı aralığın dışına taşan sonuçları yorumlamamak gerekir. Tahmin edilen eğriyi, verinin bulunduğu aralıkta bir grafikle göstermek, okura hem eğrinin biçimini hem de sınırlarını gösterir. Sayılar varsayımdır.
Çözümlü örnek — Standart hata seçimi
Veriyi bilerek değişen varyanslı kurduğumuz için, sabit varyans varsayımına dayanan varsayılan standart hatalar tam doğru değildir. Dayanıklı standart hataları isteyelim.
- Python:
r = smf.ols("logucret ~ egitim + deneyim + I(deneyim**2) + kadin", data=df).fit(cov_type="HC1") - R:
lmtest::coeftest(m, vcov = sandwich::vcovHC(m, type = "HC1"))
Bu örnekte eğitimin standart hatası 0,0074'ten 0,0075'e, kadın katsayısınınki 0,0510'dan 0,0515'e çıktı; fark küçüktür. Değişen varyans her zaman büyük farklar yaratmaz. Ama hangi standart hatanın kullanıldığı her zaman tabloda yazılmalıdır, çünkü farkın büyük olup olmadığı önceden bilinemez. HC1, dayanıklı standart hatanın, küçük örneklem için basit bir düzeltme içeren yaygın bir biçimidir; farklı paketlerin varsayılan dayanıklı standart hataları farklı düzeltmeler kullanabilir. Gözlemler kümeler hâlinde, örneğin aynı ildeki kişiler olarak geliyorsa, statsmodels'te cov_type="cluster" ile kümelenmiş standart hatalar istenir. Sayılar varsayımdır.
Çözümlü örnek — Kategorik değişken ve temel grup
Örneğe bir bölge değişkeni ekleyelim: her kişi Batı, Orta ya da Doğu bölgesinde yaşıyor olsun. Formülde C() ile değişkenin kategorik olduğunu belirtiriz.
- Python:
smf.ols("logucret ~ egitim + C(bolge)", data=df).fit() - R:
lm(logucret ~ egitim + factor(bolge), data = df)
Yazılım, üç bölge için iki kukla sütun oluşturur ve üçüncü bölgeyi temel grup yapar. Hangi grubun temel alınacağını, statsmodels ve R kategorileri alfabetik sıraya dizip ilkini seçerek belirler; bu örnekte temel grup Batı'dır. Çıktıda Doğu ve Orta için katsayılar, Batı'ya göre farklardır: yaklaşık −0,004 ve −0,040.
Temel grubu değiştirmek için bunu açıkça belirtmek gerekir. İki dil bunu farklı yollarla yapar.
- Python:
smf.ols('logucret ~ egitim + C(bolge, Treatment("Doğu"))', data=df).fit() - R:
df$bolge <- relevel(factor(df$bolge), ref = "Doğu")
Bu kez katsayılar Doğu'ya göre farklardır: Batı için yaklaşık 0,004, Orta için −0,036. Eğitim katsayısı ve modelin uyumu değişmez; yalnızca bölge katsayılarının anlamı değişir. Temel grubu, raporun sorusuna göre seçmek gerekir: bir bölgesel kalkınma raporunda karşılaştırmanın doğal temeli, ülkenin en gelişmiş ya da en büyük bölgesi olabilir. Bu veride bölgenin gerçek etkisi sıfır olarak kurulduğu için, bölge katsayılarının hepsi küçüktür. Sayılar varsayımdır.
Çözümlü örnek — Etkileşim terimi
Eğitimin getirisinin kadınlar ve erkekler için farklı olup olmadığını sınamak için bir etkileşim terimi ekleriz. Formülde yıldız işareti, iki değişkenin ana etkilerini ve etkileşimini birlikte ekler.
- Python:
smf.ols("logucret ~ egitim * kadin", data=df).fit() - R:
lm(logucret ~ egitim * kadin, data = df)
Çıktıda eğitim katsayısı yaklaşık 0,108, etkileşim terimi egitim:kadin ise yaklaşık −0,015'tir. Erkekler için eğitimin getirisi 0,108, kadınlar için 0,108 − 0,015 = 0,093'tür. Ama bu veride gerçek modelde etkileşim yoktur; bulunan küçük fark örneklem gürültüsüdür: etkileşimin standart hatası yaklaşık 0,016, p değeri 0,34'tür ve fark anlamlı değildir.
Etkileşim içeren modellerde kadın katsayısının anlamı da değişir: artık, eğitim sıfırken kadın ile erkek arasındaki farkı gösterir. Verideki en düşük eğitim 5 yıl olduğu için bu sayının doğrudan bir yorumu yoktur. Bu yüzden etkileşimli modellerde, farkı verideki anlamlı bir eğitim düzeyinde, örneğin ortalama eğitimde hesaplamak ya da eğitim değişkenini ortalamasından çıkararak merkezlemek, yorumu kolaylaştırır. Sayılar varsayımdır.
Çözümlü örnek — Tahmin ve öngörü aralığı
Tahmin edilen modelle, deneyimi 10 yıl olan iki erkek için, biri 12, öbürü 16 yıl eğitimli, logaritmik ücreti tahmin edelim. Yeni gözlemlerin sütun adları, modeldeki değişken adlarıyla aynı olmalıdır.
- Python:
yeni = pd.DataFrame({"egitim": [12, 16], "deneyim": [10, 10], "kadin": [0, 0]}) - Python:
m.get_prediction(yeni).summary_frame(alpha=0.05) - R:
predict(m, newdata = yeni, interval = "prediction")
12 yıl eğitimli kişi için tahmin edilen ortalama logaritmik ücret yaklaşık 2,910'dur; bu ortalamanın yüzde 95'lik güven aralığı 2,823 ile 2,997 arasındadır. Ama aynı özelliklere sahip tek bir kişinin öngörü aralığı 1,799 ile 4,020 arasındadır; çok daha geniştir. 16 yıl eğitimli kişi için ortalama tahmin 3,312, öngörü aralığı 2,199 ile 4,425'tir.
Fark önemlidir. Güven aralığı, «12 yıl eğitimli ve 10 yıl deneyimli erkeklerin ortalama ücreti nerede?» sorusunu cevaplar ve veri arttıkça daralır. Öngörü aralığı ise «Bu özelliklere sahip belirli bir kişinin ücreti nerede?» sorusunu cevaplar ve kişiler arasındaki doğal farklılık yüzünden, veri ne kadar artarsa artsın belirli bir genişliğin altına inmez. Bir bireyin geleceği hakkında konuşurken güven aralığını kullanmak, belirsizliği büyük ölçüde küçümsemek demektir. R'da interval = "confidence" ortalamanın güven aralığını verir. Sayılar varsayımdır.
Çözümlü örnek — Regresyon tablosu
Bir raporda genellikle birden çok model yan yana gösterilir: önce yalnızca eğitimli basit bir model, sonra kontrol değişkenleri eklenmiş bir model. statsmodels'te bu iş summary_col fonksiyonuyla yapılır; R'da modelsummary ya da stargazer gibi paketler aynı işi görür.
- Python:
from statsmodels.iolib.summary2 import summary_col - Python:
summary_col([m1, m2], model_names=["(1)", "(2)"], stars=True) - R:
modelsummary::modelsummary(list(m1, m2), stars = TRUE)
İki modeli de dayanıklı standart hatalarla tahmin edip bu satırla tabloya döktüğümüzde, eğitim katsayısı birinci modelde 0,1013, ikinci modelde 0,1005 çıktı; standart hatalar parantez içinde, 0,0078 ve 0,0075 olarak göründü. Belirlilik katsayısı kontrol değişkenleri eklenince 0,255'ten 0,328'e yükseldi.
Tablo okurun karşısına çıkmadan önce birkaç şey eklenmelidir. Tablonun altındaki not, hangi standart hatanın kullanıldığını söylemelidir; bu örnekte HC1 dayanıklı standart hatalardır. Yıldızların eşikleri, yazılımdan yazılıma değişebildiği için açıkça belirtilmelidir: summary_col'un varsayılanında bir yıldız yüzde 10 düzeyine karşılık gelir. Değişken adları, I(deneyim ** 2) gibi yazılım ifadeleri yerine okunur adlarla değiştirilmeli, bağımlı değişkenin logaritmik ücret olduğu başlıkta yazılmalıdır. Bir tabloyu betikle üretmenin üstünlüğü, veri ya da model değiştiğinde tablonun elle yeniden yazılmadan, hatasız biçimde yeniden üretilebilmesidir. Sayılar varsayımdır.
Çözümlü örnek — Formülün arkasındaki matris
Formülün yazılımın içinde bir tasarım matrisine dönüştüğünü, aynı katsayıları doğrudan matris işlemleriyle hesaplayarak görebiliriz. Bunun için formül arayüzünü hiç kullanmayız.
X = np.column_stack([np.ones(500), egitim, deneyim, deneyim**2, kadin])b = np.linalg.lstsq(X, logucret, rcond=None)[0]
X'in ilk sütunu birlerden oluşur ve sabit terime karşılık gelir; diğer sütunlar, formüldeki terimlerdir. lstsq, en küçük kareler çözümünü doğrudan hesaplar ve bu örnekte formülle bulunan katsayıların aynısını verdi: 1,466, 0,1005, 0,0259, −0,000221 ve −0,0873.
Bu doğrulama iki şey öğretir. Formül arayüzü sihirli değildir: yalnızca tasarım matrisini sizin yerinize kurar, kategorik değişkenler için kukla sütunları ekler ve temel grubu dışarıda bırakır. Ve bir sonucun doğruluğundan şüphe ettiğinizde, onu farklı bir yolla yeniden hesaplamak, en güvenilir denetimdir. R'da model.matrix(m) fonksiyonu, lm'in kullandığı tasarım matrisini gösterir ve kategorik değişkenlerin nasıl kodlandığını görmek için kullanışlıdır.
Modelin sınırları
Bu dersteki veri, gerçek katsayıları bilinen yapay bir veriydi; gerçek verilerde doğru cevabı bilmeyiz. Burada tahmin ettiğimiz katsayılar, önceki kursta gördüğümüz koşullu sıfır ortalama varsayımı sağlandığı için gerçek değerlerin çevresinde çıktı; gerçek bir kazanç regresyonunda ise yetenek gibi gözlenmeyen etkenler hem eğitimle hem ücretle ilişkili olabilir ve katsayının nedensel yorumunu zorlaştırır.
Bu ders, regresyonun uygulamasına odaklandı; model seçimi, tanı sınamaları ve nedensel çıkarım yöntemleri, önceki ekonometri kursunun ve kursun sonraki derslerinin konusudur. Python satırları statsmodels ile çalıştırılarak sınandı ve sonuçlar metne oradan aktarıldı; lm, sandwich ve lmtest kullanan R karşılıkları ise yerelde R bulunmadığından paket belgelerine göre yazıldı.
Uygulama
Özet kartı
- Model formülü, y ~ x biçiminde bir regresyonu yazılıma anlatmanın ortak dilidir; Wilkinson ile Rogers'ın 1973'te önerdiği sembolik gösterime uzanan bu dil, S ve R'da yerleşti ve patsy aracılığıyla statsmodels'e geçti.
- Formül yazılımın içinde bir tasarım matrisine dönüşür: sabit terim, açıklayıcılar ve kategorik değişkenlerin kukla sütunları; aynı katsayılar matris işlemleriyle doğrudan hesaplanarak doğrulanabilir.
- Katsayılar aynı veriyle aynı çıkar, ama standart hatalar istenen yönteme bağlıdır; varsayılan standart hata sabit varyansa dayanır, dayanıklı ve kümelenmiş standart hatalar açıkça istenmeli ve tabloda belirtilmelidir.
- Kategorik değişkenlerde temel grup yazılımın alfabetik sırasıyla seçilir ve katsayıların anlamını belirler; etkileşimli modellerde ana etkilerin anlamı değişir; öngörü aralığı, ortalamanın güven aralığından her zaman daha geniştir.
- Psacharopoulos ile Patrinos, 139 ülkeden 1.120 tahmine göre bir yıllık okullaşmanın özel getirisinin ortalama yüzde 9 olduğunu; Young ise 53 deneysel makalede rastgeleleştirme sınamalarının, yazarların yöntemlerine göre daha az anlamlı sonuç bulduğunu gösterdi.
Kavram sözlüğü
| Türkçe | İngilizce | Kısa tanım |
|---|---|---|
| Model formülü | Model formula | Bağımlı değişkeni tildenin soluna, terimleri sağına yazan sembolik model gösterimi |
| Tasarım matrisi | Design matrix | Açıklayıcıların, sabit terim ve kukla sütunlarla birlikte sayısal biçimi |
| Model nesnesi | Fitted model object | Tahmin sonucunda katsayıları, standart hataları ve kalıntıları saklayan nesne |
| Öngörü aralığı | Prediction interval | Tek bir yeni gözlemin değerinin içine düşmesi beklenen aralık |
| Rastgeleleştirme çıkarımı | Randomization inference | Tedavi atamasının olası rastgele düzenlemeleriyle anlamlılığı sınayan yöntem |
| Regresyon tablosu | Regression table | Modellerin katsayılarını, standart hatalarını ve uyum ölçülerini yan yana sunan tablo |
Kendini sına
- (Çıktı 1) Model formülü ile tasarım matrisi arasındaki ilişkiyi açıkla. logucret ~ egitim + C(bolge) formülünde üç bölge varsa tasarım matrisinde kaç sütun bulunur ve neden?
- (Çıktı 2) Aynı veriyle aynı formülü farklı dillerde tahmin eden iki araştırmacı, aynı katsayıları ama farklı standart hataları raporluyor. Bunun olası nedenleri nelerdir ve bir regresyon tablosunda bu karışıklık nasıl önlenir?
- (Çıktı 3) logucret'i egitim, deneyim, deneyimin karesi ve kadin ile açıklayan modeli dayanıklı standart hatalarla tahmin eden satırları hem statsmodels hem lm ile yaz. Eğitim katsayısı 0,08 çıkarsa bu nasıl yorumlanır?
- (Çıktı 3) Bir modelde deneyimin katsayısı 0,05, karesinin katsayısı −0,001'dir; verideki deneyim 0 ile 40 yıl arasındadır. Dönüm noktası nedir ve bu sonuç yorumlanabilir mi? Katsayılar 0,02 ve −0,0002 olsaydı ne olurdu?
- (Çıktı 4) Aynı özelliklere sahip kişilerin ortalama logaritmik ücretinin güven aralığı 2,8 ile 3,0, tek bir kişinin öngörü aralığı ise 1,8 ile 4,0 arasındadır. İki aralık neden bu kadar farklıdır? Bir kişiye «ücretin muhtemelen şu aralıkta olacak» demek için hangisi kullanılmalıdır?
- (Çıktı 4) Bir araştırmacı, «Katsayım yüzde 5 düzeyinde anlamlı, dolayısıyla etki kesin» diyor. Young'ın sınamalarını ve bu derste anlamsız çıkan gerçek kadın etkisini hatırlayarak bu yargıyı tart.
Cevaplar
- Model formülü, regresyonu sembolik olarak tanımlar; yazılım bu formülü, her satırı bir gözlem ve her sütunu bir katsayı olan tasarım matrisine çevirir ve en küçük kareleri bu matris üzerinde hesaplar. Üç bölgeli formülde tasarım matrisi dört sütundan oluşur: sabit terim, eğitim ve iki bölge kuklası. Üçüncü bölge temel grup olarak dışarıda bırakılır; üç kuklanın hepsi sabit terimle birlikte konsaydı, kuklaların toplamı sabit terime eşit olacağı için tam doğrusal bağlantı oluşurdu.
- Olası nedenler, bir araştırmacının varsayılan, sabit varyansa dayanan standart hataları, öbürünün dayanıklı ya da kümelenmiş standart hataları kullanması; ya da iki paketin dayanıklı standart hatalar için farklı küçük örneklem düzeltmeleri, örneğin HC0 ve HC1 kullanmasıdır. Regresyon tablosunun altına, hangi standart hata yönteminin ve hangi düzeltmenin kullanıldığı, kümeleme yapıldıysa hangi düzeyde yapıldığı açıkça yazılmalıdır.
- Python'da smf.ols("logucret ~ egitim + deneyim + I(deneyim**2) + kadin", data=df).fit(cov_type="HC1"); R'da m <- lm(logucret ~ egitim + deneyim + I(deneyim^2) + kadin, data = df) ve lmtest::coeftest(m, vcov = sandwich::vcovHC(m, type = "HC1")). Eğitim katsayısı 0,08 ise, deneyim ve cinsiyet sabit tutulduğunda bir yıl ek eğitim, logaritmik ücreti 0,08 artırır; bu, ücretin yaklaşık yüzde 8, daha kesin olarak exp(0,08) − 1 ≈ yüzde 8,3 artmasına karşılık gelir.
- Dönüm noktası −0,05 ÷ (2 × −0,001) = 25 yıldır; verideki 0–40 aralığının içinde kaldığı için yorumlanabilir, ama bir belirsizliği olduğu unutulmamalıdır. Katsayılar 0,02 ve −0,0002 olsaydı dönüm noktası −0,02 ÷ (2 × −0,0002) = 50 yıl olurdu; bu, verinin dışındadır ve model bu bölge hakkında bilgi taşımadığı için yorumlanmamalıdır.
- Güven aralığı, aynı özelliklere sahip kişilerin ortalamasının tahmin belirsizliğini gösterir ve veri arttıkça daralır. Öngörü aralığı ise buna, tek tek kişilerin ortalama çevresindeki doğal farklılığını da ekler; bu farklılık veri artsa da ortadan kalkmaz. Bir kişiye kendi ücretinin olası aralığını söylemek için öngörü aralığı kullanılmalıdır; güven aralığını kullanmak belirsizliği büyük ölçüde küçümser.
- Yargı aşırıdır. Anlamlılık, seçilen standart hata yöntemine ve örneklem büyüklüğüne bağlıdır. Young, 53 deneysel makalede rastgeleleştirme sınamalarının, yazarların yöntemlerine göre tek tek etkilerde yüzde 13 ile 22, ortak sınamalarda yüzde 33 ile 49 arasında daha az anlamlı sonuç bulduğunu gösterdi; yani yüzde 5 düzeyinde anlamlı görünen bir sonuç, farklı bir sınamayla anlamlılığını yitirebilir. Ayrıca anlamlılık, etkinin büyüklüğünü değil, sıfırdan ayırt edilebilirliğini gösterir; bu dersteki kadın katsayısı örneğinde olduğu gibi, gerçek bir etki anlamsız, çok küçük bir etki de büyük örneklemde anlamlı çıkabilir. Katsayının güven aralığına ve farklı standart hata yöntemleriyle sağlamlığına bakmak gerekir.
İleri okuma
- George Psacharopoulos, Harry Anthony Patrinos (2018). «Returns to Investment in Education: A Decennial Review of the Global Literature». Education Economics 26(5). Eğitimin getirisi tahminlerinin küresel derlemesi.
- Alwyn Young (2019). «Channeling Fisher: Randomization Tests and the Statistical Insignificance of Seemingly Significant Experimental Results». Quarterly Journal of Economics 134(2). Rastgeleleştirme sınamaları ve anlamlılığın kırılganlığı.
- G. N. Wilkinson, C. E. Rogers (1973). «Symbolic Description of Factorial Models for Analysis of Variance». Applied Statistics 22(3). Model formülü gösteriminin kökeni.
- John M. Chambers, Trevor J. Hastie (der.) (1992). Statistical Models in S. Wadsworth & Brooks/Cole. S ve R'daki model formüllerinin ve model nesnelerinin tanımı.
Sonraki derse köprü
Bu dersteki veri bir kesit verisiydi: her gözlem farklı bir kişiydi ve gözlemlerin sırası önemli değildi. İktisat verilerinin önemli bir kısmı ise zaman içinde sıralanmış gözlemlerden oluşur: aylık enflasyon, çeyreklik büyüme, günlük döviz kuru. Bu verilerde gözlemlerin sırası bilgi taşır ve her gözlem bir öncekine bağlıdır. Sıradaki ders zaman serisi verisiyle çalışmayı ele alıyor. Tarihler bir veri çerçevesinin indeksi olarak nasıl kullanılır, aylık bir seri çeyreklik ya da yıllık seriye nasıl çevrilir, gecikmeler, farklar ve yıllık değişimler nasıl hesaplanır ve mevsimsellik ile eğilim zaman serisi grafiklerinde nasıl görünür?