我正在尝试创建一个stroop测试。 stroop测试是一种认知测试,其中一个单词被赋予单词是一种颜色,但单词的墨水每次都会改变。例如,我们可以用墨水红色表示BLEU,在这种情况下它是非一致的,因为单词BLEU(蓝色)与墨水不同。
参与者需要说出墨水的颜色,而不是单词。因此,如果写的单词与墨水不同,则更难回答。
每当有新参与者进来时,我想要一个新的单词/墨水序列。
所以,我创建了这段代码:
import pandas as pd
import numpy as np
import random
word = ['bleu', 'rouge', 'vert', 'jaune']
ink = ['blue', 'red', 'green', 'yellow']
my_list_word = [random.choice(word) for _ in range(60)]
df = pd.DataFrame(my_list_word, columns=["word"])
my_list_ink = [random.choice(ink) for _ in range(60)]
df['ink'] = my_list_ink
df['response'] = df['ink']
df['response'] = df['response'].replace(['red'], 'rouge.jpg')
df['response'] = df['response'].replace(['yellow'], 'jaune.jpg')
df['response'] = df['response'].replace(['blue'], 'bleu.jpg')
df['response'] = df['response'].replace(['green'], 'vert.jpg')
di = dict(zip(word, ink))
df['congruent'] = (df['word'].map(di) == df['ink']).astype(int)
print df.head(5)
df(头):
word ink response congruent
0 vert blue bleu.jpg 0
1 bleu blue bleu.jpg 1
2 rouge blue bleu.jpg 0
3 jaune red rouge.jpg 0
4 vert yellow jaune.jpg 0
我的问题:我需要有50%的时间是一致的问题。你有关于如何做到这一点的想法吗?我不明白如何为条件链接两列。也许,我可以翻译法语单词,所以它会是同一个单词,更容易比较。最后,我将它翻译为我的实验?
谢谢你的帮助!
这是一个示例,显示了使用random.choices
(python 3.6)的可能方法;它使用ANSI colors来说明输出;它在macintosh和linux上工作,但你可能需要一个库(colorama?)在Windows上。
import random
def get_color(color):
"""return a congruent color 50% of the time, a random color
taken from the rest of the colors otherwise
"""
colors_set = set(colors)
colors_set.remove(color)
bag = [color]
probabilities = [0.5]
for c in colors_set:
bag.append(c)
probabilities.append(0.5 / 3)
return colors[random.choices(bag, probabilities)[0]]
colors = {'blue': '\x1b[1;34m', 'red': '\x1b[1;31m', 'yellow': '\x1b[1;33m', 'green': '\x1b[1;32m'}
words = {'bleu': 'blue', 'rouge': 'red', 'jaune': 'yellow', 'vert': 'green'}
reset = '\x1b[0m'
for word in words:
print(get_color(words[word]) + word + reset)
您可以使用一组要显示的图像替换上面使用的ANSI机制来说明。