Python 与 Julia 自相关

标签 python julia

我正在尝试使用 Julia 进行自相关并将其与 Python 的结果进行比较。他们为什么给出不同的结果?

Julia 代码

using StatsBase

t = range(0, stop=10, length=10)
test_data = sin.(exp.(t.^2))

acf = StatsBase.autocor(test_data)


10-element Array{Float64,1}:
  1.0                   
  0.13254954979179642   
 -0.2030283419321465    
  0.00029587850872956104
 -0.06629381497277881   
  0.031309038331589614  
 -0.16633393452504994   
 -0.08482388975165675   
  0.0006905628640697538 
 -0.1443650483145533

Python代码
from statsmodels.tsa.stattools import acf
import numpy as np

t = np.linspace(0,10,10)
test_data = np.sin(np.exp(t**2))

acf_result = acf(test_data)


array([ 1.        ,  0.14589844, -0.10412699,  0.07817509, -0.12916543,
       -0.03469143, -0.129255  , -0.15982435, -0.02067688, -0.14633346])

最佳答案

这是因为您的 test_data是不同的:

Python:

array([ 0.84147098, -0.29102733,  0.96323736,  0.75441021, -0.37291918,
        0.85600145,  0.89676529, -0.34006519, -0.75811102, -0.99910501])

Julia :
[0.8414709848078965, -0.2910273263243299, 0.963237364649543, 0.7544102058854344,
 -0.3729191776326039, 0.8560014512776061, 0.9841238290665676, 0.1665709194875013,
 -0.7581110212957692, -0.9991050130774393]

发生这种情况是因为您正在服用 sin庞大的数字。例如,t 中的最后一个数字10 岁,exp(10^2)是〜2.7 * 10 ^ 43。在这种规模下,浮点不准确度约为 3*10^9。因此,即使 Python 和 Julia 的最低有效位也不同,sin值(value)将遥遥无期。

事实上,我们可以检查初始数组 t 的底层二进制值。 .例如,它们在倒数第三个值上有所不同:

Julia :
julia> reinterpret(Int, range(0, stop=10, length=10)[end-2])
4620443017702830535

Python:
>>> import struct
>>> s = struct.pack('>d', np.linspace(0,10,10)[-3])
>>> struct.unpack('>q', s)[0]
4620443017702830536

我们确实可以看到他们完全不同意一台机器 epsilon。如果我们使用 Julia 取 sin Python获取的值:
julia> sin(exp(reinterpret(Float64, 4620443017702830536)^2))
-0.3400651855865199

我们得到与 Python 相同的值。

关于Python 与 Julia 自相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60378705/

相关文章:

python - 在 Julia 中加速 kNN 函数

python - 使用正则表达式搜索 tkinter 文本小部件内容

python - Python 二维直方图

julia - 如何区分 Julia codeinfo 插槽中的参数和局部变量?

julia - Julia 中的逐元素复合赋值运算符

constructor - 如果函数使用 convert (Julia),它是构造函数吗?

julia - Julia 中的子模块内部依赖

python - 在python中向字符串添加空字符

python - 将数据框中的范围拆分(分解)为多行

python - 如何在非常大的数据集上训练 Word2vec?