如何測試給定策略是否成功?
我有一些醫療研發和銷售的數據,我的教授讓我檢查一下 2016 年實施的政策是否對研發和研發/銷售數據產生了影響。我試圖繪製多年來的增長率,但他說我們不需要增長率,它必須通過每年平均研發支出來解決。(平均值超過多家公司)。如何對政策變化進行顯著性檢驗?
讓我們假設一個平衡的公司小組 $ i=1,…,N $ 在時間段內觀察到 $ t=1,…,T $ .
讓 $ s_{it} $ 表示公司的研發費用 $ i $ 時間 $ t $ 然後讓
$$ \bar s_t :=\frac{1}{N} \sum_i s_{it}, $$
表示時間 $ t $ 平均的。
現在考慮一個簡單的回歸模型 $$ (1)\ \ s_{it} = \beta_0 + \beta_1I[t\geq 2016] + e_{it} $$ 在哪裡 $ I[t\geq 2016] $ 暫時是政策實施後的指標。我假設該政策旨在刺激公司的研發投資,因此我們假設 $ \beta_1>0 $ 如果政策生效。
使用 POOLED OLS 估計器的正規方程很容易證明
$$ \hat \beta_0 = \frac{1}{NT_1} \sum_i \sum_t s_{it}I[t< 2016], $$ 在哪裡 $ T_1 $ 是治療前的時間段數。因此 $ \hat \beta_1 $ 大致是治療/政策實施前的平均研發費用水平。
如果模型(1)為真,那麼 $ plim \ \ \hat \beta_0 = \beta_0 = \mathbb E[s_{it} \lvert t<2016] $ 這是任何公司在治療前任何一年的預期研發費用水平。
你也可以證明
$$ \hat \beta_1 = \frac{1}{NT_2} \sum_i s_{it} I[t \geq 2016]-\frac{1}{NT_1} \sum_i \sum_t s_{it}I[t< 2016] $$
如果模型(1)為真,那麼 $ plim \ \ \hat \beta_1 = \beta_1 = \mathbb E[s_{it} \lvert t\geq 2016]- \mathbb E[s_{it} \lvert t<2016] $ 這是任何公司在治療後任何一年的預期研發費用水平。
你可以繪製系列 $ {s_t}_{t=1}^T $ 並得到 - 如果模型(1)是真的 - 像這樣
然而,隨著時間的推移,可能會發生其他事情,雖然您沒有任何不受政策實施影響的公司控制組,但您仍然可能比估計模型 (1) 做得更好。
考慮以下情節
每個時間段從哪裡開始 $ s_t $ 到 $ s_{t+1} $ 研發有小幅增長讓我們稱之為 $ \lambda $ . 然後在治療年份的增加略小。
藍色和讀取線是使用上面的估計器找到的,很明顯,因為它們沒有考慮時間趨勢,所以它們高估了效果。用於繪圖的數據是在模型之後生成的
$$ s_{it} = \beta_0 + \lambda \cdot t + \beta_1 I[t\geq 2016] + e_{it}, $$ 其中包括時間趨勢。
在這個模型中,效果是立竿見影的。但是效果也可能在治療後的幾年內發生,而不僅僅是在治療的那一年,因此你可以有一個像這樣的模型
$$ s_{it} = \beta_0 + \lambda \cdot t + \beta_1 I[t\geq 2016] + \beta_2 I[ t\geq 2017]+ e_{it}. $$
要點是你應該按照教授所說的去做併計算時間平均值 $ s_t $ 並繪製它們並查看它們。特別注意治療當年和近年治療後的情況(基於效果後因,需要時間才能充分發揮的原則)
IR 模擬數據並通過以下程式碼行生成繪圖:
# simulate panel of RD library(data.table) set.seed(1) N <- 50 #Number of firms T <- 16 #Number of time periods TT <- 9 #policy implementation year (treatment year) b_0 <- 5 b_1 <- 2 # Simulate model (1) s <- b_0 + b_1 * (1:T >= TT) + rnorm(N*T) # Make dataset id <- rep(1:N,each=T) time <- rep(1:T,N) I <- as.numeric(time>=TT) mydata <- data.table(id,time,s,I) # Compute time averages time_agg <- mydata[,.(s_t=mean(s)),by=time] #Plot time averages plot(time_agg$s_t,ylim=c(0,10),pch=20,xlab="time",ylab="R&D") points(1:TT,rep(b_0,TT),type="l",lwd=1,col="blue") points((TT):T,rep(b_0+b_1,T-TT+1),type="l",lwd=1,col="red") savePlot("plot1.jpg",type="jpg") # Simulate model (2) s <- b_0 + b_1 * (1:T >= TT) + 0.5*1:T + rnorm(N*T) # Make dataset mydata <- data.table(id,time,s,I) # Compute time averages time_agg <- mydata[,.(s_t=mean(s)),by=time] model <- lm(s~I,data=mydata) hat_b_0 <- coef(model)[1] hat_b_1 <- coef(model)[2] #Plot time averages plot(time_agg$s_t,ylim=c(5,16),pch=20,xlab="time",ylab="R&D") points(1:TT,rep(hat_b_0,TT),type="l",lwd=1,col="blue") points((TT):T,rep(hat_b_0+hat_b_1,T-TT+1),type="l",lwd=1,col="red") savePlot("plot2.jpg",type="jpg")
我假設您需要計算某種回歸,以顯示(如果)研發費用的變化如何影響特定時間間隔內的銷售變化。