{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# CCR 模型"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## DEA 方法介绍\n",
    "### 简介\n",
    "数据包络分析方法( DEA, Data Envelopment Analysis )由 Charnes、 Coopor 和 Rhodes 于 1978 年提出,该方法的原理主要是通过保持决策单元(DMU,Decision Making Units)的输入或者输出不变,借助于数学规划和统计数据确定相对有效的生产前沿面,将各个决策单元投影到 DEA 的生产前沿面上,并通过比较决策单元偏离 DEA 前沿面的程度来评价它们的相对有效性。\n",
    "\n",
    "DEA 方法以相对效率概念为基础,以凸分析和线形规划为工具的一种评价方法,应用数学规划模型计算比较决策单元之间的相对效率,对评价对象做出评价,它能充分考虑对于决策单元本身最优的投入产出方案,因而能够更理想地反映评价对象自身的信息和特点;同时对于评价复杂系统的多投入多产出分析具有独到之处。\n",
    "\n",
    "### DEA 方法的特点\n",
    "* 适用于多输出——多输入的有效性综合评价问题,在处理多输出多输入的有效性评价方面具有绝对优势\n",
    "* DEA 方法并不直接对数据进行综合,因此决策单元的最优效率指标与投入指标值及产出指标值的量纲选取无关,应用 DEA 方法建立模型前无须对数据进行无量纲化处理(当然也可以)\n",
    "* 无须任何权重假设,而以决策单元输入输出的实际数据求得最优权重,排除了很多主观因素,具有很强的客观性\n",
    "* DEA 方法假定每个输入都关联到一个或者多个输出,且输入输出之间确实存在某种联系,但不必确定这种关系的显示表达式\n",
    "\n",
    "### 应用领域\n",
    "综合评价的应用领域和范围非常广泛。从学科领域上看,在**自然科学**中广泛应用于各种事物的特征和性质的评价。比如:\n",
    "* 环境监测综合评价\n",
    "* 药物临床试验综合评价\n",
    "* 地质灾害综合评价\n",
    "* 气候特征综合评价\n",
    "* 产品质量综合评价等等;\n",
    "\n",
    "在**社会科学**中广泛应用于总体特征和个体特征的综合评价。比如:\n",
    "* 社会治安综合评价\n",
    "* 生活质量综合评价\n",
    "* 社会发展综合评价\n",
    "* 教学水平综合评价\n",
    "* 人居环境综合评价等等。\n",
    "\n",
    "在**经济学**学科领域更为普遍。如:\n",
    "* 综合经济效益评价\n",
    "* 小康建设进程评价\n",
    "* 经济预警评价分析\n",
    "* 生产方式综合评价\n",
    "* 房地产市场景气程度综合评价等等。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 评价方法\n",
    "评价方法大体上可分为主观赋权、客观赋权,其主要区别在确定权重的方法上。\n",
    "\n",
    "* **主观赋权法**: 多数采取综合咨询评分确定权重。如综合指数法、模糊综合评判法、层次分析法、功效系数法等。这些方法都依赖于 “专家” 的权重或较多独立个体的评判偏好。\n",
    "* **客观赋权法**: 根据各指标间相关关系或各指标值变异程度来确定权数,如主成分分析法、因子分析法、优劣解距离法等。目前国内外综合评价方法有数十种之多,其中主要使用的评价方法有主成分分析法、因子分析法、TOPSIS法、秩和比法、灰色关联法、熵权法、层次分析法、模糊评价法、物元分析法、聚类分析法、价值工程法、神经网络法等。这些方法依赖于数据本身,本质上与数据间的大小、方差有关。\n",
    "\n",
    "综合评价的方法一般是主客观结合的,方法的选择需基于实际指标数据情况选定,最为关键的是指标的选取,以及指标权重的设置,这些需要基于广泛的调研和扎实的业务知识,不能说单纯的从数学上解决的。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 指标选取\n",
    "评价指标的选择对于任何综合评价来说评价指标的选择都是至关重要的。选择评价指标的原则主要有:\n",
    "* 尽量能够全面反映整个事物,尽量选择代表性强的指标\n",
    "* 指标间的相关性尽可能不强,如果指标间具有较强的相关性,会给最后的分析结果带来偏移,应不纳入评价系统。如果选择的指标具有较强的相关性,而实际工作中又不宜将其摒弃,就应该对这些指标加权。指标权系数的确定应该从专业和相关大小等诸方面来考虑。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## DEA 基本原理和模型\n",
    "### 基本思想\n",
    "x 轴为要素投入,y 轴为产出,寻找生产前沿面\n",
    "\n",
    "如果是单个要素的输入输出,可以很容易看出,直线斜率越倾斜,生产效率越高"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div align=center><img src=\"https://gitee.com/lei940324/picture/raw/master/img/2020/0608/133317.png\" width=\"297\" ></div>\n",
    "<div align=center><img src=\"https://gitee.com/lei940324/picture/raw/master/img/2020/0608/133410.png\" width=\"336\" ></div>\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 数据结构\n",
    "绩效评估是评估组织或个人如何以较少的资源获得较多的产出结果的多属性评估,也称之为成本效益分析。数据包络分析是 A.Charnes, Copper 和 E.Rhodes 在 1978 年提出的评价多指标输入输出,衡量系统有效性的方法。将属性划分为投入项、产出项(成本型、效益型指标),不预先设定权重,只关心总产出与总投入,以其比率作为相对效率。数据包络分析有多种模式,主要为:CCR 模式,BBC 模式、交叉模式、A&P 模式。\n",
    "\n",
    "在 DEA 中,每个评估的对象称为“决策单元”(记为 DMU),设共有 n 个决策对象,每个决策单元都有 m 种投入和 s 种产出\n",
    "\n",
    "<div align=center><img src=\"https://gitee.com/lei940324/picture/raw/master/img/2020/0608/135345.png\" width=\"666\" ></div>\n",
    "\n",
    "各变量定义如下:\n",
    "* $x_{ij}$ —— 第 j 个决策单元对第 i 种类型输入的投入总量。$x_{ij}>0$ \n",
    "* $y_{rj}$ —— 第 j 个决策单元对第 r 种类型输出的产出总量。$y_{rj}>0$ \n",
    "* $v_i$ —— 对第 i 种类型输入的一种度量,权系数 \n",
    "* $u_r$ —— 对第 r 种类型输出的一种度量,权系数 \n",
    "* i —— 1, 2,..., m\n",
    "* r —— 1, 2,..., s\n",
    "* j —— 1, 2,..., n\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "对于每一个决策单元 $DMU_j$ 都有相应的效率评价指数:\n",
    "\n",
    "$$h_{j}=\\frac{u^{T} y_{i}}{v^{T} x_{j}}=\\frac{\\sum_{r=1}^{s} u_{r} y_{r j}}{\\sum_{i=1}^{m n} v_{i} x_{i j}}, j=1,2, \\ldots, n\\tag{1}$$\n",
    "\n",
    "我们总可以适当的取权系数 v 和 u, 使得 $h_j<=1, j=1, 2,..., n$\n",
    "\n",
    "对第 $j_0$ 个决策单元进行效率评价,一般说来,$h_{j_0}$ 越大表明 $DMU_{j_0}$ 能够用相对较少的输入而取得相对较多的输出。\n",
    "\n",
    "这样我们如果对 $DMU_{j_0}$ 进行评价,看 $DMU_{j_0}$ 在这 n 个 DMU 中相对来说是不是最优的,我们可以考察当尽可能的变化权重时,$h_{j_0}$ 的最大值究竟是多少。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "如以第 $j_0$ 个决策单元的效率指数为目标,以所有决策单元的效率指数为约束,就构造了如下的 CCR ($C^2R$)模型:\n",
    "\n",
    "$$\n",
    "\\left\\{ \\begin{array}{c}\n",
    "\t\\max h_{j_o}=\\frac{\\sum_{r=1}^s{u_r}y_{rj_o}}{\\sum_{i=1}^m{v_i}x_{ij_o}}\\\\\n",
    "\t\\,\\,\\text{s}.\\text{t}. \\frac{\\sum_{r=1}^s{u_r}y_{rj}}{\\sum_{i=1}^m{v_i}x_{ij}}\\le 1,j=1,2,...n\\\\\n",
    "\tu\\ge 0,v\\ge 0\\\\\n",
    "\\end{array} \\right. \\tag{2}\n",
    "$$\n",
    "\n",
    "上述规划模型从投入资源的角度来看,在当前产出的水准下,比较投入资源的使用情况,以此作为效益评价的依据,这种模式称为“投入导向模式”。但这种模型是一个分式规划,难以求最优解, 因此将其线性化,取对偶模型进行求解。\n",
    "\n",
    "使用 Charnes-Cooper 变化,令:$t=\\frac{1}{v^{T} x_{0}}, w=t v, \\mu=t u \\quad$,由 $t=\\frac{1}{v^{t} x_{0}} \\Rightarrow w^{t} x_{0}=1$\n",
    "\n",
    "可变成如下的线性规划模型(3):\n",
    "\n",
    "$$\n",
    "\\begin{cases}\n",
    "\t\\max h_{j_0}=\\mu ^Ty_o\\\\\n",
    "\t\\text{s}.\\text{t}.\\text{w}^Tx_j-\\mu ^Ty_j\\ge 0,j=1,2,...n\\\\\n",
    "\tw^Tx_0=1\\\\\n",
    "\tw\\ge 0,\\mu \\ge 0\\\\\n",
    "\\end{cases}\\tag{3}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "规划 (3) 的对偶规划如下:\n",
    "\n",
    "$$\n",
    "\\begin{cases}\n",
    "\t\\min \\theta\\\\\n",
    "\ts.t. \\sum_{j=1}^n{\\lambda _j}x_j\\le \\theta x_0\\\\\n",
    "\t\\sum_{j=1}^n{\\lambda _j}y_j\\ge y_0\\\\\n",
    "\t\\lambda _j\\ge 0, j=1,2,...n\\\\\n",
    "\t\\theta \\,\\,\\text{无约束}\\\\\n",
    "\\end{cases}\\tag{4}\n",
    "$$\n",
    "\n",
    "可以发现:\n",
    "* 这个模型可以直观地理解为将决策单元 $j_0$ 的投入、产出表示为其他决策单元的线性组合.\n",
    "* 利用线性规划的最优解来定义决策单元 $j_0$ 的有效性,从模型可以看出,该决策单元 $j_0$ 的有效性是相对其他所有决策单元而言的。\n",
    "* 对于 CCR 模型可以用规划 (3) 表达,而线性规划一个重要的有效理论是对偶理论,通过建立对偶模型更容易从理论和经济意义上作深入分析\n",
    "* 如果有某个 (或某些) 决策单元的产出量达到决策单元 $j_0$ 的水平 (达到,不一定要超过。模型 (4) 第二个约束的含义),而投入量尽可能小 (第一个约束的含义), 那么会出现 $\\theta<1$ 的情况, 此时说明该决策单元存在资源浪费。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## matlab 程序\n",
    "### linprog 函数介绍\n",
    "参考百度百科:https://baike.baidu.com/item/linprog/900882?fr=aladdin\n",
    "\n",
    "### CCR 模型\n",
    "估计的模型(3)\n",
    "```matlab\n",
    "clc; clear;\n",
    "\n",
    "% 1.添入数据\n",
    "x = [ ]; y = [ ];  % 其中 x 表示输入变量,y 表示输出变量\n",
    "\n",
    "% 2.确定参数\n",
    "n = size(x,1);   % 输入变量 x 的行数\n",
    "m = size(x,2);   % 输入变量 x 的列数\n",
    "s = size(y,2);   % 输出变量 y 的列数\n",
    "\n",
    "% 3.线性规划\n",
    "A=[-x y];        % 约束矩阵\n",
    "b=zeros(n,1);    % 约束增广矩阵\n",
    "LB=zeros(m+s,1); % 带估计参数取值范围,均 ≥0\n",
    "UB=[];\n",
    "for i=1:n;\n",
    "    f=[zeros(1,m) -y(i,:)];\n",
    "    Aeq=[x(i,:) zeros(1,s)];    beq=1;\n",
    "    w(:,i)=linprog(f,A,b,Aeq,beq,LB,UB);\n",
    "    E(i,i)=y(i,:)*w(m+1:m+s,i);\n",
    "    theta(i)=E(i,i);\n",
    "end\n",
    "w        %权重向量\n",
    "theta’  %输出相对效率值\n",
    "```"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}