如何處理乘法常數和加法常數固定效應?
來自 Nick Huntington-Klein,效果:
固定效應是一種控制所有變數的方法,無論它們是否被觀察到,只要它們在某個更大的類別中保持不變。我們怎麼能做到這一點?簡單的!我們只控制更大的類別,並且在這樣做的過程中,我們控制了該類別中的所有常量。11 如果您願意,我們正在控制分層數據層次結構中更高的變數。
變數“在某個更大的類別中保持不變”意味著什麼?例如,假設我們正在研究農村城鎮獲得電力對其生產力的影響。一個明顯的後門是地理。山區山坡上的農村城鎮將更難以實現電氣化,並且由於其他原因,它們的生產力也可能不同。
假設我有一個數據集,其中包含乘法和加法的固定效果。
例如,假設我正在嘗試查看蘋果消費與收入之間的關係。我觀察家用蘋果,我懷疑 Bob MIS 報告了他吃過的蘋果。該值始終為 0.5 倍真蘋果。而另一方面,Alice 的調查數據始終準確無誤。這在“個人”類別中是乘法常數。
除此之外,2000 年以後的幾年裡,新的調查出來了,我懷疑現在所有的家庭調查蘋果措施每個措施都加了 0.3。這在“年”類別中是相加不變的。
如果我知道這些數字(+0.3 和 0.5x),那麼我可以從我的數據中減去它們。但是,假設我不知道這些數字,只是懷疑我的一些數據具有乘法和加法效應,可能會混淆任何估計。
此外,假設收入與消費的蘋果之間的真實關係由下式給出
$$ \log(\text{income}) = 0.3 \log(\text{apples}) $$
鑑於我觀察到,我如何估計真實的關係$$ \text{observed apples} = \left(\text{apples} + 0.3 * \text{I}(\text{year}>=2000)\right)*\begin{cases}0.5 & ID = Bob\1 & ID \ne Bob\end{cases} $$
如果效果是乘法的,那麼我可以使用典型的固定效果回歸。如果固定效應是相加的,那麼我可以對觀察結果進行貶義並以這種方式執行回歸。但由於這兩者兼而有之,如果我使用具有固定效應的對數模型,那麼加性常數效應在時間內不再是常數。
這是我使用的程式碼。提前致謝!
library(data.table) library(fixest) library(modelsummary) DT <- CJ(ID = c("Bob", "Alice"), year = 1992:2020) # make observations DT[, truth := runif(nrow(DT))] # create fixed effects DT[, ID_FE := ifelse(ID == "Bob", 0.5, 1)] DT[, year_FE := ifelse(year >= 2000, 0.3, 0)] # create observed variable: DT[, observed := (truth + year_FE) * ID_FE] # create additive means DT[, ID_mean := mean(observed), by = .(ID)] DT[, year_mean := mean(observed), by = .(year)] # create multiplicative means DT[, ID_log_mean := mean(log(observed)), by = .(ID)] DT[, year_log_mean := mean(log(observed)), by = .(year)] DT[, ln_observed := log(observed)] # create differences for manual FE estimation DT[, diff_ln_observed := ln_observed - ID_log_mean - year_log_mean] DT[, diff_observed := observed - ID_mean - year_mean] # get actual Y DT[, Y := truth ^ 0.3] DT[, ln_Y := log(Y)] # run regression true_relationship <- lm(ln_Y~log(truth),data = DT) m1 <- lm(ln_Y ~ diff_ln_observed, data = DT) twfe <-feols(ln_Y ~ log(observed) |as.factor(ID) + as.factor(year),data = DT) msummary(list(true_relationship, m1, twfe))
沒有隨機項,這個練習更接近於非線性方程求解而不是計量經濟學。如果收入和蘋果之間的真實關係是: $$ \log( y_{nt} ) = \gamma \log( x_{nt}), $$ 但不是觀察 $ {x_{nt}} $ ,計量經濟學家實際上觀察到 $$ x^{nt}= \delta_n (x{nt} + u_t), $$ 然後,使用觀察到的變數,我們有 $$ \log( y_{nt} ) = \gamma \log( \beta_{0t} + \beta_{1n} x^{nt} ) $$ 和 $$ \beta{0t} := - u_t $$ $$ \beta_{1n} := \frac{1}{\delta_n}. $$
如果觀察值多於參數: $ NT>N+T+1, $ 在您的範例中就是這種情況,可以使用非線性求解器最小化(例如)精確計算所有參數: $$ \left( \log( y ) - f(\gamma,{\beta_{0t}}{t=1}^T,{\beta{1n}}{n=1}^N; x^* \right)^T\left( \log( y ) - f(\gamma,{\beta{0t}}{t=1}^T,{\beta{1n}}{n=1}^N; x^* \right) $$ 在 $ (\gamma, {\beta{0t}}{t=1}^T,{\beta{1n}}_{n=1}^N ). $
請注意,蘋果(消費?)決定收入有點奇怪,通常情況正好相反。有了這個規範,個人就有購買蘋果的動機來增加他們的收入,……如果蘋果足夠便宜,則無限期地:發生內生性,但這不是問題,因為沒有隨機項。
這是說明該聲明的 R 程式碼:
# ------------------------- library(optimx) dat_dum_T = rbind(1,1) %x% matrix( c( rep( 0, 8 ), rep( 1, 21 )), ncol=1 ) dat_dum_N = diag(1,nrow=2) %x% rep( 1, 29 ) colnames( dat_dum_N ) <- c( paste0("dum_N_", 1:2 ) ) # # This function computes the sum of squared residuals for different # parameter values # SSR_f = function( param, Data=DT ){ gamma = param[1] par_dum_N = matrix( param[2:3], ncol=1 ) par_dum_T = param[4] rownames( par_dum_N ) = paste0( "beta_N_", seq(1:2)) ln_y = Data[,"ln_Y"] x_obs = Data[,"observed"] dum_N = par_dum_N[1]*dat_dum_N[,1] + par_dum_N[2]*dat_dum_N[,2] dum_T = par_dum_T*dat_dum_T # The observed and true x are related by # x_nt = x_obs_nt/dum_n + par_dum_t SSR = as.numeric( sum( ( ln_y - gamma*( log( x_obs/dum_N - dum_T ) ) )^2 ) ) return( SSR ) } true_val = c( 0.3, 1, 0.5, 0.3 ) SSR_f( true_val, DT ) par_0 = c( 0.5, 0.5, 1, 0 ) names(par_0) = c( "gamma","dum_N_1","dum_N_2", "dum_T" ) # check if starting values are admissible (and cause no numerical problem) SSR_f( par_0, DT ) # The nonlinear numerical minimization procedure optimx( par=par_0, fn=SSR_f, method="Nelder-Mead", control = list( trace=4, maxit=1000 ) )