Dasar-Dasar Regresi

Latar belakang

Saya baru-baru ini mengikuti seminar tentang penerapan regresi dalam bisnis. Saya agak terkejut dengan apa yang disertakan dan apa yang tidak. Banyak kursus/buku teks statistik terapan yang terlalu menekankan (mungkin terlalu banyak) pada interval kepercayaan dari perkiraan koefisien, namun tidak menghabiskan banyak waktu untuk menjelaskan interval kepercayaan yang dapat Anda bangun mengenai prediksi suatu model! Ada banyak informasi yang dapat kita pelajari dari residu model regresi. Metrik yang akan kita fokuskan hari ini adalah estimasi simpangan baku sisa, σ^ ('topi' seharusnya berada di atas sigma, namun medium tidak memiliki dukungan kuat untuk ekspresi matematika).

Topi Sigma

Estimasi simpangan baku sisa tidak hanya menentukan koefisien R-Squared. Faktanya, ini dapat memberi tahu kita tentang keakuratan prediksi kita. Katakanlah kita melakukan regresi terhadap nilai tes standar pendapatan keluarga siswa, dan kita menemukan bahwa deviasi standar dari residu adalah 7 poin. Ini memberitahu kita bahwa kita dapat memprediksi nilai ujian siswa, memberi atau mengambil 7 poin. Ini juga membantu kami membangun interval kepercayaan untuk prediksi model kami. Untuk menjelaskan hal ini lebih lanjut, kita harus membahas tentang distribusi sampling dari estimasi varians sisa, σ^².

Distribusi sampling tersebut di atas berpusat di sekitar varians sisa populasi, σ², dan menyerupai distribusi chi kuadrat dengan jumlah observasi dikurangi jumlah derajat kebebasan prediktor. Mengetahui hal ini, kita dapat menyatakan bahwa 95 persen residu sampel harus berada dalam plus atau minus 2σ^², dan sekitar 67 persen dalam plus atau minus σ^². Mari gunakan python dan beberapa data nyata untuk melihat bagaimana pengetahuan ini dapat bermanfaat.

Contoh

Di sini kami melakukan regresi nilai ujian siswa k-8 (dari california) berdasarkan jumlah komputer per siswa. Dataset tersebut merupakan dataset yang cukup terkenal di kalangan mahasiswa ekonometrik, yang disebut “caschool”.

import pandas as pd
from statsmodels.formula.api import ols
data = pd.read_csv('/Users/vincentshields/desktop\
/econometrics/caschool.csv')
reg = ols('testscr ~ comp_stu', data=data).fit\
(cov_type = 'HC3')

kita bisa mengakses residu model melalui statsmodels.formula.api.ols.regressionresults.resid, artinya kita bisa mendapatkan σ^ seperti ini:

reg.resid.std()

Dalam kasus kami, perintah ini menghasilkan 18.34194887504922 (lebih banyak tempat desimal dari yang diperlukan). Pertama, mari kita tulis fungsi prediksi khusus:

def predict(data,reg):
    
    """Takes an array-like object and
    returns regression predictions for 
    each element"""
    
    output = []
    for x in data:
        output.append(reg.params[0] + x*reg.params[1])
    return output
predict([0.35,0.41,0.22],reg)

Dari sini kita mendapatkan

[671.1550136421824, 675.9193047688409, 660.8323828677557]

Seberapa yakin kita dengan prediksi ini? Kita bisa mengetahuinya seperti ini:

print("We are 95\
 percent confident that\
 the true value falls within +-{:.4f} points\
 from our prediction.".format(2*reg.resid.std()))
# outputs
We are 95 percent confident that the true value falls within +-36.6839 points from our prediction.

Perlu disebutkan bahwa apa yang kami lakukan di sini adalah mengasumsikan bahwa regresi yang kami sesuaikan adalah model sebenarnya, bukan model estimasi. Jadi, kami memperlakukan σ^ sebagai kesalahan standar prediksi. Pada kenyataannya, kesalahan standar sebenarnya kemungkinan besar akan sedikit lebih tinggi dari σ^.

Metode ini dapat bermanfaat, terutama dalam peramalan keuangan menggunakan ols. Modelnya tidak harus linier; Anda dapat menerapkan teknik yang sama pada model eksponensial atau logaritma. Bagaimanapun, terima kasih telah membaca! Saya harap informasi ini bermanfaat bagi seseorang.