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

使用WHO Anthro计算z-scores时非基线时间点报错问题

使用WHO Anthro计算Z分数时非基线时间点报错

问题描述

使用WHO Anthro工具计算Z分数时,仅基线时间点运行正常,其余时间点均触发错误。基线计算时使用的是不同年龄变量,无异常。

复现代码

df <- structure(list(adm_sex = c(2L, 1L, 2L, 2L, 1L, 1L, 2L, 1L, 2L, 
1L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 
2L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 
1L, 2L), age_days_wk3 = c(531, 584, 667, NA, NA, NA, NA, 206, 
267, 310, 228, 222, 544, 558, 405, NA, NA, NA, NA, NA, 363, 393, 
328, 308, 434, 342, 325, 264, NA, 264, NA, NA, NA, NA, NA, NA, 
250, -240, NA, NA, NA, NA, NA), wkly_weightwk3 = c(7.23, 8.55, 
7.44, NA, NA, NA, NA, 4.2, 6.52, 5.87, 4.22, 5.79, 7.95, 6.25, 
7.06, NA, NA, NA, NA, NA, 6.68, 6.42, 7.86, 6.16, 7.1, 5.44, 
7.4, 5.76, NA, 5.22, NA, NA, NA, NA, NA, NA, 6.83, 7.67, NA, 
NA, NA, NA, NA), ht_fwk3 = c(70.95, 79.2, 74.35, NA, NA, NA, 
NA, 59.45, 66.65, 65.25, 57.3, 61.75, 73.35, 71.9, 67.65, NA, 
NA, NA, NA, NA, 67.5, 68.45, 75.15, 68, 72, 63.2, 70.2, 62.55, 
NA, 59.45, NA, NA, NA, NA, NA, NA, 66.55, 73.05, NA, NA, NA, 
NA, NA)), row.names = c(NA, 43L), class = "data.frame")

library(anthro)

with(df, 
     anthro_zscores(sex = adm_sex, 
                    age = age_days_wk3,
                    weight = wkly_weightwk3,
                    lenhei = ht_fwk3))

错误信息

原错误信息:
Error in round_up(res) : all(x >= 0, na.rm = TRUE) is not TRUE

中文翻译:
round_up(res) 出错:all(x >= 0, na.rm = TRUE) 不成立

问题分析

  • 报错核心原因是年龄变量存在负值:查看age_days_wk3列,发现存在值为-240的异常数据,而anthro_zscores函数要求年龄必须为非负数(符合儿童年龄的生理逻辑)。
  • 基线计算正常是因为当时使用的年龄变量没有这类负值异常。

解决方法

1. 清洗年龄数据

先处理掉年龄列中的负值,可选择以下两种方案:

# 方案1:将负值替换为NA
df$age_days_wk3[df$age_days_wk3 < 0] <- NA

# 方案2:删除包含负年龄的行
df_cleaned <- df[df$age_days_wk3 >= 0 | is.na(df$age_days_wk3), ]

2. 使用清洗后的数据重新计算Z分数

library(anthro)

# 以方案2的清洗后数据为例
with(df_cleaned, 
     anthro_zscores(sex = adm_sex, 
                    age = age_days_wk3,
                    weight = wkly_weightwk3,
                    lenhei = ht_fwk3))

额外检查

确认所有时间点的年龄变量:

  • 无负值、无超出WHO Anthro适用范围的年龄(该工具通常针对0-5岁儿童,即0-1856天左右)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 06:12:40