数据包络分析(DEA)是是由美国著名运筹学家 A.Charnes(查恩斯)、W.W.Cooper(库铂)、E.Rhodes(罗兹)于 1978 年首先提出,在相对效率评价概念基础上发展起来的一种非参数检验方法。此文章主要介绍如何在stata中进行DEA分析以及进行boostrap检验,用到的命令为tenonradial
,teradialbc
等。需要说明的是,尽管此命令的运算速度与矩阵的最大处理量要优于dea
命令,但是其仍有一些限制。
在数据包络分析中,技术效率是指一个生产单元(DMU)的生产水平达到该行业技术水平的程度。技术效率可以从投入和产出两个角度来衡量,在投入既定的情况下,技术效率由产出最大化的程度来衡量。在产出既定的情况下,技术效率由投入最小化的程度来衡量。当然,在计算TFP的过程中,一般都是投入既定的。
下面举一个一种投入一种产出时的例子,来帮助我们理解技术效率的概念。
单位 | x x x(投入) | y y y(产出) | y / x y/x y/x | y / x y/x y/x(标准化) |
---|---|---|---|---|
A | 2 | 1 | 0.5 | 0.625 |
B | 3 | 2 | 0.667 | 0.533 |
C | 4 | 3 | 0.75 | 0.938 |
D | 5 | 4 | 0.8 | 1.00 |
E | 5 | 2 | 0.4 | 0.5 |
在此表中, y / x y/x y/x反应各个生产单元技术效率的高低, y / x y/x y/x(标准化)是将各单元的 y / x y/x y/x除以其中的最大值。这样就是为了更好的比较这一数值。
当涉及多个产出时,就会对各个投入与产出赋予一定的权重,然后分别加权,计算产出投入比。如:
v = v 1 x 1 + v 2 x 2 + . . . + v n x n v = v_1x_1+v_2x_2+...+v_nx_n v=v1x1+v2x2+...+vnxn
u = u 1 y 1 + u 2 y 2 + . . . + u n y n u=u_1y_1+u_2y_2+...+u_ny_n u=u1y1+u2y2+...+unyn
则产出投入比为 u / v u/v u/v
数据包络分析就是在讨论如何通过数据本身来获得权重,从而计算各个DMU的技术效率。
此命令径向效率的度量方法采用的是Debreu–Farrell(Debreu 1951; Farrell 1957)方法。假设有 k k k个 D M U DMU DMU。对于 D M U K DMU_K DMUK,有 N N N种投入,记为 x k = ( x k 1 , . . . , x k N ) ∈ R N x_k =(x_{k1},...,x_{kN}) \in R^N xk=(xk1,...,xkN)∈RN,有 M M M种产出,记为 y k = ( x k 1 , . . . , x k M ) ∈ R M y_k =(x_{k1},...,x_{kM}) \in R^M yk=(xk1,...,xkM)∈RM。然后我们假设在技术条件 T T T下产出 y y y由投入 x x x产出,数学表达为:
T = { ( x , y ) : y a r e p r o d u c i b l e b y x } T = \{(x,y):y\ are\ producible\ by\ x\} T={(x,y):y are producible by x}
那么在科技 T T T下,生产可能集表示为:
P ( x ) = { y : ( x , y ) ∈ T } P(x) = \{y:(x,y) \in T\} P(x)={y:(x,y)∈T}
投入的需求集表示为:
P ( y ) = { x : ( x , y ) ∈ T } P(y) = \{x:(x,y) \in T\} P(y)={x:(x,y)∈T}
以生产可能集为例,技术效率就表示为,某个给定数据点与生产可能集边界的距离。若以DEA模型来测量此种技术效率从,则对于 k k k个 D M U DMU DMU,每个 D M U DMU DMU有 N N N种投入, M M M种产出的数据集来说。Debreu–Farrell(Debreu 1951; Farrell 1957)的以产出为导向的估计方法,可以通过下述线性规的方程式来表示,对于每一个数据点 k ( k = 1 , 2 , 3... K ) k(k= 1,2,3...K) k(k=1,2,3...K)
F k o ( y k , x k , y , x ∣ C R S ) = m a x θ s . t . ∑ k = 1 K z k y k m ≥ y k m θ m , m = 1 , . . . , M ∑ k = 1 K z k x k n ≤ x k n θ n , n = 1 , . . . , N z k ≥ 0 F_k^o(y_k,x_k,y,x|CRS)=max\theta \\ s.t. \sum_{k=1}^Kz_ky_{km} \geq y_{km}\theta_m,m=1,...,M \\ \sum_{k=1}^Kz_kx_{kn} \leq x_{kn}\theta_n,n=1,...,N \\ z_k \geq 0 Fko(yk,xk,y,x∣CRS)=maxθs.t.k=1∑Kzkykm≥ykmθm,m=1,...,Mk=1∑Kzkxkn≤xknθn,n=1,...,Nzk≥0
其中 y y y是一个 K × M K\times M K×M的产出矩阵, x x x是一个 K × N K\times N K×N的投入矩阵。估计 P ( x ) P(x) P(x)是最小的包围面(smallest convex free-disposal hull )。上述线性规划求解的是规模报酬不变(CRS)的技术效率。在其他关于规模报酬的假设下,只需改变 z k z_k zk的约束,例如规模报酬可变(VRS),设置 ∑ k = 1 K z k = 1 \sum_{k=1}^Kz_k=1 ∑k=1Kzk=1即可。
此命令的非径向效率测量方法是Russell(Färe and Lovell 1978;
Färe, Grosskopf, and Lovell 1994a)法。则对于以产出为导向的非径向量度定义为:
R M k o ( y K , x K , y , x ∣ C R S ) = m a x { M − 1 ∑ m = 1 M θ m : ( θ 1 y k 1 , . . . , θ m y k m ∈ P ( x ) , θ m ≥ 0 , m = 1 , . . . M ) } RM_k^o(y_K,x_K,y,x|CRS)=max \{M^{-1}\sum_{m=1}^M \theta_m: (\theta_1y_{k1},...,\theta_my_{km}\in P(x),\theta_m\geq0,m=1,...M)\} RMko(yK,xK,y,x∣CRS)=max{M−1m=1∑Mθm:(θ1yk1,...,θmykm∈P(x),θm≥0,m=1,...M)}
其线性规划方程式定义为:
R M k o ( y K , x K , y , x ∣ C R S ) = M − 1 m a x ∑ m = 1 M θ m s . t . ∑ k = 1 K z k y k m ≥ y k m θ m , m = 1 , . . . , M ∑ k = 1 K z k x k n ≤ x k n θ n , n = 1 , . . . , N z k ≥ 0 RM_k^o(y_K,x_K,y,x|CRS)=M^{-1}max\sum_{m=1}^M \theta_m \\ s.t. \sum_{k=1}^Kz_ky_{km} \geq y_{km}\theta_m,m=1,...,M \\ \sum_{k=1}^Kz_kx_{kn} \leq x_{kn}\theta_n,n=1,...,N \\ z_k \geq 0 RMko(yK,xK,y,x∣CRS)=M−1maxm=1∑Mθms.t.k=1∑Kzkykm≥ykmθm,m=1,...,Mk=1∑Kzkxkn≤xknθn,n=1,...,Nzk≥0
主要介绍此命令规模收益的两个假设检验,首先是:
T e s t ≠ 1 : H 0 : T i s g l o b a l l y C R S H 1 : T i s V R S Test \neq 1: H_0: T\ is\ globally\ CRS \\ H_1: T\ is\ VRS Test=1:H0:T is globally CRSH1:T is VRS
如果假设 H 0 H_0 H0被拒绝,则可以进行下述假设检验:
T e s t ≠ 2 : H 0 ′ : T i s g l o b a l l y N I R S H 1 : T i s V R S Test \neq 2: H_0': T\ is\ globally\ NIRS \\ H_1: T\ is\ VRS Test=2:H0′:T is globally NIRSH1:T is VRS
也是就是说先查看此技术条件下是否是规模报酬不变的,若不是再看是否是NIRS(Non-Decreasing Returns to scale)的。
tenonradial
使用非径向模型RM估计技术效率,语法详情:
tenonradial outputs = inputs [(ref outputs = ref inputs)] [if] [in] [,rts(rtsassumption) base(basetype) reference(varname) tename(newvar) noprint]
其中
output
是产出变量
input
是投入变量
ref outputs
是产出变量的个数
ref inputs
是投入变量的个数
rts(rtsassumption)
指定规模收益假设,有CRS,VRS,NIRS三种
base(basetype)
设置最优化的方向,即面向产出base(output)
,面向投入base(input)
reference(varname)
设定技术参考集
tename(newvar)
产生newvar
,其包含非径向测量的技术效率。
noprint
取消估算详细信息,数据描述和参考集。
teradialbc
命令使用径向模型估计技术效率,语法详情:
teradialbc outputs = inputs [(ref outputs = ref inputs)] [if] [in] [,rts(rtsassumption)base(basetype) reference(varname) subsampling kappa(#) smoothed heterogeneous reps(#) level(#) tename(newvar) tebc(newvar) biasboot(newvar) varboot(newvar) biassqva(newvar)telower(newvar) teupper(newvar) noprint nodots]
其区别主要在于Boostrap部分,详细内容参见help teradialbc
stata需要已下载kdens bw()
与mm quantile()
nptestind
进行独立性检验
nptestrts
进行规模收益检验
数据来源于Charnes, Cooper, and Rhodes (1981),并人为的产生一个新变量dref
来说明新命令的功能
set seed 717117
use ccr81
generate dref = x5 != 10
teradial y1 y2 y3 = x1 x2 x3 x4 x5, rts(crs) base(output) reference(dref) tename(TErdCRSo)
teradial y1 y2 y3 = x1 x2 x3 x4 x5, rts(nirs) base(output) reference(dref) tename(TErdNRSo) noprint
teradial y1 y2 y3 = x1 x2 x3 x4 x5, rts(vrs) base(output) reference(dref) tename(TErdVRSo) noprint
tenonradial y1 y2 y3 = x1 x2 x3 x4 x5, rts(crs) base(output) reference(dref) tename(TEnrCRSo) noprint
tenonradial y1 y2 y3 = x1 x2 x3 x4 x5, rts(nirs) base(output) reference(dref) tename(TEnrNRSo) noprint
tenonradial y1 y2 y3 = x1 x2 x3 x4 x5, rts(vrs) base(output) reference(dref) tename(TEnrVRSo) noprint
list TErdCRSo TErdNRSo TErdVRSo TEnrCRSo TEnrNRSo TEnrVRSo in 1/7
分别使用径向与非径向模型测量三种规模收益状况下的技术效率。
接下来使用nptestind
进行boostrap检验
matrix testsindpv = J(2, 3, .)
matrix colnames testsindpv = CRS NiRS VRS
matrix rownames testsindpv = output-based input-based
nptestind y1 y2 y3 = x1 x2 x3 x4 x5, rts(crs) base(output) reps(999) alpha(0.05)
matrix testsindpv[1,1] = e(pvalue)
nptestind y1 y2 y3 = x1 x2 x3 x4 x5, rts(nirs) base(output) reps(999) alpha(0.05) noprint
matrix testsindpv[1,2] = e(pvalue)
nptestind y1 y2 y3 = x1 x2 x3 x4 x5, rts(vrs) base(output) reps(999) alpha(0.05) noprint
matrix testsindpv[1,3] = e(pvalue)
nptestind y1 y2 y3 = x1 x2 x3 x4 x5, rts(crs) base(input) reps(999) alpha(0.05) noprint
matrix testsindpv[2,1] = e(pvalue)
nptestind y1 y2 y3 = x1 x2 x3 x4 x5, rts(nirs) base(input) reps(999) alpha(0.05) noprint
matrix testsindpv[2,2] = e(pvalue)
nptestind y1 y2 y3 = x1 x2 x3 x4 x5, rts(vrs) base(input) reps(999) alpha(0.05) noprint
matrix testsindpv[2,3] = e(pvalue)
matrix list testsindpv
P值结果如下:
CRS NiRS VRS
output-based .06906907 .25625626 .04804805
input-based .03703704 .001001 .23323323
Malmquist指数的计算与分解公式此处不再列出,只是用程序来举例
use pwt56, clear
reshape wide y k l, i(nu country) j(year)
teradial y1965 = k1965 l1965 (y1965 = k1965 l1965), rts(crs) base(output) tename(F11) noprint
teradial y1990 = k1990 l1990 (y1965 = k1965 l1965), rts(crs) base(output) tename(F21) noprint
teradial y1965 = k1965 l1965 (y1990 = k1990 l1990), rts(crs) base(output) tename(F12) noprint
teradial y1990 = k1990 l1990 (y1990 = k1990 l1990), rts(crs) base(output) tename(F22) noprint
generate mpi = sqrt(F12 / F22 * F22 / F21)
generate effch = F11 / F22
generate techch = mpi / effch
PS:文章中所用到的学习资料为《数据包络分析方法与MaxDea软件》与文章“Nonparametric frontier analysis using Stata
”,此资料可在我的公众号“肖夕木的自习室”中回复dea获取。至于文中的数据文件可以自行在stata上下载,当然,在我的dea学习资料中也有包含。