请选择 进入手机版 | 继续访问电脑版

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

 找回密码
 立即注册

快捷登录

查看: 856|回复: 6

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

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

4 c$ _4 m5 @! w. C. P( k
  p3 F& I0 [3 B人工智能与机器人的兴起重塑了全球劳动力市场,也引起了学术界极大的研究热情。其中,经济学界最具代表性的人物无疑是 Daron Acemoglu,其撰写的几篇关于机器人的文章,基本都发表在诸如 AER,JPE,RES 等经济学顶刊上,尤其是 2020 年发表于 JPE 的 《Robots and jobs: Evidence from US labor markets》,短短两年间,引用量就超过了 2400 次。
, Y7 M; S' a# h+ z5 D; m2 ^7 v! ~/ J4 w+ \/ d. Z% ~, |

( w8 H0 f' u9 h! e
. D5 D" k/ F5 {- E' Y/ b中文期刊中,也有多篇关于机器人的文章见诸于《管理世界》、《经济研究》等顶级期刊,关于各种话题的研究纷纷涌现。
$ [( X6 h" c  Z' c% E
# B! k: j/ \3 i5 y
看到这个领域日趋火热,我们参考了王永钦、董雯 2020 年发表于《经济研究》一文的方法,计算了 2011-2019 年中国制造业上市公司的机器人渗透度,以飨读者。该数据为公司层面数据,并保留了公司和年份信息,可与上市公司的其他财务信息匹配,展开自己感兴趣的研究。
" a) M1 @  v- |$ C+ h! x

8 x! O3 @; G+ P1 T) r3 X9 }$ P# V& t4 p
2 W$ n; Y& X+ e& U3 p4 @
我们参考 Acemoglu and Restrepo (2020) 和 王永钦、董雯 (2010) 的做法,构造中国制造业企业层面的机器人渗透度指标。具体测算方法如下:
# |* p" l; L" s( P/ L
草莓科研服务网——中国专业社科交流平台:制造业上市公司机器人渗透度 (2011-2019)) ~! k) x' v" d4 }( h0 @+ d' `
8 V+ [$ [$ W# q6 z
其大致思路是,先计算出行业层面的单位从业人员的机器人数量 (机器人渗透度),随后再使用标准化的企业生产部门人数占比乘以行业机器人渗透度,两者的乘积即为该企业的机器人渗透度。2 B( V; I  w, G2 h. w7 a" m* i

1 D( n7 I) j! j: S1 i8 Y% o在计算过程中,我们需要解决几个核心问题,下面我们具体展开分析。0 E7 G5 d. ?  {$ [4 Z6 ~. y2 L3 g
/ T& O. a- N! u& w% t
0 y; k( i: S; P1 M9 I
首先,我们要完成不同版本行业分类代码的衔接。这其中由分为两个部分,分别是《2002 版国民经济行业分类与代码》和《2011 版国民经济行业分类与代码》的衔接,以及中国的行业分类代码与 IFR 行业分类代码的衔接。参考王永钦、董雯 (2020) 的做法,我们先将中国的二位数制造业行业分类码统一至 2011 年,随后再与 IFR 进行匹配。9 f6 l5 b8 ]0 T, J
) b- P  K- c2 i( n9 z
调整后的行业分类为:5 L4 e3 s' |, O: o6 i8 Z
草莓科研服务网——中国专业社科交流平台:制造业上市公司机器人渗透度 (2011-2019)
( w( R) I* E2 G$ W5 z( y$ t
$ L6 w2 }1 h, t) H3 H随后我们开始用Stata实现具体计算:% m8 W5 \4 y/ @( @$ Y4 r

+ u) a! A5 D2 e5 s先确定工作路径:$ W- y$ g2 A" C& W, ^4 M" K0 Y5 H
  1. cd "~/Desktop/IFR to firm"
    1 n5 ~5 k: _, ]" ^$ L& `+ P: U
  2. global path "~/Desktop/IFR to firm"
      z4 K7 ]$ z/ I
  3. global raw_data "$path/raw_data"
    2 T2 L5 [0 `- T. Y& b) t
  4. global result_data "$path/result_data"
复制代码
4 l8 M2 I4 V: O6 q2 M
9 L3 i+ I+ a3 a1 {
参考王永钦、董雯 (2020) 的测算方法,我们先计算出 2010 年中国各行业的从业人数。该数据来自于 CSMAR。0 `3 C( k- y8 a. f8 @

6 T# O6 N% s: O3 E
  1. import excel using "$raw_data/IND_Indstsvy.xlsx", firstrow clear  Y2 H" z2 ~% ]4 ?/ @8 i. w1 i$ p
  2. labone, nrow(1 2)$ Q  ^: q5 U/ C6 C0 f9 G
  3. drop in 1/26 J7 w0 L$ V6 S7 O  `9 w
  4. keep Yeasgn Indcd Indnme Noemploy
    . T5 t' h: B: I0 ^' d* `
  5. destring Yeasgn Indcd Noemploy, replace force. ^8 b: U5 E  p7 y
  6. keep if Yeasgn == 2010
    7 k& }- y9 W6 `8 I/ U. v
  7. keep if inrange(Indcd, 13, 43)# w0 T2 ^# e# E7 \- T' ~! j
  8. ) U, I( {% c7 m3 |2 c
  9. #delimit ;  J: M; O* r, Y7 H9 q9 `# @& Z5 W
  10. recode Indcd (13 14 15 16  = 1 "食品与饮料")
    " e8 F, J" o3 O0 l" G7 s+ |
  11.              (17 18 19     = 2 "纺织与服装")! F0 a" k, e$ a1 ]* m: E
  12.              (20 21        = 3 "木材家具")
    * A/ f, `) P/ ]' k0 F
  13.              (22 23        = 4 "造纸印刷")3 ^, I9 x" d: p7 }, |
  14.              (24 42 43     = 5 "其他制造业")
    $ q- z  y5 q: q7 F
  15.              (25/30        = 6 "塑料和化学制品")
    : S# b5 A% L% `/ O3 u
  16.              (31           = 7 "玻璃、陶瓷、矿石制品")8 y% K3 d2 B5 x; u
  17.              (32 33        = 8 "基本金属")
    % h, ]  j% E. q; C( J! [: a
  18.              (34           = 9 "金属制品"), D( X9 C" m; K  C
  19.              (35 36        = 10 "机械设备制造")
    4 j. v5 c* J: h7 M- j, c- B
  20.              (37           = 11 "汽车制造业和其他交通设备制造业")
    2 Y' {% j: s2 W1 ^- _7 h) L8 s7 Q
  21.              (39/41        = 12 "电力设备与计算机、电子产品、光学产品制造"),
    : O. B: ]2 @9 \( H: |* D* t  r
  22.              gen(industrycode);
    + Q5 J  N- ]! f& I' J. F) L* z
  23. #delimit cr
    ( `/ n  J6 v% J) l* g
  24. collapse (sum)labor = Noemploy, by(industrycode)
    0 q4 }! y! {% O4 \& u4 ^
  25. save "$result_data/labor.dta", replace
复制代码
随后,我们导入 IFR 的机器人数据,并统一行业编码。
) p+ ~# h  _# \, k5 d  c
  1. use "$raw_data/IFR.dta", clear
    ' _8 S% A0 Z6 e
  2. keep if country == "CN"
    ( @0 X/ i  q$ e. f" g2 c
  3. keep if inrange(year, 2011, .)8 W# Q1 V8 K, M" u, V5 g
  4. drop country Country installations
    * f/ E0 I& D9 C3 [# M9 `( P7 d# q
  5. gen industrycode = .
    ! H! o! [4 G& E! D6 r3 ]
  6. replace industrycode = 1  if industry == "10-12"- E4 q8 \5 u1 z( m, ^
  7. replace industrycode = 2  if industry == "13-15"
    0 w+ ~, F8 s2 I2 A
  8. replace industrycode = 3  if industry == "16"
    1 ]. o% G/ j; z. O* T- p
  9. replace industrycode = 4  if industry == "17-18"+ f5 a$ S% I9 k2 X3 R5 h
  10. replace industrycode = 5  if industry == "91"8 b+ r! N3 D3 W5 p9 E/ M
  11. replace industrycode = 6  if industry == "19-22"
    + Y  F7 P, d: r/ X$ ?4 D
  12. replace industrycode = 7  if industry == "23"6 A  b% x# a/ I! {3 G
  13. replace industrycode = 8  if industry == "24"6 v" [) j* }( I5 Q
  14. replace industrycode = 9  if industry == "25"
    4 O# k) D& `. Y, E- V& s7 h* Y
  15. replace industrycode = 10 if industry == "28"7 |2 l. ]  E& o$ C! |
  16. replace industrycode = 11 if industry == "29" | industry == "30"
    2 `/ }! z* B8 _: x7 O$ I& d
  17. replace industrycode = 12 if industry == "26-27"8 ?3 G: o' `, `, ?% G0 l
  18. keep if !mi(industrycode)8 d  d( D8 w/ S+ W
  19. collapse (sum)stock = operation, by(industrycode year)$ x: |0 v! r3 A$ ~7 S
  20. save "$result_data/robot.dta", replace
复制代码
合并上述两份数据,计算行业层面的机器人渗透度:
, k: W1 j: ~# W+ d$ K5 ^
  1. use "$result_data/robot.dta", clear
    0 k2 I* a5 W. F0 x0 {+ H
  2. merge m:1 industrycode using "$result_data/labor.dta", ///! k- {3 d1 w4 f& m  D
  3.     keep(1 3) nogen
    . ?2 r. z& |" x9 j  |- l  D6 [
  4. gen density = stock / labor * 10000* W9 [( h- ]7 P9 d0 n8 K
  5. xtset industrycode year) I# P  ^. c5 {' t
  6. save "$result_data/robot_density.dta", replace
复制代码
我们导入 2011 年各制造业企业的生产部门员工占比,该数据来源于 Wind。
: D# ?, r0 X. f6 F4 s/ z) Q
  1. import excel using "$raw_data/员工构成-2011年.xlsx", clear
    " y3 j7 g9 G$ Z" F
  2. labone, nrow(1/2)
    & Q8 b, C% B6 e6 x/ z, l, B
  3. drop in 1/2
    & m, s: \1 P: e) U: ^8 `! l
  4. keep A B C R
    & f1 a; d3 n* H
  5. replace A = subinstr(A, ".SZ", "", .)
    / A; o% D" g) M! t
  6. replace A = subinstr(A, ".SH", "", .)3 M3 k0 q4 z) ]! |2 L, R0 L& O
  7. destring A R, replace force1 [2 k; a' ]; G* A& b8 O% h
  8. gen year = real(substr(C, -4, .))# W$ X' p& T4 ~# |1 c! R0 \
  9. drop C
    * V! v" S/ `1 c. a) }
  10. xtset A year. R6 a4 I( ~, X% D5 h
  11. rename (_all)(Stkcd ShortName product_share year)- n* k) d  D" i  V
  12. order Stkcd year
    ! `0 i" s1 w& J$ p# e$ Y
  13. drop if mi(Stkcd)
    7 F% \9 s8 ?, A% y" w% i! ]
  14. format Stkcd %06.0f  S, l$ W7 N/ T. @7 D" H
  15. save "$result_data/employee_structure.dta", replace
复制代码
由于 Wind 并不提供上市公司的行业代码,我们从 CSMAR 下载了各企业的股票代码与行业分类码,并按照本文第二章所属的编码规则,对行业分类 recode
4 S6 d5 _6 {8 D8 t7 N# Q
  1. import excel using "$raw_data/STK_LISTEDCOINFOANL.xlsx", firstrow clear3 H$ `' {+ q* g( D3 f* B6 |
  2. labone, nrow(1 2)8 C* n- K4 [' ]0 g0 G& ], D
  3. drop in 1/29 u/ U1 u0 Q, P- u! r4 w6 h7 y
  4. gen year = real(substr(EndDate, 1, 4))
    & `8 j; E. H( X8 F( o" m0 c
  5. gen listyear = real(substr(LIST, 1, 4))9 N0 A; k, P' O: K3 Q& u
  6. keep if ustrregexm(IndustryCode, "C")0 c. i* p! d# f& G* f& v
  7. keep if inrange(year, 2011, 2019)
    " r5 X" P+ ^' Z- _+ O2 t2 B2 \
  8. clonevar Industrycode = IndustryCode% t9 K* C7 [6 t& \; a1 B
  9. replace Industrycode = subinstr(Industrycode, "C", "", .)0 _! e+ P; I! W- ?
  10. destring Symbol Industrycode, replace force
    ( \1 o. P$ k, Q. l& H4 N, l

  11. ) {- e6 K3 {  w. \2 Q9 R
  12. #delimit ;
    ( ^" b8 U* _! e$ ], {
  13. recode Industrycode
    7 A# l4 v. T5 L/ x' T# Q/ w
  14.     (13 14 15 16  = 1 "食品与饮料")
    * m' w# Q0 A2 f
  15.     (17 18 19     = 2 "纺织与服装")
    % H. [7 q4 j+ y2 J( e4 g, Q5 \
  16.     (20 21        = 3 "木材家具")
    ; H& a  f0 G4 c1 e, ^
  17.     (22 23        = 4 "造纸印刷")
    + f+ U: N+ E; S1 F  k0 w" Q
  18.     (24 41 42     = 5 "其他制造业")2 V9 a/ i% |# X+ N' Z: }2 W4 r6 n
  19.     (25/29        = 6 "塑料和化学制品")3 k. a1 V' {+ ~9 n8 ^% z( Y
  20.     (30           = 7 "玻璃、陶瓷、矿石制品")! Z1 a& P- N$ y+ S9 }, \
  21.     (31 32        = 8 "基本金属")1 P2 G4 l, h& I8 z4 o4 [, G* E
  22.     (33           = 9 "金属制品")& Q: w0 u9 L6 N1 `& k4 ]
  23.     (34 35        = 10 "机械设备制造")
    $ _: P9 J. e& p- ?1 n" ]) o
  24.     (36 37 43     = 11 "汽车制造业和其他交通设备制造业")8 b! j% T4 R& r7 \: M- }* M/ Q
  25.     (38/40        = 12 "电力设备与计算机、电子产品、光学产品制造"),
    2 q0 r, |% D/ G( L/ F
  26.     gen(industrycode);4 |- ~4 N' h1 q8 E3 Y
  27. #delimit cr# c4 b$ S" a1 h

  28. * w0 z, M' i) t, e' r# T* P
  29. drop ListedCoID EndDate LISTINGDATE IndustryName
    , f1 a. M" H2 B+ B7 o9 _
  30. rename Symbol Stkcd6 S2 H) U6 ?3 [- a
  31. format Stkcd %06.0f
    4 U$ \: \8 B$ u
  32. order Stkcd year listyear
    ! R) A3 N& v" k" Q! M8 t9 y1 ^
  33. save "$result_data/industrycode.dta", replace
复制代码
7 K' T; p. {0 S0 E; P

$ n& O8 N& e2 Q& y5 p; d接下来,就是最终的计算结果了。我们先把前述所有数据 merge 到一起,包括 2011 年企业生产部门员工占比,和各行业的机器人渗透度。2 P' }% ]( w+ x; B2 S! ^
- c( E' g+ n$ M6 G6 g
随后,我们使用 egen 中的 mediam 计算出生产部门员工占比的中位数。
, T) @; g* l0 b* O9 D! Q
- @8 R; {2 I. z( J4 `" P: F最后,将企业生产部门员工占比除以中位数,再乘以行业机器人渗透度 density,所得的 exposure 就是企业的机器人渗透度了。0 ~' F# c/ k2 ]9 Y7 H1 ?
5 R4 j6 w  ]4 w$ }& Y3 d5 A3 d' P, b
  1. use "$result_data/industrycode.dta", clear5 L, |' N+ ]6 X% h
  2. merge m:1 Stkcd using "$result_data/employee_structure.dta", ///$ S. @3 G2 @' v+ Z; |. g8 ]) k
  3.     keepusing(product_share) keep(1 3) nogen- R6 Y; {4 I) k
  4. merge m:1 industrycode year using "$result_data/robot_density.dta", ///1 v: S! Z! x; ^4 m, j3 D/ Y
  5.     keepusing(density) keep(1 3) nogen0 ]+ ?8 F0 ~- b/ T/ N+ ]( ^
  6. format %20.0g industrycode2 E' @4 x# T/ P- E: c
  7. egen share_median = median(product_share)  P( `0 L! y$ G! l) @. t
  8. gen exposure = (product_share / share_median) * density
    8 D2 _: U/ A/ k6 m/ L  I# A
  9. / d7 S8 j, x8 E% B' L1 u* x
  10. label var density       "行业层面机器人渗透度(每万人)"$ ~9 x2 t7 K6 h% ?
  11. label var product_share "生产部门员工占比"
    9 C1 r+ F; @. Q8 x# T9 ?  I
  12. label var share_median  "生产部门员工占比中位数"
    : L9 ~& ]( V, C  ?. `# }) `
  13. label var exposure      "企业机器人渗透度"- m$ c6 p+ a$ i/ _; }+ ]5 ]2 o
  14. order Stkcd year9 p) i6 o. K+ f. U, Y7 d
  15. xtset Stkcd year6 e3 j. m6 q6 g0 r
  16. save "$result_data/exposure.dta", replace
复制代码

' u( k1 l+ Y( ^2 W& x& r* }1 x# d8 q& G* P6 _- \( D

4 V  h) O5 X1 B9 ?* w
9 x! L: o6 n8 U' N% z8 W. t, U2 J2 T7 Z  L* _7 W
发表于 2022-8-9 08:35:35 | 显示全部楼层
好人一生平安,感谢楼主
回复

使用道具 举报

发表于 2023-5-15 13:34:14 | 显示全部楼层
可以分享一下最终数据吗?1 y, \$ @1 g& h( N2 N" a' A% H
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2023-7-8 10:16:13 | 显示全部楼层
写的太好了!9 m* {" ?. s0 c( w% E
回复

使用道具 举报

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

本版积分规则

回帖奖励

[详情]

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

    GMT+8, 2023-12-8 10:24 , Processed in 0.082715 second(s), 58 queries .

    Copyright © caomeikeyan

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