R语言使用变量均值构建索引的两种方法准确性对比问询
结果差异的核心原因
你两种方法的计算逻辑存在本质区别,和四舍五入无关:
- 你的自定义代码逻辑:先按
country分组对每个原始变量做组内标准化(用每个国家内部的均值、标准差计算Z值),之后直接对4个组内标准化后的变量计算行均值得到索引。 idx_mean默认逻辑:该函数默认会先对所有输入的变量做全数据集全局标准化,再计算行均值。你传入的是已经按国家组内标准化后的变量,等于多做了一次全局标准化步骤,最终结果自然和自定义代码不一致。
准确性判断&修复方案
不存在绝对的「更准确」,只看哪种逻辑符合你的研究设计需求:
- 如果你需要的是「先按国家组内标准化再合成索引」:你的自定义代码逻辑符合预期,只需调用
idx_mean时关闭默认标准化即可,修改后二者结果完全一致:
mutate(data, idx_var = idx_mean(std_var1, std_var2, std_var3, std_var4, std = FALSE))
小提示:你的自定义代码末尾的unnest()属于多余操作,当前处理流程没有生成嵌套列表列,调用该函数反而可能引发报错。
2. 如果你需要的是「标准化后变量再做一次全局标准化再合成索引」:那idx_mean的默认输出更符合你的需求。
结果对比参考

内容的提问来源于stack exchange,提问作者ZR8
相关产品推荐
相关产品推荐

