如何通过 histogram2d 计算 2D 经验 CDF

问题描述 投票:0回答:1

我正在尝试在给定两个相同大小的数据样本的情况下获得经验二维 CDF 的矩阵表示。

我有两个相同大小的排序数据样本:

sorted_sample1 
sorted_sample2
。我想要一个代表其二维经验累积分布函数的矩阵。目前我有

hist_values, x_edges, y_edges = np.histogram2d(sorted_sample1, sorted_sample2,density = True, bins=[num_bins_x, num_bins_y], range=bin_range)

这给了我一个二维经验 PDF。如果这是一维的,那么我会将

np.sumsum
应用于我的经验 pdf,然后标准化以获得 CDF。但是,我不确定如何处理 2D 情况。我想出的两个选择是:

  1. np.cumsum
    沿一个轴,然后沿另一轴。但这感觉不对,我想知道轴的顺序是否重要:
    cumsum_x = np.cumsum(hist_values1, axis=0)
    后跟
    cumsum1_xy = np.cumsum(cumsum1_x, axis=1)
    。然后我就可以正常化了

  2. 解开我的二维矩阵并将 cumsum 应用于其中,然后重塑它:

    `cumsum = np.cumsum(hist_values.ravel()).reshape(hist_values1.shape) 
    。然后我就可以正常化了

    这些选项是否正确?如果不正确是什么?谢谢

python numpy statistics probability sample
1个回答
0
投票

好的,这是简单的说明。具有一定相关性的二维高斯。运行代码两次,一次不排序,一次排序。你可以看到排序破坏了你的依赖

import numpy as np
from matplotlib import pyplot as plt

mean = [0, 0]
cov = [[1, 1.2], [1.2, 3]]  # diagonal covariance

x, y = np.random.multivariate_normal(mean, cov, 1000).T

#x = np.sort(x)

plt.plot(x, y, '.')
plt.axis('equal')
plt.show()
© www.soinside.com 2019 - 2024. All rights reserved.