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

如何用Python复现Excel中基于ChiDist实现的自定义Z函数

复现Excel VBA自定义Z函数的Python实现

关键函数对应说明

你之前实现出错的核心原因是Excel卡方函数的尾侧对应关系没对齐:

  • Excel ChiDist(x, 自由度) 是右尾卡方分布概率,对应scipy的stats.chi2.sf(x, df)(生存函数,等价于1 - stats.chi2.cdf(x, df))
  • Excel NormInv(置信度, 均值, 标准差) 对应scipy的stats.norm.ppf(conf, loc=均值, scale=标准差)

完整实现代码

from scipy import stats
import math

def z(Lambda, conf):
    # 第一步:Lambda四舍五入保留3位小数
    lambda_rounded = round(Lambda, 3)
    if lambda_rounded < 400:
        # 循环i从0到500找第一个满足条件的值
        for i in range(0, 501):
            df = 2 * i + 2
            v = stats.chi2.sf(2 * lambda_rounded, df)
            if v >= conf:
                return i
    else:
        # Lambda≥400走正态分布分位逻辑
        mean = lambda_rounded
        std = math.sqrt(lambda_rounded)
        return stats.norm.ppf(conf, loc=mean, scale=std)

测试验证

调用z(2, 0.95),返回结果为5,和Excel实测结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:27:00