dersblog



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ı