固定效应回归中虚拟变量的高效创建

问题描述 投票:0回答:1

我有 34 个国家/地区的时间面板数据,描述了他们承诺在哪几天以欧元提供军事援助。我正在运行一个固定效应回归来研究这种援助的总和如何随时间变化,这取决于一个独立的虚拟变量,该变量衡量接受者对这种军事援助的使用是成功的 (1) 还是不明显成功 (0)。这个自变量依赖于日期列。

因为我是在时间单位天里测量的,我的问题是我相信 plm 函数需要我为每个国家没有提供任何军事援助的每一天分配一个虚拟变量,这意味着我每年需要 365 个虚拟变量为 34 个捐助国中的每一个国家。

由于 plm 函数不解释 NA 值,我不得不将没有承诺援助的“空”天转换为“无”。然而,这会导致 R 将其解释为一种从不提供任何帮助的状态。

目前,我的数据集是这样的:

状态 约会 val_eur 成功
比利时 22/02/26 7600000 0
斯洛伐克 22/02/26 11000000 0
22/02/27 0 0

随后,当我运行此 plm 模型时,结果微不足道,并且系数与先前数据的预期方向相反。 t_sq 是平方时间控制变量。

plm(val_eur ~ success + t_sq, index="state", 模型=“内”,数据= df)

对于如何创建或使 R 解释回归所需的所有虚拟变量的任何想法,我将不胜感激!

我已经尝试在 plm 函数内部寻找方法来创建虚拟变量,就像它为国家固定效应创建虚拟变量一样(通过使用 index="state"),但我还没有找到任何方法。

手动编码数据集并添加大约 34*365 虚拟变量似乎有点编码噩梦。

编辑,更多信息:当我使用 factor() 按天分组时,我收到此错误消息“设置'row.names'时的非唯一值”,因为多个国家/地区在某些日期提供援助。

下面

请注意,出于某种原因,当我尝试此 plm 回归时收到一条错误消息,指出模型为空。我在原始模型中没有收到此错误消息。

#Creating some base example data 
state <- c("Belgium","Slovakia","NA")
an_date <- as.Date(c("26/02/2022","26/02/2022","27/02/2022"), format = "%d/%m/%Y")
as.Date("6/30/2016", format = "%m/%d/%Y")
val_eur <- c(7600000, 11000000, 0)
df <- data.frame(state, an_date, val_eur)

#Creation of a variable telling amount of days since invasion 
inv_date <- as.Date("2022-02-24")
df$t <- difftime(df$an_date,inv_date, units ="days")
#creation of a square time control variable for the regression. 
df$t = as.numeric(df$t)
df$t_sq <- df$t^2

#Creating a time interval that the independent dummy variable uses. 
#bse means "battlefield success effects" and marks a 30 day time period 
#following the russian retreat from kiev. 
bse <- interval(ymd("2022-03-29"), ymd("2022-05-04"))
df$bse <- df$an_date %within% bse
#Translating the TRUE/FALSE values to a dummy column for battlefield success effects 
df$bse <- as.integer(df$bse)

#(failed) attempt at regression
library(plm)

fe_mod <- plm(val_eur ~ bse + t, index=c("state"),
              model="within", data=df)
r dummy-variable panel-data plm
1个回答
0
投票

我没有 100% 理解你想要做什么,所以我可能偏离了轨道,但对我来说,一年中几天创建数百个假人听起来很荒谬。为什么不将日期转换为连续变量“自特定事件以来的天数”并在 ols 回归中使用此数字?例如。将 2 月 23 日(一年中的第 54 天)转换为 54.

© www.soinside.com 2019 - 2024. All rights reserved.