LMDI 理论推导详解【从理论到Python-MATLAB实现(理论)】

影响因素分解分析方法能够有效地反映任意时段上各个影响因素对目标变量变化的影响程度
大多数模型虽然可以定量反映各影响因素对目标变量变化的影响程度,但无法解释其任意时段上各个影响因素对目标变量变化的影响程度。因此,给分析结果带来了巨大的缺陷,同时使后续分析难以进一步开展。
分解分析将一个待分解的研究目标(如能源消耗、碳排放总量/强度等)通过定性的方法分解为若干驱动因素的集合,然后通过定量去研究这些因素对该研究目标的影响程度大小,即贡献水平。

  • 结构分解
  • 指数分解
    计算过程清晰、计算方法简便,能够很好兼容分解后影响因素少的问题,适用于时间序列分析的模型

1. 指数分解的基本形式

设VVV为m个部门之后,即V=∑iViV=\sum_i{V_i}V=∑i​Vi​,在n维空间里,目标量V可以分解成n个影响因素的成绩,记为Vi=x1,ix2,i⋯xn,iV_{i}=x_{1, i} x_{2, i} \cdots x_{n, i}Vi​=x1,i​x2,i​⋯xn,i​。在时间周期[0,T][0,T][0,T]内,目标量从V0=∑ix1,i0x2,i0⋯xn,i0V^{0}=\sum_{i} x_{1, i}^{0} x_{2, i}^{0} \cdots x_{n, i}^{0}V0=∑i​x1,i0​x2,i0​⋯xn,i0​变化到VT=∑ix1,iTx2,iT⋯xn,iTV^{T}=\sum_{i} x_{1, i}^{T} x_{2, i}^{T} \cdots x_{n, i}^{T}VT=∑i​x1,iT​x2,iT​⋯xn,iT​

乘法形式(Multiplicative Decomposition)
Dtot=VT/V0=Dx1Dx2⋯DxnDrsd )(1-1)\left.D_{\text {tot}}=V^{T} / V^{0}=D_{x_{1}} D_{x_{2}} \cdots D_{x_{n}} D_{\text {rsd }}\right)\tag{1-1} Dtot​=VT/V0=Dx1​​Dx2​​⋯Dxn​​Drsd ​)(1-1)

加法形式(Additive Decomposition)
ΔVtot=VT−V0=ΔVx1+ΔVx2+⋯+ΔVxn+ΔVrsd(1-2)\Delta V_{\text {tot}}=V^{T}-V^{0}=\Delta V_{x_{1}}+\Delta V_{x_{2}}+\cdots+\Delta V_{x_{n}}+\Delta V_{r s d}\tag{1-2} ΔVtot​=VT−V0=ΔVx1​​+ΔVx2​​+⋯+ΔVxn​​+ΔVrsd​(1-2)
指数分解分析中的Laspeyres 和 Divisia 方法应用较为普遍。

1.1 Laspeyres 分解法(Laspeyres Index Decomposition)

由德国学者Laspeyres 于1864年提出的,当时主要用于解决一些经济问题,比如产品产量变化和价格变化各自对企业销售额的影响。拉氏指数法是假定其他因素不变,直接对各个因素进行微分,从二分求出某一因素的变化对被分解变量的影响,该方法简便直观、易于理解,是最为常见的一种分解方法。

1.2 Divisa 分解法(Divisia Index Decomposition)

由法国数学家Divisia于1924年提出,这种方法的宗旨:将分解出的各个因素看成是时间t的连续可微函数,对时间ttt进行微分,然后分解出各个因素的变化对被分解变量的影响。

2. LMDI指数分解分析

根据Divisia分解法定义,目标变量V对时间进行微分:

dVt/dt=∑k∑ix1,itx2,it⋯xk−1,itxk+1,it⋯xn,itdxk,it/dt=∑k∑iVitd(ln⁡xk,it)/dt(2-1)d V^{t} / d t= \\ \sum_{k} \sum_{i} x_{1, i}^{t} x_{2, i}^{t} \cdots x_{k-1, i}^{t} x_{k+1, i}^{t} \cdots x_{n, i}^{t} d x_{k, i}^{t} / d t \\ =\sum_{k} \sum_{i} V_{i}^{t} d\left(\ln x_{k, i}^{t}\right) / d t\tag{2-1} dVt/dt=k∑​i∑​x1,it​x2,it​⋯xk−1,it​xk+1,it​⋯xn,it​dxk,it​/dt=k∑​i∑​Vit​d(lnxk,it​)/dt(2-1)

上式等式两边同时对时间进行积分:
∫0TdVt/dt=VT−V0=∑k∫0T∑iVitd(ln⁡xk,it)/dt(2-2)\int_{0}^{T} d V^{t} / d t=V^{T}-V^{0}=\sum_{k} \int_{0}^{T} \sum_{i} V_{i}^{t} d\left(\ln x_{k, i}^{t}\right) / d t\tag{2-2} ∫0T​dVt/dt=VT−V0=k∑​∫0T​i∑​Vit​d(lnxk,it​)/dt(2-2)
根据指数分解加法形式有:
ΔVxk=∫0T∑iVitd(ln⁡xk,it)/dt(2-3)\Delta V_{x_{k}}=\int_{0}^{T} \sum_{i} V_{i}^{t} d\left(\ln x_{k, i}^{t}\right) / d t\tag{2-3} ΔVxk​​=∫0T​i∑​Vit​d(lnxk,it​)/dt(2-3)
等式 (2-1) 两边同时除以VtV^tVt, 并对时间ttt进行积分:

∫0T1VtdVt/dt=ln⁡(VT/V0)=∑k∫0T∑iωitd(ln⁡xk,it)/dt(2-4)\int_{0}^{T} \frac{1}{V^{t}} d V^{t} / d t=\ln \left(V^{T} / V^{0}\right)=\\ \sum_{k} \int_{0}^{T} \sum_{i} \omega_{i}^{t} d\left(\ln x_{k, i}^{t}\right) / d t\tag{2-4} ∫0T​Vt1​dVt/dt=ln(VT/V0)=k∑​∫0T​i∑​ωit​d(lnxk,it​)/dt(2-4)
上市两边同时做 eee 的指数运算,根据指数分解乘法形式,则有:
Dxk=exp⁡{∫0T∑iωitd(ln⁡xk,it)/dt}(2-5)D_{x_{k}}=\exp \left\{\int_{0}^{T} \sum_{i} \omega_{i}^{t} d\left(\ln x_{k, i}^{t}\right) / d t\right\}\tag{2-5} Dxk​​=exp{∫0T​i∑​ωit​d(lnxk,it​)/dt}(2-5)

2.1 AMDI方法

由于前面的加法和乘法计算困难,因此通常采用近似计算。根据近似方法不同又产生了多种具体的分解结果,即不同类型的 Divisia 分解法,例如 AMDI

算术平均迪氏指数法 (Arithmetic Mean Index Method,AMDI)

加法形式
ΔVxk=0.5∑i(Vi0+ViT)ln⁡(xk,iT/xk,io)(2-6)\Delta V_{x_{k}}=0.5 \sum_{i}\left(V_{i}^{0}+V_{i}^{T}\right) \ln \left(x_{k, i}^{T} / x_{k, i}^{o}\right)\tag{2-6} ΔVxk​​=0.5i∑​(Vi0​+ViT​)ln(xk,iT​/xk,io​)(2-6)
乘法形式
Dxk=exp⁡{∑i0.5(ωi0+ωiT)ln⁡(xk,iT/xk,io)}(2-7)D_{x_{k}}=\exp \left\{\sum_{i} 0.5\left(\omega_{i}^{0}+\omega_{i}^{T}\right) \ln \left(x_{k, i}^{T} / x_{k, i}^{o}\right)\right\}\tag{2-7} Dxk​​=exp{i∑​0.5(ωi0​+ωiT​)ln(xk,iT​/xk,io​)}(2-7)

2.2 LMDI 方法

AMDI分解法也存在残值问题,Ang等研究提出了对数平均迪氏指数法,对AMDI方法进行了改进。LMDI分解模型如下:

对数平均迪氏指数法 (Logarithmic Mean Index Method, LMDI)

加法形式
ΔVxk=∑iL(ViT,Vi0)ln⁡(xk,iT/xk,io)(2-8)\Delta V_{x_{k}}=\sum_{i} L\left(V_{i}^{T}, V_{i}^{0}\right) \ln \left(x_{k, i}^{T} / x_{k, i}^{o}\right)\tag{2-8} ΔVxk​​=i∑​L(ViT​,Vi0​)ln(xk,iT​/xk,io​)(2-8)
乘法形式
Dxi=exp⁡{∑iL(ViT,Vi0)L(VT,V0)ln⁡(xk,iT/xk,io)}=exp⁡{ΔVxiL(VT,V0)}(2-9)D_{x_{i}}=\exp \left\{\sum_{i} \frac{L\left(V_{i}^{T}, V_{i}^{0}\right)}{L\left(V^{T}, V^{0}\right)} \ln \left(x_{k, i}^{T} / x_{k, i}^{o}\right)\right\}= \\ \exp \left\{\frac{\Delta V_{x_{i}}}{L\left(V^{T}, V^{0}\right)}\right\}\tag{2-9} Dxi​​=exp{i∑​L(VT,V0)L(ViT​,Vi0​)​ln(xk,iT​/xk,io​)}=exp{L(VT,V0)ΔVxi​​​}(2-9)
其中:L(x,y)=(y−x)/ln⁡(y/x)L(x, y)=(y-x) / \ln (y / x)L(x,y)=(y−x)/ln(y/x)

3. LMDI指数分解分析:案例展示

利用LMDI方法,对“I=PAT”模型进行因素分解,结果如下

对数平均迪氏指数法(Logarithmic Mean Index Method, LMDI)
ΔIP=(IT−I∘)ln⁡(IT/I0)ln⁡(PT/P0)ΔIA=(IT−I0)ln⁡(IT/I0)ln⁡(AT/A0)ΔIT=(IT−I0)ln⁡(IT/I0)ln⁡(TT/T0)(3-1)\begin{aligned} \Delta I_{P} &=\frac{\left(I^{T}-I^{\circ}\right)}{\ln \left(I^{T} / I^{0}\right)} \ln \left(P^{T} / P^{0}\right) \\ \Delta I_{A} &=\frac{\left(I^{T}-I^{0}\right)}{\ln \left(I^{T} / I^{0}\right)} \ln \left(A^{T} / A^{0}\right) \\ \Delta I_{T} &=\frac{\left(I^{T}-I^{0}\right)}{\ln \left(I^{T} / I^{0}\right)} \ln \left(T^{T} / T^{0}\right) \end{aligned}\tag{3-1} ΔIP​ΔIA​ΔIT​​=ln(IT/I0)(IT−I∘)​ln(PT/P0)=ln(IT/I0)(IT−I0)​ln(AT/A0)=ln(IT/I0)(IT−I0)​ln(TT/T0)​(3-1)

可以证明LMDI方法是一种完全分解方法

ΔIP+ΔIA+ΔIT=(IT−I0)ln⁡(IT/I0)[ln⁡(PT/P0)+ln⁡(AT/A0)+ln⁡(TT/T0)]=(IT−I0)ln⁡(IT/I0)ln⁡(PTATTT/P0A0T0)=IT−I0(3-2)\begin{array}{l} \Delta I_{P}+\Delta I_{A}+\Delta I_{T} =\frac{\left(I^{T}-I^{0}\right)}{\ln \left(I^{T} / I^{0}\right)}\left[\ln \left(P^{T} / P^{0}\right)+\ln \left(A^{T} / A^{0}\right)+\ln \left(T^{T} / T^{0}\right)\right]\\ =\frac{\left(I^{T}-I^{0}\right)}{\ln \left(I^{T} / I^{0}\right)} \ln \left(P^{T} A^{T} T^{T} / P^{0} A^{0} T^{0}\right) =I^{T}-I^{0} \end{array} \tag{3-2} ΔIP​+ΔIA​+ΔIT​=ln(IT/I0)(IT−I0)​[ln(PT/P0)+ln(AT/A0)+ln(TT/T0)]=ln(IT/I0)(IT−I0)​ln(PTATTT/P0A0T0)=IT−I0​(3-2)

4. LMDI的“零值”处理

对于ΔVx=L(VT,V0)ln⁡(XT/X0)\Delta V_{x}=L\left(V^{T}, V^{0}\right) \ln \left(X^{T} / X^{0}\right)ΔVx​=L(VT,V0)ln(XT/X0), 如果其中任意一个变量趋近于0时:

其对数运算值趋近于无穷。B.W.Ang 等人讨论了以下8类情况

5. LMDI的补充

研究人员和政府决策者采用的有关能源消费及碳排放影响因素的分解分析方法很多,但具体哪一种更好没有一致的认识。Ang (2004) 收集了一些常用的方法,对比之后认为不论是从理论背景、实用性、可操行还是结果表达的角度,LMDI都是一种极好的分解方法。同时,LMDI方法没有残差,而且能够处理出现零值的情况。

指数分解方法对分析数据以两种方式分解:时间序列分解(time-series)方式和区间分解(period-wise)方式。

  • 时间序列分解:分t年和t+1年进行,如2005-2006,2006-2007和2007-2008-
  • 区间分解:对两个基准年之间的变化进行的,而中间年份的变化忽略不计。

6。 参考文献

Xiang X, Ma X, Ma Z, et al. Python-LMDI: A Tool for Index Decomposition Analysis of Building Carbon Emissions[J]. Buildings, 2022, 12(1): 83.

LMDI 理论推导详解【从理论到Python-MATLAB实现(理论)】相关推荐

  1. 【机器学习基本理论】详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解

    [机器学习基本理论]详解最大似然估计(MLE).最大后验概率估计(MAP),以及贝叶斯公式的理解 https://mp.weixin.qq.com/s/6H0gmMWvTExySMraroLVlQ 最 ...

  2. 【机器学习基本理论】详解最大后验概率估计(MAP)的理解

    [机器学习基本理论]详解最大后验概率估计(MAP)的理解 https://mp.weixin.qq.com/s/dQxN46wEbFrpvV369uOHdA 最大似然估计(Maximum likeli ...

  3. 【相机标定与三维重建原理及实现】学习笔记1——相机模型数学推导详解

    目录 前言 一.小孔成像模型 二.坐标系的变换 1.世界坐标系到相机坐标系的变换(刚体变换)[xw^→xc^\boldsymbol {\hat{x_{w}}}\rightarrow \boldsymb ...

  4. Diffusion model(二): 训练推导详解

    接上文 Diffusion model(一): 公式推导详解 Diffusion model(二): 训练推导详解 Diffusion model(三): 公式结论 Diffusion的训练推导 1. ...

  5. 【人脸识别】人脸验证算法Joint Bayesian详解及实现(Python版)

    人脸验证算法Joint Bayesian详解及实现(Python版) Tags: JointBayesian DeepLearning Python 本博客仅为作者记录笔记之用,不免有很多细节不对之处 ...

  6. python获取mysql中的数据供js调用_详解js文件通过python访问数据库方法

    我来教你 js文件怎么通过python访问数据库,希望能够为你带来帮助. 1.如果是要提交表单内容给 服务器的 python 处理,那么只需要在表单 里面的 action 填写服务端的处理路由就可以了 ...

  7. 1、决策树理论知识详解与sklearn实践

    看过我数学建模专栏的读者应该知道,我从去年开始就计划写这专栏,但由于各种原因,一直无暇实施计划.而从本篇开始,这个专栏将开始填坑.每篇博文会采用理论+实践的形式,试图用sklearn这个强大的工具包来 ...

  8. ICP(迭代最近点)算法推导详解

    概述 ICP用来求解3D-3D的位姿估计问题.假设有一组配对好的3D点,例如对两幅RGB-D图像进行匹配,或者是EPnP方法中已知参考的在相机坐标系中的坐标和在世界坐标系的坐标(参考我PnP的博文): ...

  9. 相机小孔成像模型(逐步推导详解)

    先搞清楚为什么可以简化成小孔成像模型 相机小孔成像模型推导 原则:先简单后复杂,先理想后实际 [理想情况,相机无畸变] 一.明确四个坐标系:这个是推导的前提! 说明: 1.图像坐标系的坐标原点是成像平 ...

最新文章

  1. 编程软件python下载怎么读-怎么学python编程语言,他说,你需要这个工具
  2. mysql-data-dumper
  3. asp.net 二级域名(路由方式实现)
  4. wxWidgets:工具栏概述
  5. 大连富海计算机专修学校怎么样,大连富海计算机专修学校贴吧吧规(2018年版)...
  6. SQLserver被js注入的全库替换SQL
  7. c 匹配mysql密码,MySQL设置密码的三种方法
  8. PHP date() 函数
  9. [python]python 动态调用模块类方法
  10. Docker设置容器CPU、memory、磁盘IO资源限制
  11. 区块链 性能压力测试工具Caliper
  12. 四种传真接收模式概述
  13. python查找列表中的重复值_在列表列表中查找重复项
  14. 基因重组-冲刺日志(第六天)
  15. 1.1.32 Histogram 直方图
  16. 小猫爪:嵌入式小知识01-存储器
  17. MATLAB强化学习实战(十三) 使用强化学习智能体训练Biped机器人行走
  18. openstack placement
  19. NOIP2014P4 子矩阵 题解
  20. viewFlipper的基本实现

热门文章

  1. 04_Python简答题
  2. 微信小程序单页开发之 min-cli
  3. 名创优品寻求香港上市:叶国富夫妇持股64% 有77%投票权
  4. 高效办公!Python 批量生成PDF文档
  5. 华为防火墙nat地址转换实现可以访问互联网
  6. 信息系统项目管理师---第五章 项目范围管理
  7. Python爬虫进阶(十):实战,Scrapy爬取贴吧
  8. c语言给bmp图片加滤镜,图片编辑器PixelStyle: 图像处理,滤镜特效
  9. ITIL4 术语词汇表(附下载)
  10. CASS3D旗靓版20220402版本更新了,更稳定【下载地址文末】