Matlab中的不平衡Anova

时间:2014-10-27 18:01:59

标签: matlab statistics anova

我是Matlab的新手,我不太确定这是怎么做的。

鉴于如此不平衡的数据集:

g1   g2   g3
____________
3    4    2
2    1    6
6    3    1
5    6
     9

您如何对此数据集执行ANOVA?它目前保存为三个数组。

如果所有列的长度相同,

anova1(SomeDataset)工作正常,但Matlab不喜欢连接不同长度的数组。我需要使用不同的数据结构吗?谢谢!

1 个答案:

答案 0 :(得分:3)

您可以像往常一样使用anova1,但是您需要对数据进行分组并告诉MATLAB它们已经分组并且它应该可以工作:

clc
clear

x1 = [3;2;6;5];
x2 = [4;1;3;6;9];
x3 = [2;6;1];

data = [x1' x2' x3']; %// Create row vector with your data
group = {'G1','G1','G1','G1','G2','G2','G2','G2','G2','G3','G3','G3'}; %// set the groups according to the data above

[p1] = anova1(data, group,'off') %// Use the 'off' option to prevent the table/box plot from showing up.

p1 =

    0.7119

编辑: Mhh玩完之后看起来好像你用NaN填充向量,这样它们的长度就相同了;我的意思是它给出了相同的p值,并且箱形图看起来相同。我不知道它是否有效,所以我会选择第一种方法:)

代码:

z1 = [3;2;6;5;NaN];
z2 = [4;1;3;6;9];
z3 = [2;6;1;NaN;NaN];

Z = [z1 z2 z3]
[p2] = anova1(Z)