我是Matlab的新手,我不太确定这是怎么做的。
鉴于如此不平衡的数据集:
g1 g2 g3
____________
3 4 2
2 1 6
6 3 1
5 6
9
您如何对此数据集执行ANOVA?它目前保存为三个数组。
如果所有列的长度相同, anova1(SomeDataset)
工作正常,但Matlab不喜欢连接不同长度的数组。我需要使用不同的数据结构吗?谢谢!
答案 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)