我目前正在撰写我的论文,并且对R来说比较新。 我需要执行一个heckit两阶段模型(invMillsRatio plus heckit),因为我有很多缺失的数据。但我不知道如何做到这一点。我有3个主要模型(2个线性回归(1个线性回归和1个对数线性回归)和1个回归回归),但我现在该如何执行这个赫克曼校正?InvMillsRatio&Heckit修正
我真的很感激你的帮助,我完全不知道!
我目前正在撰写我的论文,并且对R来说比较新。 我需要执行一个heckit两阶段模型(invMillsRatio plus heckit),因为我有很多缺失的数据。但我不知道如何做到这一点。我有3个主要模型(2个线性回归(1个线性回归和1个对数线性回归)和1个回归回归),但我现在该如何执行这个赫克曼校正?InvMillsRatio&Heckit修正
我真的很感激你的帮助,我完全不知道!
我一直在努力寻找同样的问题,我想我已经找到了解决方案。这当然不是最优雅的方式,但它运行良好。欢迎您随时提供其他反馈意见和友好建议!
第一步:创建一个虚拟的因变量。我的因变量是FDI outstock,因此如果它不同于0或NA,则取值为1,否则为0。下面是我用我的伪DV创建新列代码:
outstock <- outstock %>%
mutate(
outstock4 = as.numeric(
case_when(
log_outstock == 0 ~ "0",
is.na(log_outstock) ~ "0",
log_outstock > 0 ~ "1",
log_outstock < 0 ~ "1",
TRUE ~ as.character(log_outstock)
)
)
)
第二步(如果适用于您的数据集):声明为面板数据,使用plm.data()函数从plm包。我用这个代码:
outstock4 <- outstock %>%
plm.data(index = c("CP", "year"))
第三步:在sampleSelection包,heckit功能的作用类似于此:
heckit(dummy_DV ~ IV,
DV ~ IV, data)
请注意,这是2个独立的回归(第一选择公式,然后你估计的回归方程),并且没有提及lm,glm,对数线性或其他。
现在,对我来说,只要我没有固定的效果包括在内,就可以工作。在这种情况下,大量的NAs使得它无法运行。因此,我删除了NAs,而不是使用na.omit(),因为这样会删除太多的观测值,因为我没有使用每个模型中数据库中存在的所有变量),而是将它们过滤出来:
model1 <- summary(heckit(dummy_DV ~ IV,
DV ~ IV + as.factor(year) + as.factor(iso_o) + as.factor(iso_d),
data = filter(database, !is.na(IV1), !is.na(IV2), !is.na(IV3), !is.na(IV4), !is.na(IV5))))
我希望它有帮助。祝你好运!
我在搜索引擎中输入了“heckman missing values R package”并获得了一些潜在有用的链接(“sampleSelection”包是第一个搜索结果)。也许从那里开始并贯穿这些例子。 – lmo
我想你会在stats.stackexchange.com上得到关于这个问题的更多有用的评论。 –
谢谢,我已经尝试了很长一段时间。然而,正如我上面写的,我只有简单的lm回归,并且没有prock或者logit回归,这对Heckman修正是必要的。现在我只是想知道如果我仍然可以执行它,或者如果有一种方法或类似 –