点赞发Nature
关注中Science
上一版非径向距离函数在这
普通非径向距离函数
现在很多研究在测度效率时要考虑非期望产出,如环境技术中CO2排放,银行业中的不良贷款等,这里我写了一个考虑非期望产出的非径向距离函数
import numpy as np
import pandas as pd
import pulp
class DEAProblem:
def __init__(
self,
inputs,
outputs,
bad_outs,
weight_vector,
directional_factor=None,
returns="CRS",
disp="weak disposability",
in_weights=[0, None],
out_weights=[0, None],
badout_weights=[0, None],
):
self.inputs = inputs
self.outputs = outputs
self.bad_outs = bad_outs
self.returns = returns
self.weight_vector = (
weight_vector # weight vector in directional distance function
)
self.disp = disp
self.J, self.I = self.inputs.shape # no of DMUs, inputs
_, self.R = self.outputs.shape # no of outputs
_, self.S = self.bad_outs.shape # no of bad outputs
self._i = range(self.I) # inputs
self._r = range(self.R) # outputs
self._s = range(self.S) # bad_output
self._j = range(self.J) # DMUs
if directional_factor == None:
self.gx = self.inputs
self.gy = self.outputs
self.gb = self.bad_outs
else:
self.gx = directional_factor[: self.I]
self.gy = directional_factor[self.I : (self.I + self.J)]
self.gy = directional_factor[(self.I + self.J) :]
self._in_weights = in_weights # input weight restrictions
self._out_weights = out_weights # output weight restrictions
self._badout_weights = badout_weights # bad output weight restrictions
# creates dictionary of pulp.LpProblem objects for the DMUs
self.dmus = self._create_problems()
def _create_problems(self):
"""
Iterate over the DMU and create a dictionary of LP problems, one
for each DMU.
"""
dmu_dict = {
}
for j0 in self._j