草莓科研服务网——中国专业社科交流平台

 找回密码
 立即注册

快捷登录

查看: 1688|回复: 6

制造业上市公司机器人渗透度 (2011-2019)

[复制链接]
发表于 2022-8-4 08:24:40 | 显示全部楼层 |阅读模式

7 x: \. {7 M$ x7 ~2 G
& v. [; z& ?/ p人工智能与机器人的兴起重塑了全球劳动力市场,也引起了学术界极大的研究热情。其中,经济学界最具代表性的人物无疑是 Daron Acemoglu,其撰写的几篇关于机器人的文章,基本都发表在诸如 AER,JPE,RES 等经济学顶刊上,尤其是 2020 年发表于 JPE 的 《Robots and jobs: Evidence from US labor markets》,短短两年间,引用量就超过了 2400 次。. ~" ?. S8 i3 E8 D8 `/ Y. h+ U) W

4 \" E4 |5 m/ P9 u8 Q# |8 p/ \2 E  c5 m8 i

) M( b9 T% M  I/ G2 [& U+ j中文期刊中,也有多篇关于机器人的文章见诸于《管理世界》、《经济研究》等顶级期刊,关于各种话题的研究纷纷涌现。1 l( k8 v. ]1 p

  h# T( X0 y" O* ~  E
看到这个领域日趋火热,我们参考了王永钦、董雯 2020 年发表于《经济研究》一文的方法,计算了 2011-2019 年中国制造业上市公司的机器人渗透度,以飨读者。该数据为公司层面数据,并保留了公司和年份信息,可与上市公司的其他财务信息匹配,展开自己感兴趣的研究。
2 K* ~3 p5 \7 ^! E

) A& _4 j" `) X6 g. V
$ [. u( K& V* i* m  ?7 a3 w
我们参考 Acemoglu and Restrepo (2020) 和 王永钦、董雯 (2010) 的做法,构造中国制造业企业层面的机器人渗透度指标。具体测算方法如下:

+ {$ j3 n7 A9 [0 }6 {9 z* C
7 r2 b% C; t. e' l/ w; K6 L/ V. @% s/ [1 a5 B
其大致思路是,先计算出行业层面的单位从业人员的机器人数量 (机器人渗透度),随后再使用标准化的企业生产部门人数占比乘以行业机器人渗透度,两者的乘积即为该企业的机器人渗透度。, G6 u0 s; Y* F

2 l# e' d) {- H4 r3 \7 ?3 m在计算过程中,我们需要解决几个核心问题,下面我们具体展开分析。
- q2 m0 \5 }6 k0 m7 Z6 X
4 j/ H' @/ Y, z6 r  D: Z6 T' t* l  N8 O, Y! k/ ]
首先,我们要完成不同版本行业分类代码的衔接。这其中由分为两个部分,分别是《2002 版国民经济行业分类与代码》和《2011 版国民经济行业分类与代码》的衔接,以及中国的行业分类代码与 IFR 行业分类代码的衔接。参考王永钦、董雯 (2020) 的做法,我们先将中国的二位数制造业行业分类码统一至 2011 年,随后再与 IFR 进行匹配。
  ^' {9 p' |' Q, s- Y% t$ V; t+ _# g0 n2 X' _
调整后的行业分类为:2 A- {. v7 {2 k" T9 W
2 a2 x+ a5 h0 p3 c

5 C# j2 x8 H+ s5 \随后我们开始用Stata实现具体计算:
3 |" N2 n9 d: C- x- t$ ^8 [9 a7 l. A& E5 P
先确定工作路径:* Z/ C" r7 x: u$ ^0 x
  1. cd "~/Desktop/IFR to firm"
    , v  n6 ^6 g+ d6 K3 x
  2. global path "~/Desktop/IFR to firm"
    * x4 N. I$ o8 |" h# d( k
  3. global raw_data "$path/raw_data"
    6 a: ]) r# ~9 {6 e
  4. global result_data "$path/result_data"
复制代码
1 d; n1 k/ N% t& a6 @) U

5 L, u3 i  s4 N. d# F6 B参考王永钦、董雯 (2020) 的测算方法,我们先计算出 2010 年中国各行业的从业人数。该数据来自于 CSMAR。9 p. l; R6 d0 L& d
$ u% ]- F. A8 C- J
  1. import excel using "$raw_data/IND_Indstsvy.xlsx", firstrow clear5 \4 H1 H( T4 b
  2. labone, nrow(1 2)
    ' x$ h  V% v: F1 s
  3. drop in 1/2
    : f5 D6 u* b/ s# a
  4. keep Yeasgn Indcd Indnme Noemploy
    ! s7 ?7 G# K+ M8 b& @8 X$ H0 p* T
  5. destring Yeasgn Indcd Noemploy, replace force
    + d& ?9 ~" h& Q( c' L
  6. keep if Yeasgn == 2010
    ' v+ y1 V. U, }4 F0 }6 O+ V
  7. keep if inrange(Indcd, 13, 43)
    - v3 ^2 J' i9 X9 b  }* F
  8.   `2 l8 ~' ]! l+ [' H0 E; t& D( u: n
  9. #delimit ;
    6 {* h( y. K9 ?2 H
  10. recode Indcd (13 14 15 16  = 1 "食品与饮料")
    3 P' `. F+ U% m5 M
  11.              (17 18 19     = 2 "纺织与服装")
    5 {. t6 O! B0 P" l* x
  12.              (20 21        = 3 "木材家具")2 f/ \) c/ f& k$ X- d& ?
  13.              (22 23        = 4 "造纸印刷")# V" j1 R  v9 P6 X. X
  14.              (24 42 43     = 5 "其他制造业")9 W) D1 e9 ~4 E$ Z+ M% L
  15.              (25/30        = 6 "塑料和化学制品")
    " F2 V7 L+ t$ {. Q6 _0 `
  16.              (31           = 7 "玻璃、陶瓷、矿石制品")! L* _5 C! M+ G' W! N2 q; Y2 ?
  17.              (32 33        = 8 "基本金属")' C* M8 d# I" g7 v& T
  18.              (34           = 9 "金属制品")
    0 {, R3 B" {* N: o
  19.              (35 36        = 10 "机械设备制造")
    " b! m7 q8 y" y
  20.              (37           = 11 "汽车制造业和其他交通设备制造业")/ G1 z% z* ~4 x3 U2 }5 ^" I3 o% Q
  21.              (39/41        = 12 "电力设备与计算机、电子产品、光学产品制造"),/ r* `+ n7 L2 x. M* Z( n
  22.              gen(industrycode);% f: q3 _" d2 o# M9 O1 J; Q- A
  23. #delimit cr
    3 R6 B2 N' ~6 {7 x% G% O
  24. collapse (sum)labor = Noemploy, by(industrycode). |! u: Y  w) f& V/ X, @
  25. save "$result_data/labor.dta", replace
复制代码
随后,我们导入 IFR 的机器人数据,并统一行业编码。, [9 ^) c8 Z# ]$ r5 U
  1. use "$raw_data/IFR.dta", clear
    2 m8 h. k" B- r: O$ f7 \- p
  2. keep if country == "CN"
    ! F4 \( y1 h$ Q7 |1 P2 G
  3. keep if inrange(year, 2011, .)7 _9 O' _! T) L% D8 k! D
  4. drop country Country installations+ R1 u7 _5 l5 D  B7 r2 `: R
  5. gen industrycode = .
    2 O$ S1 e, j7 J3 j
  6. replace industrycode = 1  if industry == "10-12"' r1 b6 R) n% Z
  7. replace industrycode = 2  if industry == "13-15"; R% l' O; c8 Q7 {$ s9 E
  8. replace industrycode = 3  if industry == "16"% G% P2 _' N  O) ?
  9. replace industrycode = 4  if industry == "17-18") c' c3 ]4 s. I
  10. replace industrycode = 5  if industry == "91"' G( z! R, j3 X4 M2 j& \; ]+ P
  11. replace industrycode = 6  if industry == "19-22": }3 R% t" Z( _4 ?! [$ v2 ?/ _  s
  12. replace industrycode = 7  if industry == "23"$ q# G; l7 [  ]$ n$ A3 \/ f3 x
  13. replace industrycode = 8  if industry == "24"
      Q5 `+ p# i; Y, W
  14. replace industrycode = 9  if industry == "25"
    3 i4 t& {6 _' n2 J$ z$ a
  15. replace industrycode = 10 if industry == "28"; p" F2 q) S) y) O9 C
  16. replace industrycode = 11 if industry == "29" | industry == "30"$ \; C* {) x1 S
  17. replace industrycode = 12 if industry == "26-27"# k) F+ c' i1 [' H/ n) w+ ~
  18. keep if !mi(industrycode)
    0 [! S& a8 |" q8 v( w4 K
  19. collapse (sum)stock = operation, by(industrycode year)5 [+ w* i- ^1 O& @
  20. save "$result_data/robot.dta", replace
复制代码
合并上述两份数据,计算行业层面的机器人渗透度:
, e( v$ V8 C  B0 z; Q2 S2 m
  1. use "$result_data/robot.dta", clear
    + h& w  ^, {7 W
  2. merge m:1 industrycode using "$result_data/labor.dta", ///
    + S/ n* I" H( x
  3.     keep(1 3) nogen
    ' U7 P  ^; m. Q
  4. gen density = stock / labor * 10000" u0 _  u* N+ \
  5. xtset industrycode year
    . W& n0 q* w5 |8 \* e5 c- Z4 M
  6. save "$result_data/robot_density.dta", replace
复制代码
我们导入 2011 年各制造业企业的生产部门员工占比,该数据来源于 Wind。
; P4 Q9 ^" K: }" d! R$ u
  1. import excel using "$raw_data/员工构成-2011年.xlsx", clear2 J$ S/ L6 N5 N1 H& Y" X4 r
  2. labone, nrow(1/2)
    ; `0 d* ?2 T# G- @; l/ g- L5 g
  3. drop in 1/2
    * ~- @& J$ R; b) J7 u5 q4 s0 m
  4. keep A B C R
    # {% D& K. z' W: {8 P. y+ H
  5. replace A = subinstr(A, ".SZ", "", .)' ]% S* H( @# _2 i7 K
  6. replace A = subinstr(A, ".SH", "", .)# D4 U3 Z+ R: I) c; ^' A
  7. destring A R, replace force5 T& E0 v+ N' G% T' |
  8. gen year = real(substr(C, -4, .))  \4 {$ B# q. ~: j, }* b8 s. M
  9. drop C8 C6 v* n6 d/ [1 P3 q# i" v
  10. xtset A year
    6 Y/ ^* R+ p2 f- I( s0 B0 y6 m/ K" ~4 I
  11. rename (_all)(Stkcd ShortName product_share year)
    9 u* P( i6 g% p
  12. order Stkcd year  B% W. R) H$ h! I9 N
  13. drop if mi(Stkcd)
    9 K' m( {  \/ U7 O( z0 ^( c6 R4 W
  14. format Stkcd %06.0f
    ! r, \% i* Z1 `
  15. save "$result_data/employee_structure.dta", replace
复制代码
由于 Wind 并不提供上市公司的行业代码,我们从 CSMAR 下载了各企业的股票代码与行业分类码,并按照本文第二章所属的编码规则,对行业分类 recode
) o' z% a9 {$ t* n+ |8 }; F
  1. import excel using "$raw_data/STK_LISTEDCOINFOANL.xlsx", firstrow clear
    & i$ U& G% Z* {& Z
  2. labone, nrow(1 2)( ~2 z+ b/ g" A3 e( j% D: g& I
  3. drop in 1/2, r$ V8 a, d5 ~6 h" e6 n0 b+ ^
  4. gen year = real(substr(EndDate, 1, 4))* D/ J: V% u( E, R
  5. gen listyear = real(substr(LIST, 1, 4))* I( L8 k& v, ]+ Q' }
  6. keep if ustrregexm(IndustryCode, "C")) }; Z, n  ^5 F1 z
  7. keep if inrange(year, 2011, 2019)$ i* l4 m# }" D, V  }$ Y5 E
  8. clonevar Industrycode = IndustryCode5 X  m8 h9 o! a! b9 r: h
  9. replace Industrycode = subinstr(Industrycode, "C", "", .)6 j* A+ H2 E# W7 |
  10. destring Symbol Industrycode, replace force1 Y" \( r5 u* J9 z0 j* _

  11. : }$ l# S  ]% t9 `% L3 m' c
  12. #delimit ;  L7 U6 [3 K/ ^! G9 E: h. I5 Z
  13. recode Industrycode
    8 o4 c) z; Y& R9 X; i& O
  14.     (13 14 15 16  = 1 "食品与饮料")
    8 R1 L0 B+ s# s1 E8 ?
  15.     (17 18 19     = 2 "纺织与服装")
    ( v  E* J: C7 r$ I1 {( }3 E9 }
  16.     (20 21        = 3 "木材家具")
    $ l: Y6 J# b" {7 g
  17.     (22 23        = 4 "造纸印刷"); ]% ^1 ^/ p; |  d7 q
  18.     (24 41 42     = 5 "其他制造业")
    6 k* {8 s3 ?2 k% u, i" ~# H
  19.     (25/29        = 6 "塑料和化学制品")
    1 u0 [- t0 [5 D, g2 ~1 i3 F+ Y* H
  20.     (30           = 7 "玻璃、陶瓷、矿石制品")
    4 s) v- e, P3 a4 C" `5 b+ x  Z8 T
  21.     (31 32        = 8 "基本金属")
    7 R9 _# G9 T$ f8 r8 j3 |
  22.     (33           = 9 "金属制品")
    2 |- ]+ k' `1 m! f0 N# u- ]+ F
  23.     (34 35        = 10 "机械设备制造")
    - M4 r: |, @8 e+ [; t
  24.     (36 37 43     = 11 "汽车制造业和其他交通设备制造业")0 ]4 p, `- V% _5 w
  25.     (38/40        = 12 "电力设备与计算机、电子产品、光学产品制造"),# b& H4 |" @0 d6 |9 X# E7 t" \
  26.     gen(industrycode);8 q2 \3 Y6 ?6 `) E5 y, L7 ~
  27. #delimit cr
    ; }: [# B! r5 i& T' i' k9 x+ y
  28. / e+ e( ^, p! g" L( ?- h5 F: k2 Z
  29. drop ListedCoID EndDate LISTINGDATE IndustryName
    ) l) t, }2 p: a& q% |
  30. rename Symbol Stkcd
    ! k* O# R1 i, e+ L6 N
  31. format Stkcd %06.0f
    0 W4 f. x: s1 D9 a( R& m; D
  32. order Stkcd year listyear
    % y9 R& E3 |3 v
  33. save "$result_data/industrycode.dta", replace
复制代码
7 T+ _. h  @3 N5 |! u

6 i; X5 U) s* v接下来,就是最终的计算结果了。我们先把前述所有数据 merge 到一起,包括 2011 年企业生产部门员工占比,和各行业的机器人渗透度。
7 V5 b2 V: S% d1 |. S! N' V+ @' d$ H6 h  e# x
随后,我们使用 egen 中的 mediam 计算出生产部门员工占比的中位数。
' H. U  w: M. ~) y4 v( z  S+ k1 p' |. A
最后,将企业生产部门员工占比除以中位数,再乘以行业机器人渗透度 density,所得的 exposure 就是企业的机器人渗透度了。
# x4 y3 f2 O" Z' `8 s
( a; D7 \2 L" R
  1. use "$result_data/industrycode.dta", clear' ~5 m$ ^' r% l
  2. merge m:1 Stkcd using "$result_data/employee_structure.dta", //// m) c" U- s' r; t5 D
  3.     keepusing(product_share) keep(1 3) nogen
    . @' y* T! _7 Q: l' A* Z; M
  4. merge m:1 industrycode year using "$result_data/robot_density.dta", ///
    6 n* L4 \) l, X8 x
  5.     keepusing(density) keep(1 3) nogen; @7 b6 ?3 P( ?9 S* x4 ?
  6. format %20.0g industrycode2 r" ]( `2 k; y5 q4 d9 {  m
  7. egen share_median = median(product_share)0 A: _9 B9 H1 n1 t9 w; n3 E. O
  8. gen exposure = (product_share / share_median) * density
    : N3 j7 ?2 U+ l5 a
  9. # R' |: g. D* e- A# T+ J9 K
  10. label var density       "行业层面机器人渗透度(每万人)"3 [. N9 }1 y  e! R. M; }! f9 ]
  11. label var product_share "生产部门员工占比"
    2 t0 R% L  C# c2 C+ @6 M
  12. label var share_median  "生产部门员工占比中位数"3 }+ v) ?. `! h/ {
  13. label var exposure      "企业机器人渗透度", U) w9 _' K5 j! l
  14. order Stkcd year# j+ ^6 C1 H+ T" N9 ]5 v6 p
  15. xtset Stkcd year3 C. Z6 D+ m. ?. N7 P8 L3 I# D
  16. save "$result_data/exposure.dta", replace
复制代码

' q3 [3 m" C; I& I4 o. d, \. u# ^4 E3 @: D
. t: g' |& h$ N5 {3 Q( J& s$ y

" u' ]& H+ O; a- {7 O* k
2 [' v( C' ^: h- x, |
发表于 2022-8-9 08:35:35 | 显示全部楼层
好人一生平安,感谢楼主
回复

使用道具 举报

发表于 2023-5-15 13:34:14 | 显示全部楼层
可以分享一下最终数据吗?3 p0 v* F8 D7 q3 O' q7 r
回复

使用道具 举报

发表于 2023-5-24 15:21:47 | 显示全部楼层
感谢分享,好人一生平安!
回复

使用道具 举报

发表于 2023-6-20 12:52:10 | 显示全部楼层
分享的内容太棒了,感谢楼主
回复

使用道具 举报

发表于 2023-6-27 16:24:58 | 显示全部楼层
太棒了感谢楼主的慷慨解答
回复

使用道具 举报

发表于 2023-7-8 10:16:13 | 显示全部楼层
写的太好了!
/ @- d; Z1 {  y6 O+ Z9 F
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

回帖奖励

[详情]

  • * 每天自己主题被回复3次可获得额外5论坛币奖励。
  • * 每天回复他人主题5次可获得额外8论坛币的奖励。
  • * 奖励每天都可领取,一定要多参与论坛讨论哦。
  • * 同一主题的重复回复不计。
  • 草莓科研服务网——中国专业社科交流平台 ( 津ICP备2023000499号 )|网站地图

    GMT+8, 2024-10-22 23:38 , Processed in 0.109124 second(s), 58 queries .

    Copyright © caomeikeyan

    快速回复 返回顶部 返回列表