Multivariat & Dummy regression

Pertemuan 3

Metodologi penelitian

Omitted variable bias

  • Omitted variable bias: ketika ada variabel yang harusnya signifikan tapi kita tidak include di regresi (diomit).
  • Hal ini akan mengakibatkan \(\beta\) yang bias untuk variabel yang kita include.
  • Anda akan lihat error yang berpola.
  • Kita atasi dengan regresi multivariat.

Hari ini

  • Regresi multivariat
  • Regresi dummy

Regresi multivariat

\[ Y=\beta_0+\beta_1 X_1+\beta_2 X_2 +...+\beta_jX_j+\mu \]

  • pada intinya, kita regresikan lebih dari 1 X untuk 1 Y.
  • Banyak hal di dunia ini tidak tergantung pada 1 hal.

Belajar dan nilai

  • Nilai UAS Metopel tidak hanya tergantung dari jam belajar per minggu, tapi juga tergantung seberapa paham mahasiswa akan statistik dan matematika.
  • Pemahaman math & stats diukur dengan nilai UAS math & stats.

\[ Y = \beta_0 + \beta_1 X + \beta_2 S + \mu \]

Y = UAS Metopel ; X = jam belajar seminggu ; S = UAS Statistik.

Omitted variable bias

  • Jika saya tidak tau bahwa nilai UAS Statistik dapat menjadi ukuran “modal awal” mengikuti kelas metopel, maka saya akan omit variabel tersebut.
  • Jika ternyata variabel tersebut penting, maka meninggalkan variabel tersebut akan mengakibatkan omitted variable bias.
  • Kita akan bermain dengan data generated: by design, X dan S berpengaruh terhadap Y (saya tau karena saya yang bikin).

Tanpa S

library(readxl) # buat baca excel
library(tidyverse) # buat data wrangling
library(kableExtra) # buat tabel
dat <- read_excel("latihan2.xlsx")
kbl(dat) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"))
X S Y
2 61 48.5
0 94 53.0
14 29 53.5
19 94 90.0
10 81 71.5
15 95 82.5
11 47 55.5
14 82 77.0
0 81 51.5
17 28 56.0
9 20 41.0
5 22 36.0
8 69 63.5
12 76 74.0
17 22 52.0
12 93 76.5
12 48 55.0
11 67 63.5
5 42 42.0
13 87 80.5
19 51 75.5
2 73 52.5
10 27 44.5
10 22 43.0
2 37 31.5
18 45 68.5
5 91 66.5
14 66 67.0
6 32 42.0
2 51 41.5
4 39 32.5
18 43 68.5
14 24 55.0
4 54 50.0
0 25 22.5
11 94 77.0
15 77 78.5
7 23 39.5
10 29 40.5
7 37 41.5
16 86 82.0
11 94 81.0
0 88 53.0
0 61 38.5
16 28 58.0
6 83 67.5
19 46 70.0
8 24 37.0
19 84 86.0
9 29 39.5
13 47 59.5
14 85 77.5
10 73 70.5
3 89 62.5
19 73 82.5
11 35 44.5
10 21 38.5
19 77 89.5
9 89 68.5
19 95 99.5
15 88 83.0
14 51 64.5
2 74 46.0
17 71 77.5
17 54 73.0
20 83 87.5
3 72 51.0
13 25 47.5
13 74 71.0
12 35 48.5
9 67 65.5
10 52 51.0
7 47 49.5
1 71 52.5
19 35 64.5
4 66 51.0
3 62 42.0
9 23 34.5
17 43 65.5
5 70 59.0
8 91 72.5
14 84 82.0
2 29 23.5
11 66 65.0
2 30 27.0
0 36 29.0
9 50 55.0
14 90 81.0
14 64 69.0
6 46 50.0
5 59 46.5
7 21 34.5
10 72 67.0
0 73 42.5
5 72 61.0
15 34 60.0
13 83 72.5
19 59 73.5
4 28 34.0
1 83 55.5

Plot tanpa S

plot(dat$X,dat$Y,xlab = "jam belajar",ylab="nilai metopel")
abline(lm(dat$Y~dat$X))

Regresi tanpa S

reg1<-lm(data=dat,Y~X)
summary(reg1)

Call:
lm(formula = Y ~ X, data = dat)

Residuals:
     Min       1Q   Median       3Q      Max 
-22.2986 -11.4112   0.0501  10.9055  22.2082 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  38.3547     2.3772  16.135  < 2e-16 ***
X             2.0493     0.2076   9.874 2.27e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 12.17 on 98 degrees of freedom
Multiple R-squared:  0.4987,    Adjusted R-squared:  0.4936 
F-statistic: 97.49 on 1 and 98 DF,  p-value: 2.274e-16

Plot residual tanpa S

dat$u<-resid(reg1)
plot(dat$Y,dat$u,xlab="nilai metopel",ylab="error")
abline(h=0) # membuat garis horizontal di y=0

dat$u<-resid(reg1)
plot(dat$X,dat$u,xlab="jam belajar",ylab="error")
abline(h=0)

Error diagnostic

  • Dapat kita lihat bahwa OLS (Ordinary Least Square) menghasilkan rata-rata yang 0
[1] -2.405194e-16
  • Akan tetapi, \(\mu\) tidak terdistribusi secara random terhadap \(Y\).
  • Artinya, ada variasi di error yang bisa dijelaskan oleh variabel lain.
  • Kabar baiknya, variabel lain ini masih independen terhadap \(X\)
    • Terlihat dari \(\mu\) yang kelihatan independen terhadap \(X\)

Regresi dengan S

Sekarang kita tambahkan S ke regresi kita

reg2<-lm(data=dat,Y~X+S)
summary(reg2)

Call:
lm(formula = Y ~ X + S, data = dat)

Residuals:
    Min      1Q  Median      3Q     Max 
-5.6677 -2.5026  0.0932  2.0725  5.3520 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 11.13743    0.90463   12.31   <2e-16 ***
X            1.92363    0.05085   37.83   <2e-16 ***
S            0.48907    0.01246   39.27   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.975 on 97 degrees of freedom
Multiple R-squared:  0.9703,    Adjusted R-squared:  0.9697 
F-statistic:  1586 on 2 and 97 DF,  p-value: < 2.2e-16

Bandingkan 2 model

Tanpa S Dengan S
(Intercept) 38.355 11.137
(2.377) (0.905)
X 2.049 1.924
(0.208) (0.051)
S 0.489
(0.012)
Num.Obs. 100 100
R2 0.499 0.970
R2 Adj. 0.494 0.970
AIC 787.5 506.8
BIC 795.3 517.2
Log.Lik. -390.741 -249.389
F 97.492 1586.117
RMSE 12.04 2.93
  • Tanpa S:

\[ \hat{Y}=38.355+2.049X \]

  • Dengan S:

\[ \hat{Y}=11.137+1.924X+0.489S \]

Plot dengan S

dat$m<-resid(reg2)
plot(dat$Y,dat$m,xlab="nilai metopel",ylab="error")
abline(h=0) # membuat garis horizontal di y=0

plot(dat$X,dat$m,xlab="jam belajar",ylab="error")
abline(h=0)

\(\mu\) dan \(X\) jadi independen, dan rentang mengecil.

Kesimpulan

  • Selama \(\mu\) masih ada polanya terhadap \(Y\), maka dapat kita katakan ada sesuatu di error yang masih bisa menjelaskan \(Y\).
  • Rentang lebih besar, tetapi koefisien \(X_1\) masih cukup dekat dengan aslinya -> tidak bias.
    • hal ini karena \(X_1\) dan \(X_2\) independen.
  • Jika \(\mu\) berkorelasi dengan \(X_1\), masalahnya lebih besar. Tapi menyelesaikan masalah ini ada di luar materi kita.

Menerjemahkan koefisien

\[ \hat{Y}=38.355+2.049X \]

  • Jika waktu belajar \(\uparrow\) 1 jam, maka nilai UAS metopel \(\uparrow\) 2.049
  • misalnya satuan diukur dalam menit, \(\beta\) pasti akan \(=\frac{2.049}{60}=0.03415\)
  • terjemahannya: jika waktu belajar \(\uparrow\) 1 menit, nilai UAS \(\uparrow\) 0.03415.

\[ \hat{Y}=11.137+1.924X+0.489S \]

  • Jika waktu belajar \(\uparrow\) 1 jam, maka nilai UAS metopel \(\uparrow\) 1.924 untuk S yang sama

No perfect multicollinearity

  • Dengan regresi multivariat, ada tambahan asumsi untuk OLS bisa BLUE
  • Multicol: di mana \(X_1\) ada hubungan linear yang sempurna dengan \(X_2\)
  • Contoh: pendidikan dan income orang tua.
  • Di dunia nyata, mungkin saja rajin belajar metopel ada korelasi positif dengan nilai UAS matematika & statistika.

No perfect multicollinearity

  • Hubungan yang diperbolehkan:

    • hubungan yang lemah
    • hubungan yang tidak linear
  • \(X_1 = \sqrt{X2} \rightarrow\) contoh hubungan tidak linear -> boleh

  • \(X_1=\beta_1+\beta_2 X_2+\mu \rightarrow\) contoh hubungan linear.

    • \(\beta_1\) kecil dan signifikansinya lemah -> boleh

Dummy variable

  • Bagaimana jika data kita kualitatif?
jenis data definisi contoh
Kategorikal kualitatif, ga ada urutan nama, jenis kelamin, suku
Ordinal kualitatif, ada urutan ukuran baju, ukuran sepatu, medali
Hitung kuantitatif, integer nomor telepon, jumlah anak
Riil kuantitatif, riil PDB, ekspor impor

Dummy variable

  • Seandainya \(S\) bukan lagi nilai UAS statistika, tapi kondisi kesehatan mahasiswa ketika sedang UAS metopel

  • Hipotesisnya, meskipun belajarnya banyak, tapi kalau lagi sakit, pasti ngerjain ujian kurang konsen.

dat2 <- read_excel("latihan3.xlsx") # Baca data
kbl(dat2) %>% # bikin tabel
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"))
X S Y
2 sakit 16.0
0 sehat 28.0
14 sakit 62.0
19 sakit 80.5
10 sakit 51.0
15 sakit 62.5
11 sakit 46.5
14 sehat 84.0
0 sakit 17.0
17 sehat 87.5
9 sehat 57.5
5 sehat 49.5
8 sakit 39.0
12 sehat 65.0
17 sakit 71.5
12 sakit 53.0
12 sehat 74.0
11 sakit 41.5
5 sakit 30.5
13 sakit 50.5
19 sakit 69.5
2 sehat 35.0
10 sehat 60.0
10 sehat 67.0
2 sakit 20.0
18 sehat 87.0
5 sakit 20.5
14 sehat 73.0
6 sakit 28.0
2 sehat 43.0
4 sakit 18.0
18 sakit 76.0
14 sehat 84.0
4 sakit 25.0
0 sehat 34.0
11 sehat 75.5
15 sakit 61.5
7 sakit 27.5
10 sakit 41.0
7 sehat 53.5
16 sakit 62.0
11 sakit 43.5
0 sehat 35.0
0 sehat 31.0
16 sehat 91.0
6 sakit 30.0
19 sakit 69.5
8 sakit 31.0
19 sakit 82.5
9 sakit 43.5
13 sehat 70.5
14 sehat 75.0
10 sakit 41.0
3 sakit 24.5
19 sehat 90.5
11 sakit 49.5
10 sakit 45.0
19 sakit 78.5
9 sakit 48.5
19 sakit 69.5
15 sehat 83.5
14 sakit 53.0
2 sakit 19.0
17 sakit 67.5
17 sehat 94.5
20 sakit 74.0
3 sehat 44.5
13 sehat 80.5
13 sehat 78.5
12 sehat 76.0
9 sehat 67.5
10 sakit 38.0
7 sehat 53.5
1 sakit 12.5
19 sehat 102.5
4 sakit 29.0
3 sehat 39.5
9 sakit 45.5
17 sakit 68.5
5 sakit 25.5
8 sakit 37.0
14 sehat 83.0
2 sehat 31.0
11 sehat 73.5
2 sakit 21.0
0 sehat 23.0
9 sakit 34.5
14 sakit 53.0
14 sakit 52.0
6 sakit 25.0
5 sehat 45.5
7 sehat 52.5
10 sehat 70.0
0 sehat 34.0
5 sakit 32.5
15 sakit 65.5
13 sakit 58.5
19 sehat 96.0
4 sehat 45.0
1 sehat 31.5

Dummy variable

  • Kita buat variabel dummy, di mana \(S=0\) jika kondisi mahasiswa tersebut sakit, dan \(S=1\) jika mahasiswa tersebut sehat pas ujian.
  • Beda dari sebelumnya, S di sini cuma punya 2 nilai: 1 atau 0.
  • Untuk observasi sakit: \(Y=\beta_0+\beta_1X+\mu\)
  • Untuk observasi sehat: \(Y=\beta_0+\beta_2+\beta_1X+\mu\)
  • \(\beta_2\) adalah beda nilai UAS antara yang sehat dan sakit untuk jam belajar yang sama.

Regresi tanpa S

reg3<-lm(Y~X, data=dat2)
summary(reg3)

Call:
lm(formula = Y ~ X, data = dat2)

Residuals:
    Min      1Q  Median      3Q     Max 
-16.768 -10.278  -4.094  10.188  19.885 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  21.0726     2.2608   9.321 3.61e-15 ***
X             3.2391     0.1974  16.409  < 2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 11.57 on 98 degrees of freedom
Multiple R-squared:  0.7332,    Adjusted R-squared:  0.7304 
F-statistic: 269.3 on 1 and 98 DF,  p-value: < 2.2e-16

Plot residual tanpa S

dat2$u<-resid(reg3)
plot(dat2$Y,dat2$u,xlab="nilai metopel",ylab="error")
abline(h=0) # membuat garis horizontal di y=0

plot(dat2$X,dat2$u,xlab="jam belajar",ylab="error")
abline(h=0)

Plot residual tanpa S by group

ggplot(data=dat2,aes(y=u,x=Y,color=S,shape=S))+geom_point(size=2)+
geom_hline(yintercept=0)+theme_minimal()

ggplot(data=dat2,aes(y=u,x=X,color=S,shape=S))+geom_point(size=2)+
geom_hline(yintercept=0)+theme_minimal()

Regresi dengan S

reg4<-lm(Y~X+S, data=dat2)
summary(reg4)

Call:
lm(formula = Y ~ X + S, data = dat2)

Residuals:
    Min      1Q  Median      3Q     Max 
-8.2544 -4.0346  0.1816  3.8767  7.8808 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  9.78226    0.97921    9.99   <2e-16 ***
X            3.42632    0.07547   45.40   <2e-16 ***
Ssehat      21.47210    0.89116   24.09   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 4.4 on 97 degrees of freedom
Multiple R-squared:  0.9618,    Adjusted R-squared:  0.961 
F-statistic:  1221 on 2 and 97 DF,  p-value: < 2.2e-16

Plot residual dengan S

dat2$u<-resid(reg4)
ggplot(data=dat2,aes(y=u,x=Y,color=S,shape=S))+geom_point(size=2)+
geom_hline(yintercept=0)+theme_minimal()

ggplot(data=dat2,aes(y=u,x=X,color=S,shape=S))+geom_point(size=2)+
geom_hline(yintercept=0)+theme_minimal()

intepretasi

\[ \hat{Y}=9.78226+3.42632X+21.47210S \]

  • Jam belajar \(\uparrow\) 1 jam, nilai \(\uparrow\) 3.42632, jika kondisi kesehatan sama.
  • Jika jam belajar sama, kondisi sehat memiliki nilai 21.4721 poin lebih tinggi daripada yang sakit.
  • Sebaliknya juga bisa: kondisi sakit dapat nilai lebih rendah 21.4721 poin daripada yang sehat.

Plot

Reference group

  • Sangat penting untuk tau yang mana reference groupnya.
  • Karena kita intepretasi \(\beta_2\) sebagai beda antara yg \(S=1\) dengan reference group.
  • Dalam kasus kita, memilihkan uuntuk kita mana yang jadi reference group
  • Ssehat -> berarti reference groupnya=sakit.

Regresi Sehat=0

## buat variabel baru namanya SS di mana SS=1 kalau S="sakit"
dat2$SS<-ifelse(dat2$S=="sakit",1 , 0) 
reg5<-lm(Y~X+SS, data=dat2)
summary(reg5)

Call:
lm(formula = Y ~ X + SS, data = dat2)

Residuals:
    Min      1Q  Median      3Q     Max 
-8.2544 -4.0346  0.1816  3.8767  7.8808 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept)  31.25437    0.95805   32.62   <2e-16 ***
X             3.42632    0.07547   45.40   <2e-16 ***
SS          -21.47210    0.89116  -24.09   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 4.4 on 97 degrees of freedom
Multiple R-squared:  0.9618,    Adjusted R-squared:  0.961 
F-statistic:  1221 on 2 and 97 DF,  p-value: < 2.2e-16

\(\beta_1\) dan \(\beta_2\) sama persis, \(\beta_2\) negatif.

Group dengan anggota lebih dari 2?

  • Sangat mungkin kita punya variabel kategorikal lebih dari 2.
    • Kelas (Piwar 3A,3B,3C,3D), nilai akhir statistika (A,B,C,D,E).
    • industri (agrikultur, manufaktur, jasa), provinsi, regional.
  • Jika itu yang terjadi, kita harus tambahkan variabel dependen:

\[ Y=\beta_0+\beta_1X+\beta_23A+\beta_23B+\beta_23C+\mu \]

  • jika mahasiswa ada di kelas 3A, berarti 3A=1, 3B=0, 3C=0
  • \(\beta_2\) adalah bedanya mahasiswa 3A dengan reference group.
  • \(\beta_3\) apa? Reference groupnya siapa?

Mingdep

  • Reading regression table
  • Various data characteristics: level, log, difference and time series