第 10 章 计量统计分析

10.1 受限因变量模型的内生性分析

2021应经王新悦 2023-3-9 14:32:35

  • 老师好我想请问下是不是logit模型不能用工具变量法做内生性检验,一般都是ivprobit的操作命令呢

  • 那logit模型和mlogit模型有什么可以做内生性检验的方法呢

胡华平 2023-3-9 16:23:00

重点首先不在于内生性的检验,你要综合理解不同估计方法的优缺点

对于受限因变量(分类因变量)模型,如果有内生性变量,首先要考虑你怀疑的内生自变量是否是连续的还是虚拟变量

总结起来,首先要妥善选择估计方法,其次才考虑内生性检验的问题(因为自变量是否内生,大部分可以用经济学理论就可以分析的出来)。颠倒二者关系,那就是缘木求鱼。

2021应经王新悦 2023-3-9

老师,我有一个自变量是社会资本。我的题目是信用环境、社会资本和农户借贷行为。有审稿老师说社会资本对农户获得正规机构贷款的影响存在内生性,可以进一步做一下检验。但是我的基础模型是用logit模型。我就有点不明白这里怎么继续做内生性检验了。

因变量一个是借贷渠道选择(多分类),一个是能否获得正规金融机构的贷款(二分类)。做了一个多分类logit模型,以及一个二分类logit模型。其中评委怀疑的自变量“社会资本”是连续型。

胡华平 2023-3-9 16:46:53

还是那句话,社会资本的内生性,在你这个模型里,理论上就应该是存在内生性的,检验不检验不是关键。

关键是你要处理这个问题。最直接的就是2SLS法。你看我给你发的pdf,他就同时使用了probit模型、sssimplereg、IV-2SLS对数据进行了多次建模分析,然后比较结果。起码你很快就能做后面三列的三种分析方法(IV-LPM、probit、IVprobit)。

10.2 联立方程模型富余工具变量的R代码问题

2022金融专硕-张天雨 2022-11-7 11:18:10

胡老师您好。关于咱们的计量作业的这个题目,我有个问题想请教您。您看方便的时候能否解答一下呀。

我用的是R软件,做回归的时候尝试了ivreg包和systemfit包。用ivreg包我回归出来后感觉结果有点问题,因为exp2的系数估计值为正,这好像不大对劲,而且出不了第一阶段回归的结果,不知道是不是我代码敲错了;我用systemfit包跑数据跑不出来。查了很多资料,我也没能解决这个问题,不知道该如何做。

如果老师有时间可以解答,感激不尽。

胡华平 2022-11-7 18:25:08

经过测试,用systemfit确实会报错。目前还不清楚问题在哪里。

# load package
library(systemfit)
# set two models
eq_1.1 <- edu ~  age + age2 +black +south +urban + public +private
eq_1.2 <- exp ~  age + age2 +black +south +urban + public +private
eq_1.3 <- exp2 ~  age + age2 +black +south +urban + public +private

eq_2 <- lwage ~ edu + exp + exp2 +black +south +urban

sys <- list(
  eq1.1 = eq_1.1,
  eq1.2 = eq_1.2, 
  eq1.3 = eq_1.3, 
  eq2 = eq_2)

# specify the instruments

instr <- ~age + age2 +black +south +urban + public +private


# fit models 
fit.sys <- systemfit(
  formula =  sys, 
  inst = instr, 
  method ="2SLS", 
  data = tbl_reg)

smry <- summary(fit.sys)

PS我的代码是没有问题的:

  • (等量工具变量情形)如果用college当作edu的工具变量,把exp 和exp2分别当作 age 和age2的工具变量。确实会报错!

  • (富余工具变量情形)如果用public和private当作edu的工具变量,把exp 和exp2分别当作age和age2的工具变量。则代码能够出来,一切正常!(见我上面的代码)

胡华平 2022-12-4 11:30:58

关于之前 R systemfit报错问题,我这里暂时给出了一个处理方法,供参考。

主要原因,可能是因为惯常的设定会出现“完全共线性”问题,导致无法进行矩阵逆运算。

我的代码是没有问题的:

  1. (等量工具变量情形)如果用college当作edu的工具变量,把exp 和exp2分别当作age和age2的工具变量。如果按惯常设定模型,确实会报错!此时需要处理一下方程1.3,把截距项去掉。eq_1.3 <- exp2 ~ -1 + age + age2 +black +south +urban + college。则不会再出现报错。

2.(富余工具变量情形)如果用public和private当作edu的工具变量,把exp 和exp2分别当作age和age2的工具变量。则代码能够出来,一切正常!(见我上面的代码)

10.2.1 等量工具变量情形

  • 方程1.3需要去掉截距项,否则会报错!

注意: hansen2021此时应用的是IV(b)方法:

# load package
library(systemfit)
# set two models
eq_1.1 <- edu ~  age + age2 +black +south +urban + college
eq_1.2 <- exp ~   age + age2 +black +south +urban + college
eq_1.3 <- exp2 ~  -1 + age + age2 +black +south +urban + college # important !!

eq_2 <- lwage ~ edu + exp + exp2 +black +south +urban

sys <- list(
  eq1.1 = eq_1.1,
  eq1.2 = eq_1.2, 
  eq1.3 = eq_1.3, 
  eq2 = eq_2)

# specify the instruments

instr <- ~age + age2 +black +south +urban + college


# fit models 
fit.sys <- systemfit(
  formula =  sys, 
  inst = instr, 
  method ="2SLS", 
  data = tbl_reg)

smry <- summary(fit.sys)
out <- tidy(fit.sys) %>%
  separate(., col = term, 
           into = c("eq", "vars"), sep = "_") %>%
  select(-all_of(starts_with("conf")))

kable(out, 
      caption ="等量工具变量下的2SLS结果" ,
      digits = 4)

10.2.2 富余工具变量情形

# load package
library(systemfit)
# set two models
eq_1.1 <- edu ~  age + age2 +black +south +urban + public +private
eq_1.2 <- exp ~  age + age2 +black +south +urban + public +private
eq_1.3 <- exp2 ~  age + age2 +black +south +urban + public +private

eq_2 <- lwage ~ edu + exp + exp2 +black +south +urban

sys <- list(
  eq1.1 = eq_1.1,
  eq1.2 = eq_1.2, 
  eq1.3 = eq_1.3, 
  eq2 = eq_2)

# specify the instruments

instr <- ~age + age2 +black +south +urban + public +private


# fit models 
fit.sys <- systemfit(
  formula =  sys, 
  inst = instr, 
  method ="2SLS", 
  data = tbl_reg)

smry <- summary(fit.sys)
out <- tidy(fit.sys) %>%
  separate(., col = term, 
           into = c("eq", "vars"), sep = "_") %>%
  select(-all_of(starts_with("conf")))

kable(out, 
      caption ="富余工具变量下的2SLS结果" ,
      digits = 4)

2022金融专硕-张天雨 2022-12-4 11:38:55

好的老师,我明白问题了。非常感谢老师这么久了还能记着这个小事,我真诚的感谢老师,您真的是位好老师,老师讲的课程也是在我们学生中间受到了赞誉,我们都真诚地觉得你把计量课程讲的通俗易懂,也让我在本科期间学习计量时的很多疑惑得到了解答!非常感谢老师

10.3 stata 命令

10.3.1 stata 2SLS

2022金融专硕 何奕洁 2022-10-25 14:12:18

胡老师你好,请问模型中多个内生变量和工具变量在stata中快速2sls怎么实现呀,代码我们敲不出

胡华平 2022-10-25 16:12:42

还是一个命令啊 只是工具变量设置要改变,官方说明文档就有。

ivregress 2sls lwage76 black reg76r smsa76r (ed76 exp exp2 = nearc4a nearc4b age76 age2)