trying to do anova1 for multiple classes

3 ビュー (過去 30 日間)
Abdullah Almohammadi
Abdullah Almohammadi 2022 年 9 月 6 日
回答済み: Shivansh 2023 年 9 月 29 日
i have 4 classes of size (72,22,22) and i want to do anova1 for each pair of the (22,22) in those classes .
for example; i wanna grab, let's say, pair (2,3) in each class and do the anova for each pair in the 4 arrays, so the output would be an array of (22,22)representing P-values of each pair across 4 classes. hopefullay my code explains what i am trying to say :)
i have tried this piece of code but im not sure cuz the results are kinda odd; i guess the issue is in 2 for loops. here is the code
>> x = load("plv_8_12.mat");
x = x.plv;
size(x)
ans =
2592 22 22
S1C1 =x(1:72,:,:);
S1C2 = x(649:720,:,:);
S1C3 = x(1297:1368,:,:);
S1C4 = x(1945:2016,:,:);
p_all = [];
for x =1:22
for y=1:22
tc1 = S1C1(:,x,y);
tc2 = S1C2(:,x,y);
tc3 = S1C3(:,x,y);
tc4 = S1C4(:,x,y);
temp = [tc1 tc2 tc3 tc4];
%p_all(x,y) = anova1(temp);
[p,tbl,stats]=anova1(temp);
close all
end
end

回答 (1 件)

Shivansh
Shivansh 2023 年 9 月 29 日
Hi Abdullah,
I understand that you want to get results with anova1 function for each pair of the classes defined by you.
Your code looks fine, but there is a small issue with the way you are storing the p-values. I believe that the issue lies in storage of p-values for each pair of (x,y) in the loop. The 'p' variable is getting overwritten in each iteration of the loop instead of being stored. To store the p-values for each pair, you can modify your code as follows:
x = load("plv_8_12.mat");
x = x.plv;
size(x)
ans =
2592 22 22
S1C1 = x(1:72,:,:);
S1C2 = x(649:720,:,:);
S1C3 = x(1297:1368,:,:);
S1C4 = x(1945:2016,:,:);
p_all = zeros(22, 22); % Initialize p-values matrix
for x = 1:22
for y = 1:22
tc1 = S1C1(:,x,y);
tc2 = S1C2(:,x,y);
tc3 = S1C3(:,x,y);
tc4 = S1C4(:,x,y);
temp = [tc1 tc2 tc3 tc4];
[p, ~, ~] = anova1(temp);
p_all(x, y) = p; % Store p-value in the matrix
end
end
In this modified code, I added a `p_all` matrix to store the p-values for each pair of (x, y) in the loop. The `p_all` matrix is initialized with zeros, and in each iteration of the loop, the corresponding p-value is stored in the matrix using the indices (x, y). This way, you will have the p-values for each pair of (x, y) across the four classes in the `p_all` matrix.
I hope it resolves your issue!

カテゴリ

Help Center および File ExchangeAnalysis of Variance and Covariance についてさらに検索

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by