我无法在Psychopy研究中随机分组吗?我该怎么办?

问题描述

:slight_smile:

您要达到什么目标?:

我目前正在做一个反应时间和准确性任务,涉及比较视觉呈现的数字信息和听觉数字信息。视觉呈现的数字信息将以三种形式呈现-阿拉伯数字(例如5),数字词(例如5)和非符号幅度(5个点的图片)。视觉数字信息和听觉数字信息都将顺序显示。提出第二种刺激后,如果这两种刺激传达的信息相同或不相同,参与者应做出回应。如果数字信息相同,则应按“ a”,如果不同则按“ l”。

除了改变我要呈现的视觉数字刺激的格式外,我还打算改变两种刺激之间的刺激发作异步(SOA)/时间间隔。我有7个级别的时间间隔/ SOA(加上负750、250和500,以及0ms),因此我以这种方式创建了实验(请参见附图)。

image
image
1908×117 6.78 KB

一组fixation_cross和VA_750ms(例如)构成一个块。因此,这里总共有7个块(尽管仅显示了4个)。我已经在每个区块中随机分配了试验。对我而言,下一步是随机化这些块的表示,一个块表示SOA /时间间隔的一个级别(例如+ 750ms)。为此,我在所有块周围放置了一个循环,该循环在图片标题为“ blocknames”。尽管实验仍然可以正常进行,但仍然没有发生随机化。

我了解到有一篇文章讨论了区块的随机化问题,但是我觉得它只针对只有一个例行程序的实验。考虑到我必须在试验中更改两个数字刺激之间的时间间隔,因此这对我的情况而言不太可行。

您试图使它起作用吗?: 不过,我尝试使用每种条件下excel文件名称来创建excel文件-在所有例程中,excel文件实际上包含相同的信息,但是根据条件名称的不同,它们的命名不同(例如AV500ms,VA750ms)。在这种情况下,实验仍然有效,但是块仍未随机化。

尝试此操作时到底出了什么问题?: 使用相同的excel文件,我还尝试将条件标记为$ condsFile而不是使用确切的文档位置,但这就是我得到的。

enter image description here

与此同时,我想知道是否可以将我的SOA /时间间隔级别合并到Excel中-在Builder中如何进行?

这可能是我的Psychopy软件和笔记本电脑上的一些有用的背景信息。 作业系统(例如Win10):Win 10 PsychoPy版本(例如1.84.x):2020.1.3 标准单机版? (y / n)是的,

很抱歉,这可能已经发布了几次。但是,我尝试根据实验要求应用这些解决方案,但无济于事。我也是Psychopy的新用户,也不太确定如何从此处开始。真的很感谢对此的任何建议!

解决方法

这本身并不是真正的编程问题,因为可以使用PsychoPy的图形化Builder界面完全解决它。将来,您可能应该在https://discourse.psychopy.org的专用支持论坛而不是在Stack Overflow上解决此类问题。

从本质上讲,您的实验应具有更简单的结构。将您的两个试用例程嵌入trials循环中。在该循环之后,插入中断例程。最后,将整个批次嵌入外部blocks循环中。也就是说,您的实验将仅显示三个例程和两个循环,而不是您当前拥有的很长的结构。嵌套循环意味着这两个试用例程将在非常试用的状态下运行,而break例程每个块仅运行一次。

控制块顺序的关键方面是外部blocks循环。将其连接到如下所示的条件文件:

condition_file
block_1.csv
block_2.csv
block_3.csv
block_4.csv
block_5.csv
block_6.csv
block_7.csv

并将循环设置为“随机”。

在内部trials循环中,将变量名$condition_file放入条件文件字段中。因此,您现在将在各个主题之间随机分配块的顺序。

您需要学习的另一个关键方面是使用每个条件文件中包含的变量来控制更多任务。例如您当前正在为每个ISI值(例如AV500msAV750ms)创建一个单独的例程。相反,您应该只有一个例程,比如说AV。通过该条件文件中的变量来控制该例程中刺激组件的计时。

编程的一个关键原则是DRY:不要重复自己(尽管您不是直接编程,但PsychoPy Builder会在后台为您生成一个Python程序)。创建多个仅在一个方面有所不同的例程可指示未对事物进行最佳指定。通过仅使用一个例程,如果您需要以某种方式进行更改,则只需执行一次,而不必重复执行7次。后一种方法非常脆弱且难以维护,并且很容易导致错误。

这里有控制试验区的资源: https://www.psychopy.org/builder/blocksCounterbalance.html