You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 21:50:55