SciPy反褶积函数

2024-04-19 11:18:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用SciPy的解卷积函数来寻找给定两个高斯分布的未知分布。There is no documentation与SciPy中的这个函数相关联,所以我只是想看看如何在我的情况下使用这个函数。例如,给定两个正态分布N(100,1),N(300,2),我想了解如何找到反褶积N(200,1)的分布。在

>>> sample1 = np.round(scipy.around(scipy.stats.norm(100, 1).rvs(size=1000)))
>>> sample2 = np.round(scipy.stats.norm(300, 2).rvs(size=2000))
>>> signal.deconvolve(sample1, sample2)

上面的代码给了我负值,这似乎是错误的。如何从反褶积中恢复N(200,1)分布呢?特别是,我想我的问题是我不知道如何得到除数。在

从200个样本中,我想知道如何从这些样本中恢复


Tags: 函数normsizestatsnpscipy卷积反褶积
1条回答
网友
1楼 · 发布于 2024-04-19 11:18:13

我觉得你对自己的期望有点困惑。。。因为我们都知道两个正态分布的卷积是另一个正态分布,平均值是平均值之和,方差是方差之和,所以您似乎期望两个正态随机样本的卷积也将是正态随机样本。但事实并非如此:

a = scipy.stats.norm(100, 1).rvs(size=1000)
b = scipy.stats.norm(200, 1).rvs(size=1000)
c = scipy.convolve(a, b)
plt.subplot(311)
plt.hist(a, bins=50)
plt.subplot(312)
plt.hist(a, bins=50)
plt.subplot(313)
plt.hist(a, bins=50)

enter image description here

你可能在想一些事情:

^{pr2}$

enter image description here

无论如何,回到deconvolve。。。如果使用长度为mn的两个数组调用它,它将返回一个包含两个数组的元组:

  • 长度的第一个m - n + 1是解卷积数组,也就是说,你应该用第二个数组卷积来得到第一个
  • 长度的第二个m是用第二个数组与第一个返回的数组的卷积来替换第一个数组的错误。在

相关问题 更多 >