Python与Julia自相关系数计算结果不一致,求Julia对应等效函数
Julia与Python自相关系数结果对齐的方法
差异原因
- Python中
pd.Series(x).autocorr()和np.corrcoef(x[:-1], x[1:])[0,1]的核心逻辑是:截取原数组滞后1阶的两个子数组,直接计算它们的皮尔逊相关系数,且协方差计算采用有偏估计(除以样本量n)。 - Julia的
StatsBase.autocor(x)[2]默认使用自相关的有偏协方差公式,但计算逻辑与Python的子数组皮尔逊相关不同,因此结果不一致。
对齐方法
在Julia中无需依赖专门的自相关内置函数,手动实现与Python一致的逻辑即可:
- 截取原数组的前n-1个元素和后n-1个元素(n为数组长度)
- 计算两个子数组的皮尔逊相关系数
示例代码(依赖StatsBase)
using StatsBase x = [0.25, 0.5, 0.2, -0.05] x0 = x[1:end-1] x1 = x[2:end] result = cor(x0, x1) # 输出结果:0.1035526330902407,与Python完全一致
手动实现(无依赖)
x = [0.25, 0.5, 0.2, -0.05] x0 = x[1:end-1] x1 = x[2:end] # 计算均值 mean0 = sum(x0)/length(x0) mean1 = sum(x1)/length(x1) # 有偏协方差与标准差 cov_val = sum((x0 .- mean0) .* (x1 .- mean1)) / length(x0) std0 = sqrt(sum((x0 .- mean0).^2) / length(x0)) std1 = sqrt(sum((x1 .- mean1).^2) / length(x0)) result = cov_val / (std0 * std1) # 输出结果:0.1035526330902407
内容的提问来源于stack exchange,提问作者Spring
相关产品推荐
相关产品推荐

