MATLAB中圆形数据双因素ANOVA分析求助:节拍叩击实验同步数据处理
圆形数据双因素被试内ANOVA分析问题
实验背景
开展叩击实验,分析节拍(Meter)和模式(Pattern)对同步表现的影响。采用被试内2×3实验设计(2种节拍×3种模式),共6种实验条件。已获取被试叩击时间戳,与音符 onset 时间对比后,计算得到每试次的相位滞后(phase lag)和锁相值(PLV)。
已完成的数据处理步骤
1. 相位滞后与PLV计算
% Match each tap to the closest note onset closest_note_indices = arrayfun(@(x) find(abs(notetiming - x) == min(abs(notetiming - x)), 1), taptimestamp); closest_notes = notetiming(closest_note_indices); % Calculate phase lag phase_lag = angle(exp(1i * 2 * pi * (taptimestamp - closest_notes) ./ mean(diff(notetiming)))); phase_lags = [phase_lags; mean(phase_lag)]; % Calculate PLV plv = abs(mean(exp(1i * phase_lag))); plv_values = [plv_values; plv];
2. 组水平数据聚合
对每位被试的所有试次数据按「被试ID+节拍+模式」分组平均,得到聚合数据:
% Aggregate data: Average each participant's data for each combination of meter and pattern aggData = varfun(@mean, dataTable, 'GroupingVariables', {'ParticipantID', 'Meter', 'Pattern'}, ... 'InputVariables', {'PhaseLag', 'PLV', 'TapRatio', 'TapError', 'TapAccuracy'});
圆形ANOVA分析困境
需对圆形数据(相位滞后、PLV)进行双因素被试内ANOVA分析,采用Harrison-Kanji检验,但运行后p值始终为NaN。数据无缺失且每组样本量一致,具体情况如下:
1. Harrison-Kanji检验数据准备代码
% Reorganize the data for the two-factor within-subjects ANOVA nParticipants = numel(unique(aggData.ParticipantID)); meters = unique(aggData.Meter); patterns = unique(aggData.Pattern); nMeters = numel(meters); nPatterns = numel(patterns); phaseLagData = NaN(nParticipants, nMeters, nPatterns); plvData = NaN(nParticipants, nMeters, nPatterns); for i = 1:nParticipants for j = 1:nMeters for k = 1:nPatterns idx = aggData.ParticipantID == i & strcmp(aggData.Meter, meters{j}) & strcmp(aggData.Pattern, patterns{k}); if any(idx) phaseLagData(i, j, k) = aggData.circ_mean_PhaseLag(idx); plvData(i, j, k) = aggData.circ_mean_PLV(idx); end end end end % Convert to radians for circular statistics phaseLagData = deg2rad(phaseLagData); plvData = deg2rad(plvData);
2. 检验输出示例
Angles for PhaseLag (in degrees): 0.1872 -0.12609 -0.26187 -0.15538 0.13689 0.426 -0.034659 0.23428 -0.031413 0.23462 Angles for PLV (in degrees): 0.14884 0.062623 0.22645 0.14601 0.12632 0.32505 0.077925 0.13987 0.077551 0.087998 P-value for PhaseLag (Meter: 7/8, Pattern: reverse): NaN P-value for PhaseLag (Meter: NaN, Pattern: NaN): P-value for PLV (Meter: 7/8, Pattern: reverse): NaN P-value for PLV (Meter: NaN, Pattern: NaN): P-values for PhaseLag: {[NaN NaN NaN]} {[NaN NaN NaN]} {[NaN NaN NaN]} {[NaN NaN NaN]} {[NaN NaN NaN]} {[NaN NaN NaN]} P-values for PLV: {[NaN NaN NaN]} {[NaN NaN NaN]} {[NaN NaN NaN]} {[NaN NaN NaN]} {[NaN NaN NaN]} {[NaN NaN NaN]}
当前代码流程为:加载数据→转换为表格→计算径向场→分配组ID→特定条件分析,卡在ANOVA阶段,恳请提供解决建议。
内容的提问来源于stack exchange,提问作者A. Chavez
相关产品推荐
相关产品推荐

