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

计算Cumulative Deficit Index:自定义失调规则的代码实现需求

累积缺陷指数(Cumulative Deficit Index)计算实现方案

核心逻辑

  1. 预先定义每个分析物z-score的失调判断规则(基于全局分位数)
  2. 逐行判断每个有效分析物是否失调(NA值直接跳过)
  3. 用「失调分析物数量」除以「有效分析物总数」得到个体的dysreg_index

Python 实现代码(基于 Pandas)

1. 准备测试数据(模拟真实场景)

先生成带NA值的1500行数据集,和目标数据结构对齐:

import pandas as pd
import numpy as np

# 固定随机种子保证结果可复现
np.random.seed(42)
# 生成4种分析物的z-score数据
data = pd.DataFrame({
    'alb_zscore': np.random.normal(0, 1, 1500),
    'alp_zscore': np.random.normal(0, 1, 1500),
    'pot_zscore': np.random.normal(0, 1, 1500),
    'glu_zscore': np.random.normal(0, 1, 1500)
})
# 随机插入10%的NA值模拟真实数据缺失
data = data.mask(np.random.random(data.shape) < 0.1)

2. 定义自定义失调规则

用字典存储每个分析物的判断逻辑,键是z-score列名,值是基于全局分位数的判断函数:

# 先计算所有z-score列的关键分位数(按需调整分位值)
quantile_vals = data.quantile([0.125, 0.25, 0.75, 0.875])

# 自定义规则字典,直接加/删键值对即可扩展规则
dysreg_rules = {
    'alb_zscore': lambda x: x < quantile_vals.loc[0.25, 'alb_zscore'],  # 低于25%分位算失调
    'alp_zscore': lambda x: x > quantile_vals.loc[0.75, 'alp_zscore'],  # 高于75%分位算失调
    'pot_zscore': lambda x: x < quantile_vals.loc[0.125, 'pot_zscore'] or x > quantile_vals.loc[0.875, 'pot_zscore'],  # 超出12.5%-87.5%区间算失调
    'glu_zscore': lambda x: x < quantile_vals.loc[0.25, 'glu_zscore'] or x > quantile_vals.loc[0.75, 'glu_zscore']  # 示例:超出四分位距算失调
}

3. 计算累积缺陷指数

# 生成每行的失调标记矩阵(1=失调,0=正常,NA保持)
dysreg_markers = pd.DataFrame()
for col, rule in dysreg_rules.items():
    dysreg_markers[col] = data[col].apply(rule).astype(float)

# 计算每行的失调分析物数量(自动忽略NA)
dysreg_count = dysreg_markers.sum(axis=1, skipna=True)
# 计算每行的有效分析物数量(非NA的列数)
valid_test_count = data[list(dysreg_rules.keys())].count(axis=1)
# 计算最终的累积缺陷指数
data['dysreg_index'] = dysreg_count / valid_test_count

关键细节说明

  • 规则扩展性:新增分析物时,只需在dysreg_rules里添加对应的列名和判断逻辑,核心计算代码无需修改
  • NA值处理:apply会保留原始NA,sum(skipna=True)和count()自动跳过NA,完全符合需求
  • 分位数一致性:基于整个数据集计算分位数,确保所有个体使用统一的判断阈值

验证结果

查看前5行的计算结果:

print(data[['alb_zscore', 'alp_zscore', 'pot_zscore', 'glu_zscore', 'dysreg_index']].head())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 16:34:58