假设我有三个随机变量,我想做一个卷积来得到平均值,我该如何在Python和/或R中做呢?
编辑1
另外,默认的行为似乎是卷积的大小大于任何输入,我假设所有的输入都是相同的大小,是否有可能使卷积的结果与作为卷积输入的向量大小相同?
例如,如果x1
为n=100
,则我希望得到的卷积为n=100
编辑2 -添加示例
我认为卷积应该接近于我可以用解析法计算出来的。
import numpy as np
rng = np.random.default_rng(42)
n, u1, u2, u3, sd = 100, 10, 20, 6, 5
u_avg = np.mean([u1,u2,u3])
a = rng.normal(u1, sd, size=n)
b = rng.normal(u2, sd, size=n)
c = rng.normal(u3, sd, size=n)
z = rng.normal(u_avg, sd/np.sqrt(3), size=n)
convolution = rng.choice(reduce(np.convolve, [a, b, c]), size=n)
print("true distribution")
print(np.round(np.quantile(z, [0.01, 0.25, 0.5, 0.75, 0.99]), 2))
print("convolution")
print(np.round(np.quantile(convolution, [0.01, 0.25, 0.5, 0.75, 0.99]),2))
如果卷积有效,则convolution
应接近true
分布。
true distribution
[ 3.9 9.84 12.83 14.89 18.45]
convolution
[5.73630000e+03 5.47855750e+05 2.15576037e+06 6.67763665e+06
8.43843281e+06]
看起来卷积还不够紧密。
2条答案
按热度按时间wj8zmpe11#
更新
我认为您误用了"卷积"来计算独立正态分布随机变量总和的PDF。需要注意的是,卷积应用于PDF,而不是随机变量。
下面是一个示例代码,可以帮助您找到您想要的结果。给定初始随机变量
u1
,u2
,u3
,如下所示如果要对随机变量
x1
、x2
和x3
进行操作,则应使用以下操作构造目标随机变量x
:你会发现
而"期望的"统计量
上一个关于"卷积"的答案
您可以尝试使用软件包
pracma
中的conv
hts6caw32#
在Python中:
在R中: