设置重复测量方差分析MATLAB函数
6视图(30天)
显示旧的评论
大家好,
我想要运行一个方差分析比较3治疗(标记为1、2和3),然后运行一个因果对比治疗如果方差分析显示差异。我有16个人都得到3种不同的治疗方法和治疗的患者有3个独立的测量在同一时间。这是我迄今为止的代码:
数据= readtable (“Data.xlsx”);
%去除“病人”列
t =数据(:,2:结束);
%在设计
WithinDesign =表((1:3)”,“VariableNames”,{“测量”});
%重复度量模型
rm = fitrm (t)“治疗AA-FE ~”,“WithinDesign”,WithinDesign);
%球形检验
rm.mauchly
%方差分析
ranova (rm)
我知道的数据不通过球形测试caclulated rm。mauchly,但我仍想知道是否我的方差分析设置代表我想获得从方差分析在未来我想做这个。
接受的答案
斯科特·麦肯齐
2022年7月25日
编辑:斯科特·麦肯齐
2022年7月25日
@Jacob Jacobo
,您的设置
fitrm
略是错误的,因为你只有一个受试的因素。下面是我整理的AA因变量。治疗AA的影响显著,
F
(2、30)= 31.3,
p
<。。两两比较的所有六个也重要。你会得到类似的结果为IE和FE因变量。
M = readmatrix (“//www.tianjin-qmedu.com/matlabcentral/answers/uploaded_files/1073380/Data.xlsx”);
%提取和重组数据AA因变量(每主题,1行1列每治疗)
AA =重塑(M (:, 3), [], 3)
%把AA数据导入表中
T = array2table (AA,“VariableNames”,{“T1”,《终结者2》,“T3”});
withinDesign =表((1 2 3)',“VariableNames”,{“治疗”});
withinDesign。治疗=分类(withinDesign.Treatment);
rm = fitrm (T)“T1-T3 ~ 1”,“WithinDesign”,withinDesign);
在= ranova (rm,“WithinModel”,“治疗”);
%输出传统方差分析表
disp (anovaTable (,“AA”));
%的成对比较(3治疗,因此6比较)
multcompare (rm,“治疗”)
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%函数来创建一个传统方差分析表过于复杂
%和令人困惑的方差分析表由ranova函数。
函数[s] = anovaTable (dvName)
c = table2cell(在);
% F和p列删除错误的条目
为i = 1:尺寸(c, 1)
如果c {4} = = 1
c (4) = {”};
结束
如果c {5} = = 5
c(我,5)= {”};
结束
结束
%使用常规标签实际上列
效果= AT.Properties.RowNames;
为i = 1:长度(效果)
tmp ={我}的影响;
tmp =擦掉(tmp,”(拦截):“);
tmp = strrep (tmp,“错误”,“参与者”);
效果(我)= {tmp};
结束
%确定所需表的宽度
fieldWidth1 = max (cellfun (“长度”、效果));%列宽度的影响
fieldWidth2 = 57;%对df宽度,SS,女士,F, p列
barDouble = repmat (“=”1 fieldWidth1 + fieldWidth2);
barSingle = repmat (“- - -”1 fieldWidth1 + fieldWidth2);
%重组数据
c = c(2:最终,[2 1 3 4 5]);
c = [num2cell (repmat (fieldWidth1、尺寸(c, 1), 1)),效果(2:结束),c) ';
%创建方差分析表
s = sprintf (“% s \ n方差分析表”,dvName);
s = [s sprintf (“% s \ n”barDouble)];
s = [s sprintf (' % - * % 4 s % 11 s % 14年代% 9 s % 9 s \ n”fieldWidth1,“效应”,“df”,“党卫军”,“女士”,“F”,“p”));
s = [s sprintf (“% s \ n”barSingle)];
s = [s sprintf (% - *年代% 4 d % 14.5 f % 14.5 f % 10.3 f % 10.4 f \ n 'c {:})];
s = [s sprintf (“% s \ n”barDouble)];
结束