【发布时间】:2022-01-21 04:37:48
【问题描述】:
我正在尝试在 Python 中做两件事:
- 从泊松分布中模拟 100 次随机抽取。我是这样做的:
sample100 = poisson.rvs(mu=5,size=100)
- 获取上述样本,并将我生成的 UMP 检验应用于每个单独的观察结果(例如,针对每个单独的观察结果检验假设)。如果观察值 8 则拒绝
我不知道如何做第二部分。我做的功能代码是:
def optionaltest(y,k,g):
if (y > k):
return 1
if (y == k):
if rand(uniform(0,1)) >= 0.4885: return 1
else: return 0
if (y < k):
return 0
但是有两个问题 - 显然 if (y==k) 是无效的语法。其次,即使我删除了该部分,我实际上也无法将该函数应用于 sample100,因为它是一个数组。
如何修改它以使其正常工作?显然,我对 Python 很陌生,但我已经在互联网上搜索了好几个小时。也许我应该更改生成示例数据的方式,以便可以对其应用函数?也许有一种方法可以将函数应用于数组的每个元素?当输出 = k(在这种情况下我将设置为 8)时,如何使测试逻辑工作?
编辑/更新: 以下是我最终的做法:
def optionaltest(y):
if (y > 8):
return 1
if (y == 8):
if np.random.uniform(0,1) >= 0.4885: return 1
else: return 0
if (y < 8):
return 0
我能够通过以下方式将该测试应用于我的数组数据:
results_sample100 = list(map(optimaltest, sample100))
cl.Counter(results_sample100)
【问题讨论】:
-
您能否更新您的问题以包含“无效语法”错误或堆栈跟踪?至于第二部分,您需要对这些结果做什么?您可以创建一个空的
results = []列表并循环遍历您的数据以将函数应用于每个项目并将其返回值附加到您的results列表中吗?您可以使用for循环、map函数或列表推导。我更喜欢最后一个,因为它比map更清晰 -
您可以将数组转换为列表并使用
map