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

固定效应回归中虚拟变量的高效创建问题(R语言plm包)

国家固定效应回归:日度面板数据的虚拟变量生成问题

数据与研究背景

  • 拥有34个国家的日度时间面板数据,记录各国军事援助承诺日期、欧元金额
  • 目标:运行国家固定效应回归,研究军事援助总额随时间的变化,核心自变量是基于日期生成的虚拟变量success(1=援助成效显著,0=无明显成效)

遇到的核心问题

  • 时间单位为天,需要为每个国家未提供援助的每一天生成对应记录,但手动编码34×365个虚拟变量不现实
  • 为处理plm无法识别NA的问题,将无援助的空日期设为none,但R误将其当作独立国家,导致回归结果不显著且系数方向与预期相反
  • 尝试用plm的index参数自动生成虚拟变量未果;用factor()按天分组时,因多国同日提供援助出现non-unique values when setting 'row.names'错误

当前数据集示例

Statean_dateval_eursuccess
Belgium22/02/2676000000
Slovakia22/02/26110000000
none22/02/2700

最小可复现示例(MRE)

# 创建基础示例数据
state <- c("Belgium","Slovakia","NA")
an_date <- as.Date(c("26/02/2022","26/02/2022","27/02/2022"), format = "%d/%m/%Y")
val_eur <- c(7600000, 11000000, 0)
df <- data.frame(state, an_date, val_eur)

# 计算入侵后天数
inv_date <- as.Date("2022-02-24")
df$t <- difftime(df$an_date, inv_date, units="days")
df$t <- as.numeric(df$t)
df$t_sq <- df$t^2

# 创建战场成效虚拟变量(bse)
library(lubridate)
bse <- interval(ymd("2022-02-27"), ymd("2022-03-04"))
df$bse <- df$an_date %within% bse
df$bse <- as.integer(df$bse)

# 尝试固定效应回归
library(plm)
fe_mod <- plm(val_eur ~ bse + t, index=c("state"),
              model="within", data=df)

注:运行该MRE时出现“模型为空”错误,但原始模型无此问题

求助需求

寻求高效生成或让R识别所需虚拟变量的方法,解决日度面板下国家固定效应回归的数据集构造与回归运行问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 07:17:51