使用R语言ivreg包三部分右侧符号遇阻,求解决方案
问题
使用ivreg包的三部分公式格式时遇到运行错误,代码示例如下:
# 数据 data("SchoolingReturns") # ivreg 基础用法 library(ivreg) ivreg(log(packs) ~ log(rprice) + log(rincome) | salestax + log(rincome), data = CigaretteDemand) # 尝试三部分写法但无法运行 ivreg(log(packs) ~ log(rprice) | log(rincome) | salestax, data = CigaretteDemand)
根据ivreg的文档,三部分公式格式为y ~ x1 | x2 | z1 + z2,依次对应外生变量、内生变量、仅针对内生变量的工具变量,但实际使用时出错。
解决方法
你搞反了三部分公式里外生变量和内生变量的位置。
在你的基础用法模型中:
log(rincome)是外生变量(不需要工具变量,直接纳入模型)log(rprice)是内生变量(需要用salestax作为工具变量)
而你写的三部分公式把两者位置颠倒了,正确的写法应该是把外生变量放在第一部分,内生变量放在第二部分:
ivreg(log(packs) ~ log(rincome) | log(rprice) | salestax, data = CigaretteDemand)
三部分公式的逻辑是:
- 第一部分:所有外生解释变量(包括控制变量,不需要工具变量的变量)
- 第二部分:所有内生解释变量(需要工具变量的变量)
- 第三部分:仅针对内生变量的工具变量(不需要重复外生变量)
这样写就和你原来的基础用法模型完全等价,同时避免了重复外生变量的繁琐。
内容的提问来源于stack exchange,提问作者Marco
相关产品推荐
相关产品推荐

