【问题标题】:signrank test in a three-dimensional array in MATLABMATLAB中三维数组中的signrank测试
【发布时间】:2014-10-06 18:39:32
【问题描述】:

我有一个 60x60x35 数组,想计算 Wilcoxon 符号秩检验,以计算第三个数组维度(即 35 个值)中每个元素值的中值是否不为零。因此,我希望我的结果在两个 60x60 数组中 - 值分别为 0 和 1,具体取决于测试统计数据,并在具有相应 p 值的单独数组中。

我面临的问题是以一种方式指定命令,即所需的输出将具有适当的维度,并且将在数组的适当维度上进行计算。

感谢您的帮助,祝您一切顺利!

【问题讨论】:

  • 我不太适合统计学,您知道吗?如果可以,请详细说明如何计算 p 值?
  • [p,h] = signrank(M) - 这将返回矩阵 M 的有符号秩检验的 p 值。h 是逻辑值(0 或 1),其中 h=1 表示拒绝零假设。

标签: arrays matlab statistics


【解决方案1】:

因此,解决问题的一种方法是使用嵌套的 for 循环。假设您的数据存储在data

data=rand(60,60,35);
size_data=size(data);
p=zeros(size_data(1),size_data(2));
p(:,:)=NaN;
h=zeros(size_data(1),size_data(2));
h(:,:)=NaN;
for k=1:size_data(1)
    for l=1:size_data(2)
       tmp_data=data(k,l,:);
       tmp_data=reshape(tmp_data,1,numel(tmp_data));
       [p(k,l), h(k,l)]=signrank(tmp_data);
    end
end

我正在做的是将 p,h 的内存预分配为 60x60 矩阵。然后我将它们设置为 NaN,因此如果您可以轻松查看某事是否出错(0 将是可接受的结果)。现在我遍历所有元素并将实际数据数组存储在一个新变量中。 signrank 需要数据是一个数组,所以我将它重塑为二维。
我想你可以使用bsxfun 跳过这些循环

【讨论】:

  • 非常感谢,@小黄人!这真的很有帮助,正是我所需要的。
猜你喜欢
  • 2012-04-01
  • 1970-01-01
  • 2017-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-18
相关资源
最近更新 更多