【问题标题】:MATLAB ttest2 command gives different values when used on same data in a 2D and 3D matrix?MATLAB ttest2 命令在用于 2D 和 3D 矩阵中的相同数据时给出不同的值?
【发布时间】:2026-01-12 04:00:01
【问题描述】:

我正在使用 MATLAB 对一些数据进行一些统计。我有两个 17x206x378 矩阵,其中维度 1 是来自同一组的主题(因此矩阵 1 中有 17 个主题,矩阵 2 中有 17 个主题)。我想执行测试,所以我得到 206 个 p 值。然后我想对三维中的 378 个元素中的每一个单独执行此操作。

假设 u 是 17x206x378 矩阵,d 是不同的 17x206x378 矩阵。 我基本上是从这样做开始的: [h,p,ci,s] = ttest2(u,d)

这实际上给了我一个 1x206x378 大小的 p 矩阵,所以一切看起来都很棒。

然后为了快速检查,我刚刚从每个矩阵中提取了第一个第三维元素: u1=u(:,:,1); d1=d(:,:,1);

并通过您所期望的对这些数据运行 test2: [h1,p1,ci1,s1] = ttest2(u1,d1);

我再次得到一个 1x206 p1-matrix 的结果,但值与 1x206x378 p-matrix 中的值不同。当我绘制 p(:,:,1) 和 p1 向量中的值时,结果图看起来非常相似,但并不完全相同。 显然,其中一个给出了显着的结果(低于 0.05),而在某些情况下另一个没有,我不想报告虚假结果,所以我想有 2 个问题?

1) 我的印象是我正在对相同的数据进行测试,那么这里到底发生了什么? 2) 如果我最终想为 378 个三维元素中的每一个获得 206 个 p 值,那么正确的方法是什么?

感谢您的帮助!

【问题讨论】:

    标签: matlab matrix statistics


    【解决方案1】:

    我运行了以下代码:

    u = rand(17,206,378);
    d = rand(17,206,378);
    u1 = u(:,:,1);
    d1 = d(:,:,1);
    [h,p,ci,s] = ttest(u,d);
    [h1,p1,ci1,s1] = ttest(u1,d1);
    sum(abs(p1(1,:)- p(1,:,1)))
    

    并且输出为0,说明p和p1对应的元素相同。可能是索引问题。

    【讨论】: