为何去均值后的向量在R Studio中求和结果不为0?
为什么中心化向量在R中求和非零而电子表格中为0?
浮点数精度限制:R采用双精度64位浮点数存储数值,这类格式无法精确表示所有十进制小数。你的向量是通过
x - mean(x)生成的中心化向量,计算均值和做减法的过程中,已经引入了微小的二进制表示误差,这些误差累加后就会得到一个接近0的极小值(比如你得到的5.684342e-13,属于双精度浮点数的典型误差范围)。电子表格的数值处理逻辑:导出CSV时,R会将数值以有限的十进制位数保存,截断了那些微小的误差部分。电子表格读取这些截断后的数值后,求和自然得到精确的0;此外部分电子表格软件会自动将极小数值视为0进行计算或展示。
R中的验证与处理方式:你可以用
all.equal(sum(centered_vec), 0)来判断结果是否在浮点数误差范围内等价于0,或者用round(sum(centered_vec), 10)来得到直观的0结果。
内容的提问来源于stack exchange,提问作者Jack Swanson
相关产品推荐
相关产品推荐

