蒙特卡洛模拟实践

11 分钟阅读

介绍蒙特卡洛模拟如何用于LCA不确定性分析,包括参数分布、迭代计算、结果解释和实践注意点。

蒙特卡洛模拟将不确定的LCA输入转化为概率化输出,从而在不确定性下做出稳健的决策。本课提供在LCA工作中实施蒙特卡洛分析的实践指导。

蒙特卡洛提供了严谨的统计不确定性分析,但需要额外的工作量和专业知识。对于许多研究,使用谱系矩阵的**数据质量评估(DQA)**是一种满足ISO 14044要求的实用替代方案。请参阅不确定性分析模块,了解何时仅使用DQA即可满足需求,以及何时蒙特卡洛能带来额外价值。

蒙特卡洛基础

核心理念

蒙特卡洛模拟的工作原理:

  1. 将不确定的输入视为概率分布
  2. 从这些分布中随机抽样
  3. 用每组抽样值运行LCA计算
  4. 收集结果以形成输出分布

经过多次迭代后,输出分布代表了在给定输入不确定性下可能结果的取值范围。

何时使用蒙特卡洛

蒙特卡洛在以下情况下有价值:

  • 比较性能相似的产品
  • 基于LCA结果做出高风险决策
  • 向持怀疑态度的受众传达结果
  • 验证结论的稳健性
  • 了解哪些参数驱动不确定性

在以下情况下可能不需要:

  • 精度不关键的筛选研究
  • 某个选项明显占优的情况
  • 内部快速评估
  • 教学目的

设置分布

选择分布类型

根据你对每个参数的了解匹配分布类型:

对数正态分布(LCA中最常用)

适用场景:

  • 数值必须为正
  • 已知均值和离散度的估计值
  • 变化与量级成比例

参数:

  • 几何均值(μg):中位数值
  • 几何标准差(σg):乘法离散度

如果你认为真实值以95%置信度介于L和H之间:

σg ≈ √(H/L) / 1.645
μg ≈ √(L × H)

正态分布

适用场景:

  • 数值可正可负
  • 围绕均值的对称变化
  • 已知均值和标准差

三角分布

适用场景:

  • 可以估算最小值、最大值和最可能值
  • 估算基于专家判断
  • 数据有限

均匀分布

适用场景:

  • 仅知边界范围
  • 范围内的所有值等可能

实用分布选择指南

情况推荐分布
实测数据且已知标准差正态分布(若对称)或对数正态分布
带有谱系的数据库值对数正态分布(使用谱系因子)
带有范围区间的专家估算三角分布
仅知边界范围均匀分布
比值或乘法不确定性对数正态分布

谱系到分布的工作流程

ecoinvent和其他数据库使用谱系矩阵生成对数正态分布:

  1. 评估谱系评分(1-5)每个指标

  2. 从谱系表中查找不确定性因子

  3. 计算组合不确定性

    σg² = σbase² + σR² + σC² + σT² + σG² + σTech²
  4. 应用于参数作为对数正态分布(均值, σg)

谱系不确定性因子说明值(σ²值):

以下是为教学目的简化的说明性数值。实际的ecoinvent谱系矩阵使用不同的基础不确定性因子和更复杂的计算方法。在进行实际分析时,请始终查阅官方的ecoinvent方法文档(Weidema et al., 2013)或你数据库的具体实现。

评分可靠性完整性时间相关性地理相关性技术相关性
10.0000.0000.0000.0000.000
20.00060.00010.00020.00010.0006
30.0020.00060.0020.00040.008
40.0080.0020.0080.040.04
50.040.0080.040.120.12

实施蒙特卡洛

实施步骤

第一步:识别不确定参数

并非每个参数都需要不确定性分布。重点关注:

  • 对结果有显著贡献的参数
  • 已知数据质量问题的参数
  • 存在替代方案的参数

第二步:分配分布

记录你的选择:

参数分布参数理由
用电量对数正态分布μg=2.5 kWh, σg=1.25谱系评估
运输距离三角分布300, 500, 800 km专家估算
钢材投入对数正态分布μg=15 kg, σg=1.1实测值,±10%不确定性

第三步:处理相关性

识别相关参数:

  • 电力和冷却水(均随产量变化)
  • 材料投入和废物产出(质量平衡)
  • 区域参数(共享数据源)

处理方案:

  • 将相关参数一起抽样
  • 使用copula处理复杂相关结构
  • 如未处理则记录并说明

第四步:运行模拟

所需迭代次数取决于:

  • 百分位数估计所需的精度
  • 模型的复杂度
  • 可用计算时间

一般指导:

  • 1,000次迭代:粗略估算、筛选
  • 10,000次迭代:标准分析
  • 100,000次以上迭代:高精度、罕见事件

第五步:分析结果

计算并报告:

  • 均值、中位数、标准差
  • 置信区间(如第5-第95百分位数)
  • 超过阈值的概率
  • 对于比较:A < B的概率

软件专用指导

openLCA

  1. 为流添加不确定性:

    • 打开一个过程
    • 点击输入/输出的数量
    • 选择”定义不确定性”
    • 选择分布和参数
  2. 运行蒙特卡洛:

    • 打开产品系统
    • 点击计算 → 蒙特卡洛模拟
    • 选择LCIA方法
    • 设置迭代次数
    • 运行并等待
  3. 分析结果:

    • 查看结果的直方图
    • 导出数据进行外部分析
    • 跨影响类别比较分布

SimaPro

  1. 定义不确定性:

    • 在工艺记录中,为每个交换输入不确定性
    • 使用默认的基于谱系的不确定性或自定义分布
  2. 运行分析:

    • 计算 → 蒙特卡洛
    • 设置迭代次数和置信水平
    • 查看统计结果和图表
  3. 高级功能:

    • 方差贡献分析
    • 替代方案的比较蒙特卡洛

Python/Brightway

import brightway2 as bw
import numpy as np
from scipy import stats

# 设置
bw.projects.set_current("your_project")
db = bw.Database("your_database")
method = ('ReCiPe Midpoint', 'climate change', 'GWP100')

# 定义活动
activity = db.get("your_activity_code")

# 蒙特卡洛LCA
mc = bw.MonteCarloLCA({activity: 1}, method)
results = [next(mc) for _ in range(1000)]

# 分析
mean = np.mean(results)
median = np.median(results)
ci_95 = np.percentile(results, [2.5, 97.5])

print(f"Mean: {mean:.2f}")
print(f"Median: {median:.2f}")
print(f"95% CI: [{ci_95[0]:.2f}, {ci_95[1]:.2f}]")

分析蒙特卡洛结果

统计概要

报告以下统计量:

统计量计算方式解读
均值总和/样本数平均期望值
中位数第50百分位数集中趋势(对异常值稳健)
标准差√(Σ(x-均值)²/N)结果的离散程度
变异系数标准差/均值 × 100%相对离散度
95%置信区间第2.5到第97.5百分位数捕获95%结果的范围

方差贡献

识别哪些输入驱动了输出的不确定性:

  1. 计算每个输入与输出之间的相关性
  2. 将相关性平方得到方差贡献
  3. 按贡献大小对参数排序

对方差贡献最大的参数是以下工作的优先项:

  • 更好的数据收集
  • 敏感性测试
  • 不确定性降低工作

比较替代方案

对于产品比较,计算:

每次迭代中的成对差值:

diff[i] = GWP_A[i] - GWP_B[i]

超越性能的概率:

P(A更好) = count(diff < 0) / N

显著差异: 如果差值的95%置信区间不包括零,则差异具有统计显著性。

可视化

直方图:显示分布形状

  • 包含均值/中位数线
  • 标记置信区间
  • 在比较中使用一致的组距

箱线图:比较多个选项

  • 显示中位数、四分位数、异常值
  • 便于跨替代方案比较

累积分布函数(CDF):显示超越概率

  • 读取达到目标的概率
  • 比较整个分布

散点图:显示输入-输出关系

  • 识别有影响力的参数
  • 揭示非线性关系

处理常见问题

收敛性

结果应随着迭代次数增加而趋于稳定。通过以下方式检查收敛性:

  1. 绘制运行均值 vs. 迭代次数的图表
  2. 如果均值仍在显著变化,则增加迭代次数
  3. 百分位数估计需要比均值更多的迭代次数

极端值

结果中的异常值可能表明:

  • 输入分布过宽
  • 通过供应链的乘法效应
  • 模型对某些参数组合敏感

调查极端值以确保其有意义而非错误。

负值

如果物理量出现负值(不可能):

  • 检查分布选择(仅正值使用对数正态分布)
  • 在零处截断分布
  • 重新参数化模型

运行时间长

对于复杂模型:

  • 从较少的迭代次数开始测试(100-500)
  • 如果可用,使用并行处理
  • 考虑简化模型进行筛选
  • 将不确定性集中在最有影响力的参数上

高级主题

拉丁超立方抽样

比简单随机抽样更高效:

  • 将每个分布分层为等概率区间
  • 确保用更少的样本覆盖整个分布
  • 通常快10倍实现收敛

大多数LCA软件将其作为一个选项提供。

全局敏感性分析

超越局部敏感性,全局方法探索整个参数空间:

Sobol’指数:将方差分解为一阶效应和交互效应

Morris方法:对多个参数进行高效筛选

这些方法揭示了局部敏感性无法发现的非线性效应和参数交互效应。

贝叶斯方法

用于整合先验知识和用新数据更新:

  • 先验分布反映现有知识
  • 似然函数纳入新观测数据
  • 后验分布结合两者

高级主题,需要专业工具(如PyMC、Stan)。

关键要点

  1. 基于可用信息选择分布——对数正态分布通常合适
  2. 将不确定性分析聚焦在有影响力的参数上
  3. 运行足够的迭代次数以获得稳定结果(10,000次为典型值)
  4. 对于比较,计算超越性能的概率
  5. 报告置信区间,而不仅仅是点估计值
  6. 方差贡献分析确定数据改进的优先项

练习

对于一个简化的产品系统,包含三个不确定输入:

  • 材料A:Lognormal(10 kg, σg=1.3)
  • 能源:Triangular(5, 8, 15 kWh)
  • 运输:Uniform(100, 500 km)

排放因子(假设已知):

  • 材料A:2.5 kg CO₂/kg
  • 能源:0.5 kg CO₂/kWh
  • 运输:0.1 kg CO₂/km
  1. 计算确定性GWP(使用均值/众数值)
  2. 设置并运行1,000次蒙特卡洛迭代
  3. 报告均值、中位数和95%置信区间
  4. 哪个参数对方差贡献最大?

下一步

下一篇探讨结果性LCA和归因性LCA之间的区别——这两种建模方法从根本上不同,回答关于环境影响的不同问题。


延伸阅读

  • Heijungs, R. (2020). On the Number of Monte Carlo Runs in Comparative Probabilistic LCA. International Journal of Life Cycle Assessment.
  • Saltelli, A., et al. (2008). Global Sensitivity Analysis: The Primer. Wiley.
  • Groen, E.A., & Heijungs, R. (2017). Ignoring Correlation in Uncertainty and Sensitivity Analysis in Life Cycle Assessment. International Journal of Life Cycle Assessment.