You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多年混合数据Logistic回归中匹配滞后一期因变量的实现方法

你之前直接对全列执行lag(df$Policy_Executive_Compensation_ESG_Performance)的方式存在核心问题:R默认按行顺序做滞后,不会区分企业主体,会把不同企业的观测错位匹配,完全不符合「同一家企业T期自变量对应T+1期因变量」的需求。

解决方法核心是先按企业分组,再做时序错位处理,具体操作如下:

步骤1:安装/加载必要工具包

用dplyr做分组处理最方便,代码如下:

install.packages("dplyr") # 未安装的话先执行这行
library(dplyr)

步骤2:预处理面板数据,生成匹配好的变量

我们可以直接把被解释变量提前1期(也就是取同一家企业下一年的观测值),这样每行的自变量都是T期、被解释变量都是T+1期,自动匹配:

df_processed <- df %>%
  group_by(Firm) %>% # 按企业分组,核心操作,避免跨企业错位
  arrange(Year) %>% # 确保同企业下的年份按升序排列
  # 生成提前1期的被解释变量,n=1表示提前1期
  mutate(CSR_Contracting_next = lead(Policy_Executive_Compensation_ESG_Performance, n = 1)) %>%
  ungroup() %>%
  filter(!is.na(CSR_Contracting_next)) # 删掉没有下一期观测的样本(比如所有企业最后一年的观测)

如果你的面板是不平衡面板(部分企业缺失某些年份的观测),需要严格匹配间隔刚好1年的样本,可以加一步过滤:

df_processed <- df %>%
  group_by(Firm) %>%
  arrange(Year) %>%
  mutate(
    CSR_Contracting_next = lead(Policy_Executive_Compensation_ESG_Performance, n = 1),
    year_gap = lead(Year) - Year
  ) %>%
  ungroup() %>%
  filter(year_gap == 1, !is.na(CSR_Contracting_next))

步骤3:直接用处理好的数据集建模

建模时指定数据源即可,不需要重复加df$前缀:

mod1 <- glm(CSR_Contracting_next ~
              ESG_Score +
              Environmental_Pillar_Score +
              Social_Pillar_Score +
              Board_Cultural_Diversity_Percent_Score +
              Board_Gender_Diversity_Percent_Score +
              Policy_Board_Diversity +
              CSR_Sustainability_External_Audit +
              ROA +
              Size +
              PTB_Ratio +
              Leverage +
              CSR_Sustainability_Committee +
              Independent_Board_Members +
              CEO_Chairman_Separation +
              Chairman_is_ex_CEO +
              Policy_Equal_Voting_Right +
              Shareholders_Approval_Stock_Comp_Plan +
              Policy_Executive_Retention +
              Compensation_Improvement_Tools +
              Executive_Compensation_Policy +
              CEO_Compensation_Link_to_TSR +
              Executive_Compensation_LT_Objectives +
              Shareholders_Vote_on_Executive_Pay +
              Veto_Power_or_Golden_share +
              SOE,
            data = df_processed,
            family = binomial, maxit = 100)

内容的提问来源于stack exchange,提问作者Ludovico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 02:54:04