我正在尝试创建注意力网络任务的python版本。将此作为参考(第3页):http://www.researchgate.net/publication/7834908_The_Activation_of_Attentional_Networks

我总共进行了216次试验。其中一半将是“全等的”,一半是“不一致的”。此外,216中的三分之一将是“ nocue”,另外三分之一将是“中心”,最后三分之一将是“空间”

216个试验中的每个试验都将是上述几种试验的组合(例如,全空间,无全非)

这就是我现在创建这些试验的方式:

import pandas as pd
import numpy as np
import random

#set number of trials
numTrials = 216
numCongruent = numTrials / 2
numCue = numTrials / 3

#create shuffled congruency conditions
congruent = ["congruent"] * numCongruent
incongruent = ["incongruent"] * numCongruent
congruentConditions = congruent + incongruent
random.shuffle(congruentConditions)

#create shuffled cue conditions
noCue = ["none"] * numCue
centerCue = ["center"] * numCue
spatialCue = ["spatial"] * numCue
cueConditions = noCue + centerCue + spatialCue
random.shuffle(cueConditions)

#put everything into a dataframe
df = pd.DataFrame()

congruentArray = np.asarray(congruentConditions)
cueArray = np.asarray(cueConditions)
df["congruent"] = congruentArray
df["cue"] = cueArray
print df


2个问题...


现在,这可行,但重要的一点是确保水平的均匀分配。


例如,我需要确保所有“一致”试验都具有相等数量的“ nocue”,“中心”和“空间”试验。相反,例如,所有“ nocue”试验都需要一半相等数量的“全等”和“不一致”试验。

考虑到我随机修改条件的方式,目前还不能保证。即使在无限大的样本量上也是如此,但这不是事实。

我将如何确保平均分配?

我看过笛卡尔乘积(https://docs.python.org/2/library/itertools.html#itertools.product),但我并不完全可以帮助我解决平等问题


解决上述问题后,我需要确保在最终的混洗列表中,每种试验类型(例如,全等空间)在列表顺序中均以相同的次数跟随其他试验类型

最佳答案

一个简单的选择是生成216个试验的列表并对其进行洗牌:

In [16]: opt1 = ["congruent", "incongruent"]

In [17]: opt2 = ["nocue", "center", "spatial"]

In [18]: from itertools import product

In [19]: trials = list(product(opt1, opt2))*36

In [20]: np.random.shuffle(trials)


试验将是一个随机排列的列表,每对有36个。

编辑:您的编辑是一个更困难的问题,说实话,我需要更多地考虑它,以找出是否存在解决方案或证明您无法拥有所需的属性。

如果“足够接近”甚至无法工作,我能想到的最好的办法是使用bogosort方法:对列表进行混洗,检查所有a-> b计数是否在4-8之间,如果不是,则重新开始。通常在我的机器上运行1-5秒:

def checkvals(v):
    return all(x in (4,5,6,7,8) for x in v[1].value_counts().values)

def checkall(trials):
    return all(checkvals(v) for k, v in pd.DataFrame(zip(trials, trials[1:])).groupby(0))

while not checkall(trials):
    np.random.shuffle(trials)

10-07 23:42