gpt4 book ai didi

python - 从 numpy.random 中组合两个样本不会以随机序列结束

转载 作者:太空宇宙 更新时间:2023-11-03 13:32:59 25 4
gpt4 key购买 nike

我实现了 Wald-Wolfowitz runs test但是在测试过程中我遇到了奇怪的行为,我采取的步骤如下:

  1. 我从同一个分布中抽取两个样本:

    import numpy as np
    list_dist_A = np.random.chisquare(2, 1000)
    list_dist_B = np.random.chisquare(2, 1000)
  2. 我连接两个列表并对其进行排序,同时记住哪个数字来自哪个样本。以下函数执行此操作并返回标签列表 ["A","B","A","A", ... "B"]

    def _get_runs_list(list1, list2):
    # Add labels
    l1 = list(map(lambda x: (x, "A"), list1))
    l2 = list(map(lambda x: (x, "B"), list2))
    # Concatenate
    lst = l1 + l2
    # Sort
    sorted_list = sorted(lst, key=lambda x: x[0])
    # Return only the labels:
    return [l[1] for l in sorted_list]
  3. 现在我想计算运行次数(相同标签的连续序列)。例如:

    • a,b,a,b 有 4 次运行
    • a,a,a,b,b 有 2 次运行
    • a,b,b,b,a,a 有 3 次运行

    为此,我使用以下代码:

    def _calculate_nruns(labels):
    nruns = 0
    last_seen = None

    for label in labels:
    if label != last_seen:
    nruns += 1
    last_seen = label

    return nruns

因为所有元素都是随机抽取的,所以我认为我应该大致以一个序列结束 a,b,a,b,a,b... 所以这意味着运行次数大约是2000。然而可以看出in this snippet on "repl.it"事实并非如此,它总是大约在 1000 左右。

谁能解释一下为什么会这样?

最佳答案

~1000 是预期结果。 Following the Wikipedia article在此统计测试中,您有 Np = Nn = 1000N = Np + Nn = 2000。这意味着运行次数的预期值为 mu = 2 * Np * Nn/N + 1,即 1001。

关于python - 从 numpy.random 中组合两个样本不会以随机序列结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43645350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com