我无法适应X
一个共同的发行版,所以目前我只有X ~ ecdf(sample_data)
.
如何计算sum(X1 + ... + Xn)
, 给定的经验分布n
?X1 到 Xn 是独立同分布的。
我无法适应X
一个共同的发行版,所以目前我只有X ~ ecdf(sample_data)
.
如何计算sum(X1 + ... + Xn)
, 给定的经验分布n
?X1 到 Xn 是独立同分布的。
n
要估计该总和的分布,您可以使用替换重复抽样(然后取总和)sample_data
。(就像 ecdf 一样,sample()
在 的每个元素上放置相等的概率质量sample_data
,因此您不需要将计算ecdf(sample_data)
作为中间步骤。)
# Create some example data
sample_data <- runif(100)
n <- 10
X <- replicate(1000, sum(sample(sample_data, size=n, replace=TRUE)))
# Plot the estimated distribution of the sum of n variates.
hist(X, breaks=40, col="grey", main=expression(sum(x[i], i==1, n)))
box(bty="l")
# Plot the ecdf of the sum
plot(ecdf(X))
首先,概括和简化:求解阶跃函数 CDF X 和 Y,独立但不同分布。对于每一步跳转 x i和每一步跳转 y i ,在 X + Y 的 CDF 中都会在 x i +y i处有对应的一步跳转,所以 X + Y 的 CDF 将由列表表征:
sorted(x + y for x in X for y in Y)
这意味着如果 X 的 CDF 中有 k 个点,则(X 1 + ... + X n ) 中将有 k n个。我们可以通过再次丢弃除 k 之外的所有内容,在最后将其减少到一个可管理的数字,但显然中间计算在时间和空间上将是昂贵的。
另外,请注意,即使原始 CDF 是 X 的 ECDF,结果也不会是 (X 1 + ... + X n ) 的 ECDF,即使您保留所有 k n个点。
总之,使用 Josh 的解决方案。