这是两个PDF的卷积吗?

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

这是我在网站上的第一个问题!我想获取两个(或多个)随机变量的总和,所以我这样做了

from scipy.stats import exponweib
import numpy as np
import matplotlib.pyplot as plt

# Parameters
shape, scale, delta = 1.3, 12, 1e-2

dist = exponweib(a=1, loc=0, c=shape, scale=scale)
grid = np.arange(0, 100, delta)
pmfs = dist.pdf(grid)*delta

# Do convolution (?)
def conv(a, b):
    x = np.array([0])
    for i in range(1, len(grid)):
        x = np.append(x, sum(a[:i]*b[i-1::-1]))
    return x

# Loop to convolve over multiple RVs
c = {1: pmfs}
for i in range(2, 4):
    c[i] = conv(c[i-1], pmfs)

plt.plot(grid, c[1])
plt.plot(grid, c[2])
plt.plot(grid, c[3]);

所以,这让我this,看起来像我想要的,但是运行起来非常慢。

建议使用scipy.signal.fftconvolve的其他问题

x = fftconvolve(pmfs, pmfs, 'same')
plt.plot(grid, x);

但是它让我this。为什么不同?

python statistics distribution
1个回答
0
投票
运行下面的代码后

import numpy as np from scipy import signal from scipy.stats import exponweib import matplotlib.pyplot as plt shape, scale, delta = 1.3, 12.0, 1.0e-1 dist = exponweib(a=1, loc=0, c=shape, scale=scale) grid = np.arange(-50, 100, delta) ewei = dist.pdf(grid)*delta plt.plot(grid, ewei) plt.show() # %% t = signal.fftconvolve(ewei, ewei, 'same') plt.plot(grid, t) plt.show()

我对卷积分布有很好的了解

enter image description here
© www.soinside.com 2019 - 2024. All rights reserved.