令是独立随机变量,其值分别为或,概率分别为0.5。考虑和。我希望将概率上限。我现在的最佳界限是,其中c是一个通用常数。这是通过应用简单的Chernoff 边界对概率Pr(| x_1 + \ dots + x_n | <\ sqrt {t})和Pr(| y_1 + \ dots y_n | <\ sqrt {t})进行下限来实现的。我能希望得到比这个界限更好的东西吗?首先,我至少可以得到。如果我可以得到次高斯的尾巴,那可能是最好的,但是我们可以期望吗(我不这样认为,但也不能想到一个论点)?
令是独立随机变量,其值分别为或,概率分别为0.5。考虑和。我希望将概率上限。我现在的最佳界限是,其中c是一个通用常数。这是通过应用简单的Chernoff 边界对概率Pr(| x_1 + \ dots + x_n | <\ sqrt {t})和Pr(| y_1 + \ dots y_n | <\ sqrt {t})进行下限来实现的。我能希望得到比这个界限更好的东西吗?首先,我至少可以得到。如果我可以得到次高斯的尾巴,那可能是最好的,但是我们可以期望吗(我不这样认为,但也不能想到一个论点)?
Answers:
代数关系
将为两个独立和的乘积。因为和是独立的伯努利变量,所以是一个二项式变量,已翻倍并转移了。因此,其均值为,方差为。同样,的平均值为,方差为。让我们现在通过定义它们来标准化它们
何处
到高(和量化)的准确度,作为变大接近标准正态分布。 因此,让我们将近似为乘以两个标准法线的乘积。
下一步是注意
是独立标准正态变量和的平方差的倍数。的分布可以通过解析(通过反转特征函数)来计算:其pdf与零阶贝塞尔函数成正比。因为此函数具有指数尾巴,所以我们立即得出结论,对于大和且固定,对逼近没有比问题中给出的更好。
当和一个(至少)不大时,或者在尾部的点接近时,仍有一些改进的余地。对分布的直接计算显示,在比大得多的点处(大约超过,尾部概率呈曲线逐渐变细的趋势。的CDF的这些数线性曲线为各种值(在标题给出)和(大致范围在相同的值作为,在每个小区颜色区分)显示发生了什么事情。供参考,极限的图形分布以黑色显示。(由于对称于左右,,因此足以查看负尾。)
随着变大,CDF越来越靠近参考线。
表征和量化该曲率将需要对二项式变量的正态近似进行更精细的分析。
在这些放大的部分(每个图的右上角),贝塞尔函数逼近的质量变得更清晰。我们已经很遥远了。尽管对数垂直标度可以隐藏很大的差异,但很明显,当达到,近似值对是好的。。
执行以下操作将花费几秒钟。(它为和 36个组合计算几百万个概率。)在速度较慢的计算机上,忽略较大的一个或两个值,并将绘制范围的下限从增加到大约。a
b
s <- function(a, b) {
# Returns the distribution of S as a vector indexed by its support.
products <- factor(as.vector(outer(seq(-a, a, by=2), seq(-b, b, by=2))))
probs <- as.vector(outer(dbinom(0:a, a, 1/2), dbinom(0:b, b, 1/2)))
tapply(probs, products, sum)
}
par(mfrow=c(2,3))
b.vec <- c(51, 101, 149, 201, 299, 501)
cols <- terrain.colors(length(b.vec)+1)
for (a in c(50, 100, 150, 200, 300, 500)) {
plot(c(-sqrt(a*max(b.vec)),0), c(10^(-300), 1), type="n", log="y",
xlab="S/sqrt(ab)", ylab="CDF", main=paste(a))
curve(besselK(abs(x), 0)/pi, lwd=2, add=TRUE)
for (j in 1:length(b.vec)) {
b <- b.vec[j]
x <- s(a,b)
n <- as.numeric(names(x))
k <- n <= 0
y <- cumsum(x[k])
lines(n[k]/sqrt(a*b), y, col=cols[j], lwd=2)
}
}
1/2 (1 + y BesselK[0,-y] StruveL[-1, y] - y BesselK[1,-y] StruveL[0, y])
。有趣的是,如何看待:(a)OP的边界执行,以及(b)您的正态逼近执行,对于上面我们所看的情况,即使用精确的pmf离散解导出的。
评论:我编辑标题是为了更好地反映问题中考虑的rv类型。任何人都可以重新编辑。
动机:我想,如果我们可以得出的分布,则无需确定上限。(更新:我们无法看到Whuber的评论和答案)。
表示。容易验证与和具有相同的分布。力矩生成函数是
此外,首先是成对独立的:变量(索引当然可以是任意值),具有对应概率支持。它的力矩生成功能是
我将尝试怀疑完全独立性的存在,如下所示(对明智的人来说很明显吗?):对于这一部分,请表示。然后根据链式规则
通过成对独立,我们有。
考虑
。和是在上独立的条件,因此我们有
通过成对独立的第二等式。但这意味着
等等(我认为)。(更新:我认为是错误的。独立可能对任何三胞胎都成立,但对整个一堆来说不成立。因此接下来的只是简单的随机游动分布的推导,而不是对这个问题的正确答案-参见Wolfies和Whuber的答案)。
如果确实具有完全独立性,则我们的任务是推导iid二分法rv
它看起来像一个简单的随机游走,尽管没有将后者清晰地解释为一个序列。
如果的支持将是包括零),而如果则的支持将是,没有零。
我们处理的情况。
将表示为的值。然后可以写对的支持。对于任何给定的,我们获得的唯一值。此外,由于对称概率和独立性(或仅仅是可交换性?),变量所有可能的联合实现都是等价的。因此,我们统计,我们发现的概率密度函数是,
通过构造定义和奇数,以及的典型支持元素,我们有
移至,因为如果,则的分布在零附近对称,而没有将概率质量分配为零,因此的分布 通过围绕垂直轴“折叠”密度图而获得,基本上将正值的概率加倍,
那么分布函数是
因此,对于任何实, ,我们获得所需概率
请注意,指示保证总和仅会达到支持中包含的值-例如,如果我们设置,仍然会运行到,因为它被限制为奇数,除了是整数之外。
不是答案,而是对Alecos有趣的答案的评论,该评论太长了,无法放入评论框中。
令为Rademacher随机变量,而为Rademacher随机变量。Alecos指出:
“…… 看起来像一个简单的随机游动。”如果它像一个简单的随机游动,那么的分布将是对称的“钟形单峰”,大约为0。
为了说明这不是简单的随机游走,下面是蒙特卡洛的快速比较:
显然,不是简单的随机游动。还请注意,S并非分布在所有偶数(或奇数)整数上。
蒙特卡洛
在给定和,这是用于生成总和的单个迭代的代码(在Mathematica中):
SumAB[a_, b_] := Outer[Times, RandomChoice[{-1, 1}, a], RandomChoice[{-1, 1}, b]]
// Flatten // Total
然后,可以使用以下命令生成500,000条这样的路径,例如当和时:
data57 = Table[SumAB[5, 7], {500000}];
对和组合的支持范围是:
{-35, -25, -21, -15, -9, -7, -5, -3, -1, 1, 3, 5, 7, 9, 15, 21, 25, 35}
a
和b
都小于1000)。rademacher[a_] := Transpose[{Range[-a, a, 2], Array[Binomial[a, #] &, a + 1, 0] /2^a}]; s[a_, b_] := {#[[1, 1]], Total[#[[;; , 2]]]} & /@ GatherBy[Flatten[Outer[Times, rademacher[a], rademacher[b], 1], 1], First]; ListLogPlot[s[5, 7]]
s[100,211]
WHuberSumAB[a_, b_] := Total[RandomChoice[{-1, 1}, a]] * Total[RandomChoice[{-1, 1}, b]]
...它的速度是Outer
方法的两倍。对正在使用什么代码感到好奇?[当然可以使用ParallelTable
等使这两种方法都更快,等等]
sum[n_, a_, b_] := Block[{w, p}, w[x_] := Array[Binomial[x, #] &, x + 1, 0] /2^x; p[x_] := RandomChoice[w[x] -> Range[-x, x, 2], n]; p[a] p[b]]
。然后时间Tally[sum[500000, 5, 7]]
。对于R
aficianodos,下面做同样的事情,只需要50%长于数学:s <- function(n, a, b) (2 * rbinom(n, a, 1/2) - a)*(2 * rbinom(n, b, 1/2) - b); system.time(x <- table(s(5*10^5, 5, 7))); plot(log(x), col="#00000020")
。