Python中Fixed Effect Model去均值后加回均值的疑问及简化方法验证
一、去均值后加回组均值会不会重新引入固定效应?
不会。先明确分组去均值的核心逻辑:我们做分组去均值,是为了消除组内固定效应(比如个体固定效应、时间固定效应)。从公式层面看,原始模型是 $y_{it} = \alpha_i + X_{it}\beta + \epsilon_{it}$,对每个组(比如个体$i$)去均值后,$\tilde{y}{it} = y{it} - \bar{y}i$,$\tilde{X}{it} = X_{it} - \bar{X}_i$,此时固定效应$\alpha_i$会被完全抵消——因为$\bar{y}i = \alpha_i + \bar{X}i\beta + \bar{\epsilon}i$,两者相减后只剩下$\tilde{y}{it} = \tilde{X}{it}\beta + \tilde{\epsilon}{it}$,$\alpha_i$已经被彻底剥离。
至于加回$\bar{y}_i$和$\bar{X}_i$,这一步只是让拟合值回归到原始变量的尺度,完全不影响核心系数$\beta$的估计结果。回归时我们关注的是$\beta$,而这个系数只由去均值后的$\tilde{y}$和$\tilde{X}$决定,加回组均值只是还原$y$的原始水平,并没有重新引入需要消除的固定效应$\alpha_i$——$\alpha_i$已经被吸收在组均值里,不会干扰系数估计。
二、仅对y和X做分组去均值后直接OLS,是不是正确的FE模型?
是对的。这种方法就是组内估计法(Within Estimator),是固定效应模型的标准估计方式之一,和给每个组添加虚拟变量回归得到的$\beta$估计结果完全一致。
举个Python实操例子(假设数据按id分组的面板数据):
import pandas as pd import statsmodels.api as sm # 对y和X做分组去均值 df['y_demean'] = df.groupby('id')['y'].transform(lambda x: x - x.mean()) df['X_demean'] = df.groupby('id')['X'].transform(lambda x: x - x.mean()) # 基于去均值后的变量做OLS回归 model = sm.OLS(df['y_demean'], sm.add_constant(df['X_demean'])) results = model.fit() print(results.summary())
这段代码得到的$\hat{\beta}$,和用专业面板数据工具(比如linearmodels库的PanelOLS)添加个体固定效应的结果完全相同。
如果是双向固定效应模型(同时控制个体和时间固定效应),只需要同时对个体和时间两个维度去均值,再做OLS回归,结果也和双向虚拟变量回归一致。
内容的提问来源于stack exchange,提问作者Rust

