計量經濟學

如何處理乘法常數和加法常數固定效應?

  • February 14, 2022

來自 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 ) )

引用自:https://economics.stackexchange.com/questions/50338