R Fixest 包:没有更多外生变量的 IV 估计
R Fixest Package: IV Estimation Without Further Exogenous Variables
我打算 运行 使用 fixest
包的 feols
函数进行固定效应的工具变量回归。但是,我在没有进一步外生控制的情况下指定估计的语法有问题。
考虑以下示例:
# Load package
require("fixest")
# Load data
df <- airquality
我想要类似以下内容,即通过检测内生变量和固定效应来解释结果:
feols(Temp | Month + Day | Ozone ~ Wind, df)
但是,这会产生错误:
The dependent variable is a constant. Estimation cannot be done.
它仅在我添加更多外生协变量时有效(如文档示例中所示):
feols(Temp ~ Solar.R | Month + Day | Ozone ~ Wind, df)
我该如何解决这个问题?我如何 运行 在没有进一步控制的情况下进行估计,例如在这种情况下 Solar.R
?
注意:我 post 这是在 Stack Overflow 而不是 Cross Validated 上,因为这个问题涉及编码语法问题,而不是估计背后的计量经济学技术。
其实公式怎么写好像有误区
语法为:Dep_var ~ Exo_vars | Fixed-effects | Endo_vars ~ Instruments
.
Fixed-effects
和 Endo_vars ~ Instruments
部分是可选的。另一方面,带有 Exo_vars
的部分必须 always 存在,即使只有截距。
知道了,下面的工作:
base = iris
names(base) = c("y", "x1", "x_endo", "x_inst", "fe")
feols(y ~ 1 | x_endo ~ x_inst, base)
#> TSLS estimation, Dep. Var.: y, Endo.: x_endo, Instr.: x_inst
#> Second stage: Dep. Var.: y
#> Observations: 150
#> Standard-errors: Standard
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 4.345900 0.08096 53.679 < 2.2e-16 ***
#> fit_x_endo 0.398477 0.01964 20.289 < 2.2e-16 ***
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> RMSE: 0.404769 Adj. R2: 0.757834
#> F-test (1st stage): stat = 1,882.45 , p < 2.2e-16 , on 1 and 148 DoF.
#> Wu-Hausman: stat = 3.9663, p = 0.048272, on 1 and 147 DoF.
# Same with fixed-effect
feols(y ~ 1 | fe | x_endo ~ x_inst, base)
#> TSLS estimation, Dep. Var.: y, Endo.: x_endo, Instr.: x_inst
#> Second stage: Dep. Var.: y
#> Observations: 150
#> Fixed-effects: fe: 3
#> Standard-errors: Clustered (fe)
#> Estimate Std. Error t value Pr(>|t|)
#> fit_x_endo 0.900061 0.117798 7.6407 0.016701 *
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> RMSE: 0.333489 Adj. R2: 0.833363
#> Within R2: 0.57177
#> F-test (1st stage): stat = 44.77 , p = 4.409e-10, on 1 and 146 DoF.
#> Wu-Hausman: stat = 0.001472, p = 0.969447 , on 1 and 145 DoF.
回到最初的例子:
feols(Temp | Month + Day | Ozone ~ Wind, df)
表示因变量将为 Temp | Month + Day | Ozone
,此处的管道表示逻辑或,导致所有观察结果为 1。因此出现错误消息。
- 要修复它并获得适当的行为,请使用
feols(Temp ~ 1 | Month + Day | Ozone ~ Wind, df)
。
我打算 运行 使用 fixest
包的 feols
函数进行固定效应的工具变量回归。但是,我在没有进一步外生控制的情况下指定估计的语法有问题。
考虑以下示例:
# Load package
require("fixest")
# Load data
df <- airquality
我想要类似以下内容,即通过检测内生变量和固定效应来解释结果:
feols(Temp | Month + Day | Ozone ~ Wind, df)
但是,这会产生错误:
The dependent variable is a constant. Estimation cannot be done.
它仅在我添加更多外生协变量时有效(如文档示例中所示):
feols(Temp ~ Solar.R | Month + Day | Ozone ~ Wind, df)
我该如何解决这个问题?我如何 运行 在没有进一步控制的情况下进行估计,例如在这种情况下 Solar.R
?
注意:我 post 这是在 Stack Overflow 而不是 Cross Validated 上,因为这个问题涉及编码语法问题,而不是估计背后的计量经济学技术。
其实公式怎么写好像有误区
语法为:Dep_var ~ Exo_vars | Fixed-effects | Endo_vars ~ Instruments
.
Fixed-effects
和 Endo_vars ~ Instruments
部分是可选的。另一方面,带有 Exo_vars
的部分必须 always 存在,即使只有截距。
知道了,下面的工作:
base = iris
names(base) = c("y", "x1", "x_endo", "x_inst", "fe")
feols(y ~ 1 | x_endo ~ x_inst, base)
#> TSLS estimation, Dep. Var.: y, Endo.: x_endo, Instr.: x_inst
#> Second stage: Dep. Var.: y
#> Observations: 150
#> Standard-errors: Standard
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 4.345900 0.08096 53.679 < 2.2e-16 ***
#> fit_x_endo 0.398477 0.01964 20.289 < 2.2e-16 ***
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> RMSE: 0.404769 Adj. R2: 0.757834
#> F-test (1st stage): stat = 1,882.45 , p < 2.2e-16 , on 1 and 148 DoF.
#> Wu-Hausman: stat = 3.9663, p = 0.048272, on 1 and 147 DoF.
# Same with fixed-effect
feols(y ~ 1 | fe | x_endo ~ x_inst, base)
#> TSLS estimation, Dep. Var.: y, Endo.: x_endo, Instr.: x_inst
#> Second stage: Dep. Var.: y
#> Observations: 150
#> Fixed-effects: fe: 3
#> Standard-errors: Clustered (fe)
#> Estimate Std. Error t value Pr(>|t|)
#> fit_x_endo 0.900061 0.117798 7.6407 0.016701 *
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> RMSE: 0.333489 Adj. R2: 0.833363
#> Within R2: 0.57177
#> F-test (1st stage): stat = 44.77 , p = 4.409e-10, on 1 and 146 DoF.
#> Wu-Hausman: stat = 0.001472, p = 0.969447 , on 1 and 145 DoF.
回到最初的例子:
feols(Temp | Month + Day | Ozone ~ Wind, df)
表示因变量将为Temp | Month + Day | Ozone
,此处的管道表示逻辑或,导致所有观察结果为 1。因此出现错误消息。- 要修复它并获得适当的行为,请使用
feols(Temp ~ 1 | Month + Day | Ozone ~ Wind, df)
。