在jsPsych中实现primeWord与targetWord同步抽样及试次索引存储求助
jsPsych 双变量随机抽样与统一试次索引解决方案
核心思路
不要分别对primeWord和targetWord单独抽样,而是将两者配对成完整的试次单元后再整体随机,同时给每个单元分配统一的试次索引,从根源上解决配对错位和索引不一致的问题。
具体实现代码
1. 构造配对试次数组(基础配对场景)
如果你的primeWord和targetWord是一一对应的(比如第i个prime对应第i个target),可以直接循环生成配对试次并添加索引:
// 原始变量列表 const primeWords = ["苹果", "香蕉", "橙子", "葡萄"]; const targetWords = ["水果", "水果", "水果", "水果"]; // 生成带统一索引的配对试次数组 let trialList = []; for (let i = 0; i < primeWords.length; i++) { trialList.push({ prime: primeWords[i], target: targetWords[i], trial_index: i // 统一的试次索引,后续直接复用 }); } // 对试次数组进行无放回随机打乱 trialList = jsPsych.randomization.shuffle(trialList);
2. 构造全组合试次数组(完全独立抽样场景)
如果需要primeWord和targetWord的所有可能组合(完全独立抽样),用jsPsych.randomization.factorial生成全组合后添加索引:
const primeWords = ["苹果", "香蕉"]; const targetWords = ["水果", "食物"]; // 生成所有prime-target组合,同时随机打乱顺序 const trialList = jsPsych.randomization.factorial( { prime: primeWords, target: targetWords }, { randomize_order: true, repetitions: 1 } ); // 给每个组合添加统一试次索引 trialList.forEach((trial, idx) => { trial.trial_index = idx; });
3. 用循环节点渲染试次并保存数据
无论哪种场景,都用timeline_variables遍历随机后的试次数组,在试次中引用变量并保存统一索引:
// 单个试次的结构 const primeTargetTrial = { type: jsPsychHtmlButtonResponse, stimulus: () => { const currentTrial = jsPsych.currentTimelineNode().trialData; return `<div> <p style="font-size:24px;">Prime: ${currentTrial.prime}</p> <p style="font-size:24px; margin-top:20px;">Target: ${currentTrial.target}</p> </div>`; }, choices: ["确认"], data: () => { const currentTrial = jsPsych.currentTimelineNode().trialData; return { prime_word: currentTrial.prime, target_word: currentTrial.target, trial_index: currentTrial.trial_index // 保存统一试次索引 }; } }; // 循环节点,遍历所有随机后的试次 const loopNode = { timeline: [primeTargetTrial], timeline_variables: trialList, randomize_order: false // 已提前打乱,此处无需重复随机 }; // 启动实验 jsPsych.run([loopNode]);
关键说明
- 把
prime和target绑定成一个试次单元,抽样时直接抽整个单元,彻底避免配对错位问题; - 提前给每个单元分配
trial_index,保存数据时直接复用该值,保证prime和target对应同一索引; - 若需要无放回抽样,提前用
jsPsych.randomization.shuffle打乱数组即可,无需额外配置。
内容的提问来源于stack exchange,提问作者Pablo Bernabeu
相关产品推荐
相关产品推荐

