2014-10-27 105 views
0

我有点新Matlab和我不太清楚如何做到这一点。不平衡方差分析在Matlab

鉴于不平衡的数据集,像这样:

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

如何将你对这个数据集进行方差分析?它目前保存为三个数组。

anova1(SomeDataset)工作正常,如果所有列的长度相同,但Matlab的不喜欢不同长度的串联阵列。我需要使用不同的数据结构吗?谢谢!

回答

1

可以使用的anoval像往常一样,但你需要将你的数据,并告诉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) 
+0

伯努瓦谢谢!我使用分组来解决它,但我喜欢NaN方法。对于较大的数据集可能会更快。此外,repmat功能可用于设置组。 – jsnelgro 2014-10-27 23:47:50

+0

大那么高兴你理解了它!你是对的NaN方法可以证明对于大型数据集非常有用:) – 2014-10-28 00:00:25