Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Prod与浮点_R - Fatal编程技术网

Prod与浮点

Prod与浮点,r,R,我从一张纸上复制了一个计算,其中一部分是 prod(c(0.44, 0.26, 0.21, 0.35, 0.37, 0.42, 0.35, 0.45, 0.34, 0.39, 0.33, 0.38, 0.26, 0.42, 0.22, 0.22, 0.47)) 这就给了, 8.500645e-09 然而,该文件将该值报告为 8.13e-09 在整个计算过程中还存在其他差异示例,例如(另一个prod()计算,一个lm(),需要斜率和截距以供后续使用,其结果给出的结果略有不同) 我怀疑我看到

我从一张纸上复制了一个计算,其中一部分是

prod(c(0.44, 0.26, 0.21, 0.35, 0.37, 0.42, 0.35, 0.45, 0.34, 0.39, 
0.33, 0.38, 0.26, 0.42, 0.22, 0.22, 0.47))
这就给了,

8.500645e-09
然而,该文件将该值报告为

8.13e-09
在整个计算过程中还存在其他差异示例,例如(另一个prod()计算,一个lm(),需要斜率和截距以供后续使用,其结果给出的结果略有不同)

我怀疑我看到的是浮点差异,但我怎么能确定呢?如果是浮点差异,我需要什么进一步的信息才能以更高的精度再现计算


ps我已经阅读了stackoverflow上关于浮点运算的帖子。

看起来只有17项的浮点错误不太可能传播到5%的差异,除非数据在显示时四舍五入,但在计算中没有四舍五入。但是,如果基础值与显示值的差异可能高达0.005,那么我认为这可能是“浮点问题”,或者更准确地说,是舍入操作导致的错误传播,没有问题

var <- c(0.44, 0.26, 0.21, 0.35, 0.37, 0.42, 0.35, 0.45, 0.34, 0.39, 
          0.33, 0.38, 0.26, 0.42, 0.22, 0.22, 0.47) 

> prod(var+runif(17, -0.005, 0.005) )
[1] 8.483948e-09
> prod(var+runif(17, -0.005, 0.005) )
[1] 8.778634e-09
> prod(var+runif(17, -0.005, 0.005) )
[1] 8.351511e-09
> prod(var+runif(17, -0.005, 0.005) )
[1] 8.113381e-09
> prod(var+runif(17, -0.005, 0.005) )
[1] 8.224519e-09
> prod(var+runif(17, -0.005, 0.005) )
[1] 8.664986e-09


set.seed(101)
rr <- replicate(1000,prod(var+runif(17, -0.005, 0.005)))
par(las=1,bty="l")
hist(rr,breaks=50,col="gray")
abline(v=c(8.5e-9,8.13e-9),col=c(2,4),lwd=2)
var产品(var+runif(17,-0.005,0.005))
[1] 8.483948e-09
>产品(var+runif(17,-0.005,0.005))
[1] 8.778634e-09
>产品(var+runif(17,-0.005,0.005))
[1] 8.351511e-09
>产品(var+runif(17,-0.005,0.005))
[1] 8.113381e-09
>产品(var+runif(17,-0.005,0.005))
[1] 8.224519e-09
>产品(var+runif(17,-0.005,0.005))
[1] 8.664986e-09
种子集(101)

rr只有17个项目的浮点错误不太可能传播到5%的差异,除非数据在显示时四舍五入,但在计算中没有四舍五入。但是,如果基础值与显示值的差异可能高达0.005,那么我认为这可能是“浮点问题”,或者更准确地说,是舍入操作导致的错误传播,没有问题

var <- c(0.44, 0.26, 0.21, 0.35, 0.37, 0.42, 0.35, 0.45, 0.34, 0.39, 
          0.33, 0.38, 0.26, 0.42, 0.22, 0.22, 0.47) 

> prod(var+runif(17, -0.005, 0.005) )
[1] 8.483948e-09
> prod(var+runif(17, -0.005, 0.005) )
[1] 8.778634e-09
> prod(var+runif(17, -0.005, 0.005) )
[1] 8.351511e-09
> prod(var+runif(17, -0.005, 0.005) )
[1] 8.113381e-09
> prod(var+runif(17, -0.005, 0.005) )
[1] 8.224519e-09
> prod(var+runif(17, -0.005, 0.005) )
[1] 8.664986e-09


set.seed(101)
rr <- replicate(1000,prod(var+runif(17, -0.005, 0.005)))
par(las=1,bty="l")
hist(rr,breaks=50,col="gray")
abline(v=c(8.5e-9,8.13e-9),col=c(2,4),lwd=2)
var产品(var+runif(17,-0.005,0.005))
[1] 8.483948e-09
>产品(var+runif(17,-0.005,0.005))
[1] 8.778634e-09
>产品(var+runif(17,-0.005,0.005))
[1] 8.351511e-09
>产品(var+runif(17,-0.005,0.005))
[1] 8.113381e-09
>产品(var+runif(17,-0.005,0.005))
[1] 8.224519e-09
>产品(var+runif(17,-0.005,0.005))
[1] 8.664986e-09
种子集(101)

这个问题不可能回答。我们没有报纸,他们可能没有做他们在报纸上说的事,等等。那么你的问题到底是什么?这个问题的答案是什么?我无法找到他们声称的答案。也许他们将真实值四舍五入到两位数。@joran计划在github上发布计算结果,将在此处放置一个链接。@BondedDust这是本文背后的内容,欢迎发表任何评论。@Flick先生,考虑到我12月12日22:29的评论,你能不能暂停这个问题?这个问题无法回答。我们没有报纸,他们可能没有做他们在报纸上说的事,等等。那么你的问题到底是什么?这个问题的答案是什么?我无法找到他们声称的答案。也许他们将真实值四舍五入到两位数。@joran计划在github上发布计算结果,将在此处放置一个链接。@BondedDust这是这篇文章背后的内容,欢迎发表任何评论。@Flick先生,考虑到我12月12日22:29的评论,你能把这个问题暂时搁置吗?@BenBolker:添加得不错。希望我有一个积分转移机制来进行有用的编辑。@BenBolker:不仅很好,而且非常有用,谢谢。@BenBolker:添加得很好。希望我能有一个积分转移机制来进行有用的编辑。@BenBolker:不仅不错,而且非常有用,谢谢。