資料報絡 DEA 分析法python實現

2021-09-06 22:39:10 字數 4097 閱讀 2608

企業管理者如何評估一所快餐分銷店、銀行支行、健康診所或初等學校的生產力?衡量生產力有三重困難:第一,什麼是系統適當的投入(如勞動力時間、材料金額)及其度量方法?第二,什麼是系統適當的產出(如現金支票、存款憑證)及其度量方法?第三,正確衡量這些投入產出之間關係的方法是什麼?

衡量服務生產力

從工程學角度看,衡量組織的生產力和衡量系統的效率相似。它可以表述為產出和投入的比率。

dea模型

目前,開發出一種技術,通過明確地考慮多種投入(即資源)的運用和多種產出(即服務)的產生,它能夠用來比較提供相似服務的多個服務單位之間的效率,這項技術被稱為資料報絡線分析(dea)。它避開了計算每項服務的標準成本,因為它可以把多種投入和多種產出轉化為效率比率的分子和分母,而不需要轉換成相同的貨幣單位。因此,用dea衡量效率可以清晰地說明投入和產出的組合,從而,它比一套經營比率或利潤指標更具有綜合性並且更值得信賴。

dea是乙個線形規劃模型,表示為產出對投入的比率。通過對乙個特定單位的效率和一組提供相同服務的類似單位的績效的比較,它試圖使服務單位的效率最大化。在這個過程中,獲得100%效率的一些單位被稱為相對有效率單位,而另外的效率評分低於100%的單位本稱為無效率單位。

這樣,企業管理者就能運用dea來比較一組服務單位,識別相對無效率單位,衡量無效率的嚴重性,並通過對無效率和有效率單位的比較,發現降低無效率的方法。

輸入輸出可以在主函式中看到,最後輸出的為θ

\theta

θ矩陣

import numpy as np

from scipy.optimize import fmin_slsqp

class

dea(

object):

def__init__

(self, inputs, outputs)

:# supplied data

self.inputs = inputs

self.outputs = outputs

# parameters

self.n = inputs.shape[0]

self.m = inputs.shape[1]

self.r = outputs.shape[1]

# iterators

self.unit_ =

range

(self.n)

self.input_ =

range

(self.m)

self.output_ =

range

(self.r)

# result arrays

self.output_w = np.zeros(

(self.r,1)

, dtype=np.

float

)# output weights

self.input_w = np.zeros(

(self.m,1)

, dtype=np.

float

)# input weights

self.lambdas = np.zeros(

(self.n,1)

, dtype=np.

float

)# unit efficiencies

self.efficiency = np.zeros_like(self.lambdas)

# thetas

def__efficiency

(self, unit)

:# compute efficiency

denominator = np.dot(self.inputs, self.input_w)

numerator = np.dot(self.outputs, self.output_w)

return

(numerator/denominator)

[unit]

def__target

(self, x, unit)

: in_w, out_w, lambdas = x[

:self.m]

, x[self.m:

(self.m+self.r)

], x[

(self.m+self.r):]

# unroll the weights

denominator = np.dot(self.inputs[unit]

, in_w)

numerator = np.dot(self.outputs[unit]

, out_w)

return numerator/denominator

def__constraints

(self, x, unit)

: in_w, out_w, lambdas = x[

:self.m]

, x[self.m:

(self.m+self.r)

], x[

(self.m+self.r):]

# unroll the weights

constr =

# init the constraint array

# for each input, lambdas with inputs

forinput

in self.input_:

t = self.__target(x, unit)

lhs = np.dot(self.inputs[:,

input

], lambdas)

cons = t*self.inputs[unit,

input

]- lhs

# for each output, lambdas with outputs

for output in self.output_:

lhs = np.dot(self.outputs[

:, output]

, lambdas)

cons = lhs - self.outputs[unit, output]

# for each unit

for u in self.unit_:

)return np.array(constr)

def__optimize

(self)

: d0 = self.m + self.r + self.n

# iterate over units

for unit in self.unit_:

# weights

x0 = np.random.rand(d0)

-0.5

x0 = fmin_slsqp(self.__target, x0, f_ieqcons=self.__constraints, args=

(unit,))

# unroll weights

self.input_w, self.output_w, self.lambdas = x0[

:self.m]

, x0[self.m:

(self.m+self.r)

], x0[

(self.m+self.r):]

self.efficiency[unit]

= self.__efficiency(unit)

deffit

(self)

: self.__optimize(

)# optimize

return self.efficiency

if __name__ ==

"__main__"

: x = np.array([[

20.,300.]

,[30.

,200.]

,[40.

,100.]

,[20.

,200.]

,[10.

,400.]

])y = np.array([[

1000.]

,[1000.]

,[1000.]

,[1000.]

,[1000.]

])dea = dea(x,y)

rs = dea.fit(

)print

(rs)

資料報絡分析(DEA)

資料報絡分析是根據多項投入指標和多項產出指標,利用線性規劃的方法,對具有可比性的同型別單位進行相對有效性評價的一種數量分析方法。1.適合用於多輸出 多輸入的有效性綜合評價問題,在處理所輸出 多輸入的有效性評價方面具有絕對優勢 2.應用dea方法建立模型前無需對資料進行量綱化處理 3.無需任何權重假設...

資料報絡分析法(DEA) R實現

資料報絡分析 data envelopment analysis,dea 是運籌學中用於測量決策部門生產效率的一種方法,它是基於相對效率發展的嶄新的效率評估方法。詳細來說,通過使用數學規劃模型,計算決策單元相對效率,從而評價各個決策單元。每個決策單元 decision units,dmu 都可以看作...

資料分析方法中的杜邦分析法

我們在前面提到了5w2h方法,以及aarrr模型,5w2h就是5w2h分析法的內容,有7個單詞組成,分別是what 使用者要什麼?why 為什麼要?where 從哪兒得到?when 我們什麼時候做?who 對誰做?how much 給多少?how 怎麼做?這種方法是乙個很經典的方法,而aarrr模型...