You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助将公式D=2∑ni=1{Ylog[YE(Y)]−[Y−E(Y)]}转换为Python代码

公式转Python实现

你需要实现的是似然比偏差统计量,修正后正确公式逻辑为:
$D = 2 \sum_{i=1}^n \left[ Y_i \log\left( \frac{Y_i}{E(Y)} \right) - (Y_i - E(Y)) \right]$
符号说明:

  • $Y_i$:第i个实际观测值
  • $E(Y)$:观测值序列Y的均值(期望)
  • $n$:观测值总数量

NumPy高效实现(适合大数据量场景)

import numpy as np

def calc_deviance(y):
    e_y = np.mean(y)
    # 添加极小值避免观测值为0时出现log(0)报错
    eps = 1e-10
    sum_item = np.sum(y * np.log((y + eps) / e_y) - (y - e_y))
    return 2 * sum_item

注:代码中添加的1e-10极小值是为了规避观测值为0时log(0)的数值报错,不会影响正常计算的结果精度。

纯Python实现(无第三方库依赖)

import math

def calc_deviance_basic(y):
    n = len(y)
    e_y = sum(y) / n
    eps = 1e-10
    sum_item = 0
    for yi in y:
        sum_item += yi * math.log((yi + eps) / e_y) - (yi - e_y)
    return 2 * sum_item

调用示例

# 测试数据
test_y = [2, 4, 5, 7, 9]
print(calc_deviance(test_y))

内容的提问来源于stack exchange,提问作者BinQuan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 11:30:05