白飯之亂影響北科大的搜尋量


Posted by ar851060 on 2023-08-08

背景介紹

白飯之亂是指2023/07/08,北科大資財營的學生去一家熱炒店吃飯,結果白飯不夠,因此學生憤而在google map上評價1星。老闆覺得受委屈,因此在隔天投書媒體,這才開始導致事情的爆發。接續的狀況可以看這個懶人包。整個報導基本上是從 2023/07/092023/07/14
這個Project就是要看看白飯之亂這件事情導致北科大的搜尋提升了多少,我們所使用的是 google trend 從 2023/06/142023/07/14。資料如下:

黑色虛線為2023/07/08,而2023/07/09是新聞出來的第一天。而不同顏色的線表示不同的大學,分別為:

  • NTUST: 台科大
  • YunTech: 雲科大
  • NTUT: 北科大
  • NTU: 台大
  • NTHU: 清大

接下來會用三種方式來看待這個事件的影響力: Difference-in-Difference, Synthenic Control, 和 Regression Kink Discontinuity

Difference-in-Difference

要使用DiD的方法之前,必須要找到可以做control group的對象。在這邊,我找的比較對象為雲科大。我們來看這張圖:

我們利用linear two-way fixed effect model來找到兩者間的因果關係:

其中 $G = {0,1}$ 是指是否為實驗組(v.s. 控制組),$T = {0,1}$ 為是否在事件之前或之後。 $\tau$ 就是我們的目標。結果如下:

coef std err t p-value 0.025 0.975
Intercept 2.3600 1.672 1.411 0.164 -0.992 5.712
treatment $(G)$ 1.0000 2.365 0.423 0.674 -3.741 5.741
threshold (T) -0.1100 4.502 -0.024 0.981 -9.136 8.916
treatment:threshold ($\tau$) 53.7500 6.367 8.442 0.000 40.985 66.515

我們可以看到說 $\tau = 53.75$,並且因為p-value極小,可以拒絕"白飯事件對北科大搜尋量沒有影響"這個假設。
然而,因為我認為上面的53.75並不能呈現出北科大受到白飯事件報導的影響,所以我又做了另一個模型:

其中 $G$ 是指是否為實驗組(v.s. 控制組),$X$ 為三立新聞的報導白飯事件的新聞數,資料來源於巴哈姆特。 $\eta$ 就是我們的目標。結果如下:

coef std err t P-value 0.025 0.975
Intercept 2.3304 0.314 7.413 0.000 1.700 2.961
treatment 1.4223 0.445 3.199 0.002 0.531 2.314
News 0.0015 0.010 0.149 0.882 -0.018 0.021
treatment:News ($\eta$) 0.7139 0.014 51.013 0.000 0.686 0.742

我們可以看到說 $\eta = 0.7139$,並且因為p-value極小,可以拒絕"白飯事件的報導對北科大搜尋量沒有影響"這個假設。並且每一篇報導,都會增加0.7139北科大的搜尋量。

為什麼不用NTUST

一般來說,我們都是用台科大和北科大來互相比較,但是這邊DiD並沒有用NTUST來當比較組,原因如下:

這個現象違反了一個假設稱為 No Simultaneous Spillover Effects,或是叫Stable Unit Treatment Value Assumption (SUTVA)。簡單來說就是每個被測試的unit不能互相影響。我們可以做NTUST的DiD來看:

而結果為:

coef std err t p-value 0.025 0.975
Intercept 2.3600 0.298 7.925 0.000 1.764 2.956
treatment 2.6400 0.421 6.269 0.000 1.797 3.483
threshold -0.3600 0.677 -0.532 0.597 -1.715 0.995
treatment:threshold 4.1933 0.957 4.380 0.000 2.277 6.110

可以看到 $\tau = 4.19$,並且因為p-value極小,可以拒絕"白飯事件對台科大搜尋量沒有影響"這個假設。

Synthetic Control

可能有人再想,也許這樣還是不夠準確,例如雲科大和北科大一南一北的學校怎麼比。當遇到沒有好的控制組的時候,我們就可以Synthetic control來做,概念就是沒有控制組,我們就做一個出來。
我們利用linear Regression 和其他的學校查詢量來製造一個假的控制組,同時為了不要overfitting,我們控制所有係數在0和1之間,並且所有係數和為1。Synthetic control的結果如下:

$$Synthetic = 0.9787\times YunTech + 0.0213\times NTU$$

圖如下:

為了和DiD比較,所以之後的做法和DiD一樣,結果如下:

coef std err t p-value 0.025 0.975
Intercept 3.4548 1.672 2.066 0.044 0.102 6.808
treatment -0.0948 2.365 -0.040 0.968 -4.836 4.647
threshold -0.0839 4.503 -0.019 0.985 -9.111 8.943
treatment:threshold 53.7239 6.368 8.437 0.000 40.957 66.490

其實結論和DiD一樣的。同時,我也做了新聞量的版本:

coef std err t p-value 0.025 0.975
Intercept 3.4230 0.315 10.856 0.000 2.791 4.055
treatment 0.3297 0.446 0.739 0.463 -0.564 1.224
News 0.0021 0.010 0.209 0.835 -0.018 0.022
treatment:News 0.7133 0.014 50.821 0.000 0.685 0.741

結論也是和DiD一樣的。


Regression Kink Design

這個case也可以用 Regression Kink Design 來看,但是他必須要在多一個變數,由於我們是要比較兩者資料斜率的影響。我這邊的3個資料:時間 t、搜尋量 Y、以及新的變數:三立新聞數量 N,剛好巴哈 有人做了整理,我就直接用了。

From 巴哈

首先我們建立First-Stage Estimation:

$$N_i=\delta_0+\delta_1 (t-c)+\delta_2 D_i (t-c)+\eta_i$$

其中 $c$ 為發生變化日期,$(t-c)$ 就是離發生日的差異天數,$D_i$ 為是否在發生新聞之後。結果如下:

coef std err t p-value 0.025 0.975
Intercept -3.1966 2.125 -1.504 0.145 -7.565 1.172
relative_date (t-c) -0.1957 0.154 -1.272 0.215 -0.512 0.120
relative_date:threshold D(t-c) 31.9946 1.345 23.788 0.000 29.230 34.759

再來我們要建Reduced-form Estmation:

$$Y_i=\gamma_0+\gamma_1 (t-c)+\gamma_2 D_i (t-c)+\varepsilon_i$$

coef std err t p-value 0.025 0.975
Intercept 1.3020 0.928 1.403 0.173 -0.606 3.210
relative_date -0.1442 0.067 -2.146 0.041 -0.282 -0.006
relative_date:threshold 23.2435 0.587 39.571 0.000 22.036 24.451

最後,causal effect of treatment為

$$\alpha=\cfrac{\delta_2}{\gamma_2}=\cfrac{23.2435}{31.9946}=0.7265$$

但我們也可以直接用2SLS來做:

$$Y_i=\beta_0+\beta_1 (t-c)+\alpha N_i +\varepsilon_i$$

coef std err t p-value 0.025 0.975
Intercept 4.0396 0.767 5.264 0.000 2.462 5.617
relative_date 0.0252 0.056 0.449 0.657 -0.090 0.141
News 0.7118 0.016 45.789 0.000 0.680 0.744

得到的答案0.7118和上面得到的一樣。給個最後的圖:


#project









Related Posts

前端拿 API

前端拿 API

Scrum 是什麼及怎麼運用?

Scrum 是什麼及怎麼運用?

篩選方法- map( ), filter( ), find( ), some( )

篩選方法- map( ), filter( ), find( ), some( )


Comments