Matlab 中的不平衡方差分析

jsn*_*gro 1 statistics matlab anova

我对 Matlab 有点陌生,不太清楚这是如何完成的。

给定一个不平衡的数据集,如下所示:

g1   g2   g3
____________
3    4    2
2    1    6
6    3    1
5    6
     9
Run Code Online (Sandbox Code Playgroud)

您将如何对此数据集执行方差分析?目前它被保存为三个数组。

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

Ben*_*_11 5

您可以像往常一样使用 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
Run Code Online (Sandbox Code Playgroud)

编辑:嗯,玩过之后,看起来如果你用 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)
Run Code Online (Sandbox Code Playgroud)