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

含缺失值的净资产计算:结果差异与维度均值匹配问题咨询

带缺失值的财富维度均值匹配整体净资产均值问题解决

问题背景

数据集包含住房(housing)、商业资产(business)、金融资产(financial)、贷款(loan)、非住房贷款(loan_non_housing)变量,存在不同程度随机缺失值。净资产计算逻辑为:

  • 资产项:若housing、business、financial全为NA则返回NA,否则忽略NA求和
  • 负债项:若loan、loan_non_housing全为NA则返回NA,否则忽略NA求和
  • 净资产:资产和负债均为NA则返回NA;仅资产为NA则取负负债;仅负债为NA则取资产;否则资产减负债

按年龄组和社会阶层分组计算时,mean(net_assets, na.rm = TRUE)的结果,与各维度常规均值(mean(housing, na.rm=TRUE)等)求和的结果差异显著,需要在保留原净资产缺失值处理逻辑的前提下,让维度均值的求和结果与整体净资产均值一致。

核心原因

常规维度均值是基于该维度自身非NA的所有样本计算,而整体净资产均值是基于排除了“资产全NA且负债全NA”的样本计算,两者的样本池不一致,导致求和结果不匹配。

解决方案:基于有效净资产样本计算维度均值

仅使用净资产非NA的样本(即原计算mean(net_assets, na.rm=TRUE)的样本)来计算各维度的均值,确保样本池完全一致,这样维度均值的求和结果会和整体净资产均值完全匹配。

代码实现

# 基于有效净资产样本的分组汇总
fig_net_assets_adjusted <- df %>%
  filter(!is.na(net_assets)) %>%  # 过滤掉净资产为NA的无效样本
  group_by(age_groups, social_class) %>%
  summarise(
    mean_net_assets = mean(net_assets),  # 无需na.rm,已过滤NA
    # 基于有效样本计算各维度均值
    mean_housing = mean(housing, na.rm = TRUE),
    mean_business = mean(business, na.rm = TRUE),
    mean_financial = mean(financial, na.rm = TRUE),
    mean_loan = mean(loan, na.rm = TRUE),
    mean_loan_non_housing = mean(loan_non_housing, na.rm = TRUE),
    # 验证维度均值求和是否匹配整体净资产均值
    summed_mean = mean_housing + mean_business + mean_financial - mean_loan - mean_loan_non_housing
  )

验证逻辑

  • 所有参与计算的样本都是净资产有效的样本,和计算mean(net_assets, na.rm=TRUE)的样本完全一致
  • 对每个有效样本来说,净资产等于「该样本中存在的资产值之和」减去「该样本中存在的负债值之和」
  • 均值的和等于和的均值,因此基于有效样本计算的各维度均值之和,必然等于净资产的均值

对比常规均值的扩展代码

如果需要同时查看常规维度均值和调整后的维度均值,可以用以下代码:

fig_net_assets_combined <- df %>%
  group_by(age_groups, social_class) %>%
  summarise(
    mean_net_assets = mean(net_assets, na.rm = TRUE),
    # 常规维度均值(基于该维度自身非NA的所有样本)
    mean_housing_full = mean(housing, na.rm = TRUE),
    mean_business_full = mean(business, na.rm = TRUE),
    mean_financial_full = mean(financial, na.rm = TRUE),
    mean_loan_full = mean(loan, na.rm = TRUE),
    mean_loan_non_housing_full = mean(loan_non_housing, na.rm = TRUE),
    # 基于有效净资产样本的维度均值
    mean_housing_valid = mean(housing[!is.na(net_assets)], na.rm = TRUE),
    mean_business_valid = mean(business[!is.na(net_assets)], na.rm = TRUE),
    mean_financial_valid = mean(financial[!is.na(net_assets)], na.rm = TRUE),
    mean_loan_valid = mean(loan[!is.na(net_assets)], na.rm = TRUE),
    mean_loan_non_housing_valid = mean(loan_non_housing[!is.na(net_assets)], na.rm = TRUE),
    # 验证匹配结果
    summed_valid_mean = mean_housing_valid + mean_business_valid + mean_financial_valid - mean_loan_valid - mean_loan_non_housing_valid
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 16:15:55