如何生成均值为的序列?


11

我知道如何生成均值为的序列。例如,在Matlab中,如果我想生成长度为的序列,则为:0 ± 1 10000±10±110000

2*(rand(1, 10000, 1)<=.5)-1

然而,如何产生一个与平均序列,即,具有稍微优选?0.05 1±10.051个

Answers:


18

您所需的均值由等式给出:

ñp-ñ1个-pñ=.05

从中得出的概率1s应该是.525

在Python中:

x = np.random.choice([-1,1], size=int(1e6), replace = True, p = [.475, .525])

证明:

x.mean()
0.050742000000000002

1 000次实验,1 000 000个1s和-1s样本: 在此处输入图片说明

为了完整起见(@Elvis的技巧提示):

import scipy.stats as st
x = 2*st.binom(1, .525).rvs(1000000) - 1
x.mean()
0.053859999999999998

1 000次实验,1 000 000个1s和-1s样本:

在此处输入图片说明

最后,如@ŁukaszDeryło(同样在Python中)所建议的,从均匀分布中提取:

u = st.uniform(0,1).rvs(1000000)
x = 2*(u<.525) -1
x.mean()
0.049585999999999998

1 000次实验,1 000 000个1s和-1s样本:

在此处输入图片说明

所有这三个看起来几乎相同!

编辑

Central极限定理和结果分布的分布上有几条线。

首先,均值的确遵循正态分布。

其次,@ Elvis在对这个答案的评论中对在1000个实验(大约(0.048; 0.052))中得出的均值的准确范围(95%置信区间)进行了一些很好的计算。

这些是模拟的结果,以确认他的结果:

mn = []
for _ in range(1000):
    mn.append((2*st.binom(1, .525).rvs(1000000) - 1).mean())
np.percentile(mn, [2.5,97.5])
array([ 0.0480773,  0.0518703])

不错的工作。我与Bernoulli的观点是将问题简化为众所周知的概率分布; 从“实施”的角度来看,您的答案和“ ukasz”是完美的。
猫王

别开玩笑了,您的科学才是最好的!;)我考虑了二项式分布半秒钟,但这不足以将其转换为-1和1,所以我“按原样”借用了您的解决方案,谢谢!
谢尔盖·布什曼诺夫

1
因此,用我的符号表示,,的标准偏差为。当您对样本取平均值时,标准偏差为而95%的计算平均值应在,即。数学检查!;)变种ÿ=4变种X=4p1个-p=0.9975ÿ0.9991060.999×10-30.05±1.96×0.999×10-30.048;0.052
Elvis

12

-1个1个ÿ=2X-1个XpËÿ=2ËX-1个=2p-1个pp=0.525

在R中,您可以使用生成Bernoulli变量rbinom(n, size = 1, prob = p),例如

x <- rbinom(100, 1, 0.525)
y <- 2*x-1

5

ñ[01个]

那么你的期望值是

1个0.525+-1个1个-0.525=0.525-0.475=0.05

我不是Matlab用户,但我想应该是

2*(rand(1, 10000, 1)<=.525)-1

3
在这里,这是采用逆变换采样的正确方法。
蒂姆

4

您需要生成比-1多的1。精确地,将1s增加5%,因为您希望平均值为0.05。因此,您将1s的概率提高了2.5%,将-1s的概率降低了2.5%。在您的代码中,等效于更改0.50.525,即从50%更改为52.5%


2

万一您需要精确的0.05,则可以在MATLAB中执行以下R代码的等效操作:

sample(c(rep(-1, 95*50), rep(1, 105*50)))

-1这个答案是错误的!该代码唯一要做的就是它随机排列值的静态向量。输出不是随机的!
蒂姆

2
@Tim为什么不起作用?它以随机顺序返回-1和1的列表,其计数旨在确保准确的平均值为0.05。
ddunn801

1
@Tim此解决方案随机的。您是否尝试过反复运行它?
ub

@whuber这与Amos Coats建议的解决方案相同,唯一的区别是值的排列。这样的样本的统计性质将是确定性的和恒定的。
蒂姆

3
@Tim我想您可能正在阅读未明确提出的对此问题的一些不必要的假设。尽管无序样本本身的频率(因此是所有时刻)将是恒定的,但是生成的序列的各种“统计特性” 将随机变化。由于问题中的示例生成了一个数组,并且数组不是集合(数组中的顺序很重要),因此我认为这种解释是合理的(它阐明了问题)。另一方面,Coats发布的“解决方案”是一个很好的笑话-但是SE不喜欢开玩笑。
ub
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.