两级抽样

问题描述 投票:0回答:1

我有一堆

Thing
s.

A

Thing
是一个带有字段
source
的结构,类型为字符串。

目前,我通过简单地对 Thing 进行散列来获得

Things
的确定性采样选择。

def is_thing_sampled(t: Thing):
    hashed_thing = my_deterministic_hash(t);
    return hashed_thing % 100 < sample_size_pct;

现在我想扩展这个功能,以便它额外地采样特定来源的事物。如果源是

"foo"
,我想对它做另一个级别的采样。


def is_thing_sampled(t: Thing):
   hashed_thing = my_deterministic_hash(t)
   base = hashed_thing % 100 < sample_size_pct;
   if base and t.source == "foo":
      # try to sample again. How do I do this?? 
      double_hash = my_deterministic_hash(hashed_thing)
      return double_hash % 100 < foo_sample_size_pct

    return base    

有人可以帮助我了解什么是正确的方法吗?我很想得到一些建议——我对统计完全是个菜鸟。

python random sampling
1个回答
0
投票

我们可以使用

while
loop
,这取决于您想要的
additional_samples
的数量:

def is_thing_sampled(t: Thing):
   hashed_thing = my_deterministic_hash(t)
   base = hashed_thing % 100 < sample_size_pct;
   if base and t.source == "foo":
      additional_samples = 1
      samples = 0
      while samples <= additional_samples:
         samples += 1
         double_hash = my_deterministic_hash(hashed_thing)
         base = double_hash % 100 < foo_sample_size_pct
         hased_thing = double_hash

    return base
© www.soinside.com 2019 - 2024. All rights reserved.