使用glmnet的LASSO:年度虚拟变量与demeaned数据结果差异疑问
变量方差结构差异是核心
年度demeaned操作是把每个变量减去对应年份的均值,相当于直接剥离了变量中“年份整体波动”的成分,只保留同一年份内不同个体间的相对差异。这种处理会缩小变量的整体方差,但让变量的有效信号(个体间差异)相对更突出。而采用年度虚拟变量且设置penalty.factor=0的方式,是靠虚拟变量吸收年份效应,但解释变量仍保留原始方差(包含年份间的大幅波动)。LASSO的惩罚逻辑依赖系数大小——当变量方差较大时,系数估计值会更小(系数=变量与因变量的协方差/变量方差),这类小系数更容易被LASSO的惩罚项压缩至0。交叉验证选最优lambda的逻辑不同
cv.glmnet通过交叉验证最小化预测误差来选择lambda。方案2中,强制保留的年度虚拟变量会占用部分模型自由度,且解释变量的原始方差大,导致它们对因变量的边际贡献被稀释。交叉验证过程中,为了最小化整体误差,可能会选择更大的lambda,最终将所有解释变量全部剔除。而方案1中,demeaned后的变量信号更集中,交叉验证会选择更温和的lambda,因此能保留那些具备实际边际贡献的变量。模型利用的变异来源不同
年度demeaned的模型本质是在“组内估计”框架下运行LASSO,仅利用同一年份内个体间的差异识别变量效应——这种变异往往更能反映变量与因变量的真实关联(若年份效应为外生)。而加入年度虚拟变量的模型属于“混合估计”,同时用到年份间和个体间的变异,但LASSO在处理高维变量时,会优先剔除那些在年份间变异中噪声多、信号弱的变量,当所有解释变量都符合这一特征时,就会被全部剔除。
内容的提问来源于stack exchange,提问作者giocek

