Tahmin Aralıkları (Prediction Interval)
Lineer Regresyon yazısında regresyon katsayıları $\beta$'yi veriden hesaplamayı öğrendik. Bu bir anlamda alttaki denklemde verili $y,A$ ile geri kalanları tahmin etmektir.
$$ y = A\beta + \epsilon $$
ki
$$ \epsilon \sim Normal(\mathbf{0}, \sigma^2 \mathbf{I}) $$
Yani katsayıların $A$ ile çarpımları artı gürültü ($\sigma$ ile parametrize edilmiş bir Gaussian üzerinden) bu sonucu verecektir. Tahmin edici,
$$ \hat{\beta} = (A^TA)^{-1}A^Ty $$
olarak bilinir. Bu formülü pek çok yazıda gördük, mesela [3]. O zaman
$$ \hat{\beta} = (A^TA)^{-1}A^T(A\beta + \epsilon) $$
$$ \hat{\beta} = \beta + (A^TA)^{-1}A^T \epsilon \qquad (1) $$
Eğer $E( \hat{\beta} )$ hesaplamak istersek,
$$ E( \hat{\beta} ) = E( \beta + (A^TA)^{-1}A^T \epsilon )$$
Fakat $E(\epsilon) = 0$ olduğu için üstteki hemen $ E( \hat{\beta} ) = \beta $ haline geliyor. Vektör rasgele değişkenler üzerinde varyans, ya da kovaryans hesabını daha önce görmüştük, bu hesabı $\hat{\beta}$ üzerinde uygularsak,
$$ Var(\hat{\beta}) =
E \big[
(\hat{\beta} - E(\hat{\beta}))
(\hat{\beta} - E(\hat{\beta}))^T
\big]
$$
Biraz önce $E( \hat{\beta} ) = \beta $ demiştik, o zaman üstteki
$$
Var(\hat{\beta}) =
E \big[
(\hat{\beta} - \beta)
(\hat{\beta} - \beta)^T
\big]
\qquad (2)
$$
olur. Üstte $\hat{\beta} - \beta$ var, bu (1)'den $\beta$ çıkartılıyor anlamına gelir, o zaman oradaki $\beta$ kaybolur, geriye
$$ \hat{\beta} - \beta = \beta + (A^TA)^{-1}A^T \epsilon - \beta $$
$$ = (A^TA)^{-1}A^T \epsilon $$
Üstteki ifadeyi (2) içine koyalım,
$$ E \bigg[ \big( (A^TA)^{-1}A^T \epsilon \big) \big( (A^TA)^{-1}A^T \epsilon \big)^T \bigg] $$
Beklenti içini açalım,
$$ = E [(A^TA)^{-1}A^T \epsilon \epsilon^T A (A^TA)^{-1}] $$
Tersi işleminin devriği kayboldu çünkü $A^TA$ simetriktir, onun tersi de simetriktir, simetrik matrisin devriği yine kendisidir.
$$ = (A^TA)^{-1}A^TA E[\epsilon \epsilon^T] (A^TA)^{-1} $$
$$ = E[\epsilon \epsilon^T] (A^TA)^{-1} $$
$$ Var(\hat{\beta}) = \sigma^2 (A^TA)^{-1} \qquad (3) $$
Yeni bir tahmin $a$ için
$$ \hat{y}_a = a^T \hat{\beta} $$
$\beta$ yerine $\hat{\beta}$ kullandık. Şimdi tüm ifadenin varyansına bakalım,
$$ Var(\hat{y}_a) = Var(a^T \hat{\beta}) $$
Bundan önce $Var(a^T \hat{\beta}) = \big[a^T(A^TA)^{-1}a \big] \sigma^2$ olduğunu ispatlamak lazım, [1, sf 617] olduğu gibi - öncelikle $Var(a^T \hat{\beta})$ formülünde $a$ ve $\hat{\beta}$ nin birer vektör olduğunu hatırlayalım, o zaman $a^T \hat{\beta}$ bir noktasal çarpımdır, yani $a_1\hat{\beta}_1 + ... + a_n\hat{\beta}_n$. Demek ki
$$ Var(a^T \hat{\beta}) = Var(a_1\hat{\beta}_1 + ... + a_n\hat{\beta}_n)$$
Şimdi [4] bölümünden hatırlayacağımız üzere,
$$ Var(X_1+ .. + X_n ) = Var(X_1) + .. + Var(X_n) + 2 \sum_{i<j}^{} Cov(X_i,X_j) $$
Bizim elimizde $a_i\hat{\beta}_i$'lar var tabii, o zaman
$$ Var(a^T \hat{\beta}) = Var(a_1\hat{\beta}_1) + .. + Var(a_n\hat{\beta}_n) + 2 \sum_{i<j}^{} Cov(a_i \hat{\beta}_i,a_j \hat{\beta}_j) $$
$$ Var(a_i\hat{\beta}_i) = a_i^2Var(\hat{\beta}_i)$$
olduğunu hatırlayalım, o zaman iki üstteki
$$ = a_1^2Var(\hat{\beta}_1) + .. + a_n^2Var(\hat{\beta}_n) + 2 \sum_{i<j} Cov(a_i \hat{\beta}_i,a_j \hat{\beta}_j) $$
Peki $Var(\hat{\beta}_i)$ nedir? (3)'u hatırlayalım, buradaki matris çarpımından hareketle, her $Var(\hat{\beta}_i) = c_{ii} \sigma^2$ diyebiliriz ki $c_{ii}$, $(A^TA)^{-1}$ matrisinin (köşegeninde bulunan) bir öğesidir.
$$ = a_1^2c_{11} \sigma^2 + .. + a_n^2c_{nn} \sigma^2 + 2 \sum_{i<j} Cov(a_i \hat{\beta}_i,a_j \hat{\beta}_j) $$
Aynı şekilde $ Cov(a_i\hat{\beta}_i,a_j \hat{\beta}_j) = 2a_ia_jc_{ij}\sigma^2$ diyebiliriz,
$$ = a_1^2c_{11} \sigma^2 + .. + a_n^2 c_{nn} \sigma^2 + 2 \sum_{i<j} a_ia_jc_{ij}\sigma^2 $$
$$ = \big[a_1^2c_{11} + .. + a_n^2 c_{nn} + 2 \sum_{i<j} a_ia_jc_{ij}\big]\sigma^2 $$
Üstteki ifadeyi rahat bir şekilde $\big[a^T(A^TA)^{-1}a \big] \sigma^2$ olarak yazabiliriz.
Şimdi güven aralığı yaratmanın zamanı geldi. Hatırlayalım ki $\hat{\beta}_1,\hat{\beta}_2,,.$ tahmin edicilerinin kendileri birer rasgele değişkendir, ve bu değişkenler Normal dağılıma sahiptirler. O zaman $a^T\hat{\beta}$ da normal olarak dağılmıştır ve bu dağılımın beklentisinin $E(a^T\hat{\beta}) = a^T\beta$ olduğunu biliyoruz (dikkat eşitliğin sağında şapkasız $\beta$ var). O zaman "gerçek" $\beta$ için bir güvenlik aralığı oluşturmak için $a^T\hat{\beta} - a^T\beta $'nin da Normal olarak dağılmasının zorunlu olduğundan hareketle,
$$ Z = \frac{a^T\hat{\beta} -a^T \beta } { \sqrt{ Var(a^T \hat{\beta}) } } = \frac{a^T\hat{\beta} -a^T \beta } { \sigma \sqrt{ a^T(A^TA)^{-1}a } } $$
Böylece bir standart normal yarattık, ve bu formülü daha önce güvenlik aralığı için yaptığımız gibi düzenlersek,
$$ a^T\hat{\beta} \pm z_{\alpha/2} \sigma \sqrt{ a^T(A^TA)^{-1}a } $$
Daha önce gördüğümüz gibi $\sigma$ yerine $S$ koyabiliriz, o zaman Öğrenci T dağılımı elde ederiz (yazının sonunda $\sigma,S$ teorik bağlantısının sebepleri bulunabilir),
$$ T = \frac{a^T\hat{\beta} -a^T \beta } { S \sqrt{ a^T(A^TA)^{-1}a } } $$
ki bu güven aralığı
$$ a^T\hat{\beta} \pm t_{\alpha/2} S \sqrt{ a^T(A^TA)^{-1}a } $$
olarak hesaplanabilecektir, T dağılımının serbestlik derecesi $n-(k+1)$'dir, ki $n$ eldeki veri nokta sayısı, $k$ işe kaç $\beta$ değişkeninin olduğudur.
Örnek
Basit bir örnek üzerinde görelim ([1, sf 620]'den alındı),
import pandas as pd
import numpy as np
df = pd.read_csv('11.1.csv',sep=' ')
print df.head()
import statsmodels.formula.api as smf
results = smf.ols('y ~ x', data=df).fit()
mse = np.sum(results.resid**2) / (len(df)-2)
s = np.sqrt(mse)
print 'mse', mse, 's', s
print results.summary()
x y
0 -2 0
1 -1 0
2 0 1
3 1 1
4 2 3
mse 0.366666666667 s 0.605530070819
OLS Regression Results
==============================================================================
Dep. Variable: y R-squared: 0.817
Model: OLS Adj. R-squared: 0.756
Method: Least Squares F-statistic: 13.36
Date: Mon, 11 May 2015 Prob (F-statistic): 0.0354
Time: 17:26:07 Log-Likelihood: -3.3094
No. Observations: 5 AIC: 10.62
Df Residuals: 3 BIC: 9.838
Df Model: 1
Covariance Type: nonrobust
==============================================================================
coef std err t P>|t| [95.0% Conf. Int.]
------------------------------------------------------------------------------
Intercept 1.0000 0.271 3.693 0.034 0.138 1.862
x 0.7000 0.191 3.656 0.035 0.091 1.309
==============================================================================
Omnibus: nan Durbin-Watson: 2.509
Prob(Omnibus): nan Jarque-Bera (JB): 0.396
Skew: -0.174 Prob(JB): 0.821
Kurtosis: 1.667 Cond. No. 1.41
==============================================================================
import numpy.linalg as lin
A = df[['x']]
A['intercept'] = 1.
A = A[['intercept','x']]
ATA_inv = lin.inv(np.dot(A.T,A))
print ATA_inv
beta_hat = np.array(results.params)
a = np.array([[1,1]]).T
[[ 0.2 0. ]
[ 0. 0.1]]
pm = np.dot(np.dot(a.T, ATA_inv),a)[0][0]
pred = np.dot(a.T,beta_hat)[0]
print pm, pred
0.3 1.7
from scipy.stats.distributions import t
t95_val = t.ppf(0.95,len(df)-2)
print 'tval', t95_val
print t95_val*s*pm
print 'Yuzde 90 guven araligi', \
(pred - np.array([1,-1])*t95_val*s*np.sqrt(pm))
tval 2.3533634348
0.427509698202
Yuzde 90 guven araligi [ 0.91947765 2.48052235]
Görüldüğü gibi [1, sf 620] ile aynı sonucu aldık.
Başkanlık Yarışı Tahminleri
Daha önce [5] yazısında gördüğümüz 2016 başkanlık yarışı tahminini şimdi bu yeni yöntemimizi kullanarak yapalım.
import statsmodels.formula.api as smf
import pandas as pd
df1 = pd.read_csv('../stat_linreg/prez.csv',sep=',')
regr = 'incumbent_vote ~ gdp_growth + net_approval + two_terms'
results1 = smf.ols(regr, data=df1).fit()
A1 = df1.copy()
A1['intercept'] = 1.
A1 = A1[['intercept','gdp_growth','net_approval','two_terms']]
import numpy.linalg as lin
from scipy.stats.distributions import t
t975_val1 = t.ppf(0.975,len(df1)-2)
beta_hat1 = np.array(results1.params)
ATA_inv1 = lin.inv(np.dot(A1.T,A1))
a1 = np.array([[1., 2.0, 0., 1]]).T
pm1 = np.dot(np.dot(a1.T, ATA_inv1),a1)[0][0]
pred1 = np.dot(a1.T,beta_hat1)[0]
mse1 = np.sum(results1.resid**2) / (len(df1)-2)
s1 = np.sqrt(mse1)
print 'Yuzde 95 Guven Araligi', \
(pred1 - np.array([1,-1])*t975_val1*s1*np.sqrt(pm1))
Yuzde 95 Guven Araligi [ 46.95198025 49.64353527]
Yani Demokratların kazanma şansı neredeyse hiç yok gibi. Önceki başkanlık yarışı tahmini katsayıların güven aralıklarını kullanmıştı; şimdi nihai tahminin güven aralığına baktık. Aradaki fark şudur - katsayıların güven aralıklarını kullandığımızda onları en kötüleri birarada ve en iyileri birada olacak şekilde yanyana kullanmış olduk; bu tür bir kullanım bu katsayıların arasındaki korelasyonu dikkate almaz, çünkü, belki bir katsayı X'in en kötümser olduğu noktada katsayı Y daha iyimser bir tahminde bulunacaktır, çünkü aradaki bağlantı böyledir...? Bu durumlar ilk kullanımda yakalanamazdı. Bu sebeple ilk yöntemle hesaplanan güven aralığı ikincisine nazaran daha geniş olacaktı, ki bunun olduğunu gördük.
$\sigma,\hat{\sigma},S$ İlişkileri
Öncelikle mümkün bazı notasyonel karışıklığı düzeltmeye uğraşalım; kitaplarda $\sigma,\hat{\sigma}$ kullanımı tek boyutlu verinin nüfus standart hatası ve onun tahmin edicisi (estimatör) için de kullanılıyor. Bu yazıda bu farklı, bu yazıdaki $\sigma$ bir lineer modelin hatasını temsil eden $\sigma$.
Bu tür bir $\sigma$'nin tahmin edicisi $\hat{\sigma}$ şu şekilde tanımlı,
$$ \hat{\sigma}^2 = \frac{1}{n} \sum_{i=1}^{n} (Y_i - \hat{Y}_i)^2 $$
İspat için [2, sf 557-558]. Fakat üstteki kodda $n-2$ kullanımı görüyoruz, bu nereden geliyor? Bunun için $n/(n-2) \hat{\sigma}^2$ formülünün $\sigma^2$ için bir yansız tahmin edici (unbiaşed estimatör) olduğunu bilmemiz lazım. İspat için bakınız [2, sf 560]. Yansızlık tanımı için {\em Örneklem Dağılımları} yazısı.
Tüm bunları biraraya koyarsak, $Y_i - \hat{Y}_i$ regresyondan bize
döndürülen resid
dizini, ve bu "artıkların" karelerini alıp
toplayınca (ki artıklar tahmin ile gerçek verinin arasındaki fark), ve
onları $n-2$ ile bölünce $\sigma^2$ için bir yansız tahmin edici $S^2$'yi
nasıl elde ettiğimizi görebiliriz herhalde.
Ek
$\hat{\beta}$ Dağılımı
Lineer regresyonu $Y=X\beta + \epsilon$ olarak modellediğini farzedelim, ki $X,Y,\beta$ çok boyutlu değişkenler / matris / vektör ve $\epsilon \sim N(0,\sigma I)$ yani cok boyutlu bir Gaussian. Soru su: Acaba $\beta$'nın tahmin edicisi $\hat{\beta}$'nin dağılımı nedir?
Tahmin edici hesabi
$$ \hat{\beta} = (X^TX)^{-1}X^TY $$
olduğunu biliyoruz. $Y$'yi yerine koyarsak,
$$ = (X^TX)^{-1}X^T(X\beta + \epsilon) $$
$$ = \cancel{(X^TX)^{-1}X^TX}\beta + (X^TX)^{-1}X^T\epsilon $$
$$ = \beta + (X^TX)^{-1}X^T\epsilon $$
Bir yan not, biliyoruz ki çok boyutlu Gaussian mesela $G \sim N(\phi,\rho)$'a $BG + A$ şekilde ilgin (affine) transform uygulayınca sonuç $N(\phi+A, B\rho B^T)$ oluyor. Burada $\epsilon$ bir çok boyutlu Gaussian. O zaman üstteki transformu hesaplayabiliriz. $\beta$ toplamı basit, esas iki taraftan $(X^TX)^{-1}X^T$ ve onun devriği ile çarpılan standart sapmaya ne olacak ona bakalım,
$$ (X^TX)^{-1}X^T \sigma X(X^{-1}X^{-T})^{T} $$
$$ = (X^TX)^{-1}X^T \sigma X X^{-1}X^{-T} $$
$$ = \sigma (X^TX)^{-1} $$
Sonra $\beta$ toplamını hatırlarız, yani $\hat{\beta} \sim N(\beta, \sigma (X^TX)^{-1} )$ olarak dağılmıştır, demek ki katsayılarımızın regresyon tahmini "gerçek" katsayılar etrafında merkezlenen bir Gaussian'dır.
Kaynaklar
[1] Wackerly, Mathematical Statistics, 7th Edition
[2] Larsen, Introduction to Mathematical Statistics and Its Applications, 5th Edition
[3] Bayramlı, Lineer Cebir, Ders 15,16
[4] Bayramlı, Istatistik, Beklenti, Kovaryans ve Korelasyon
[5] Bayramlı, Istatistik, Lineer Regresyon
Yukarı