问题描述
应用数理统计的t检验方法给出相关度的排序,依据是p值越小,相关度越高。
methylationData.csv包含TCGA数据库一部分甲基化数据,说明如下:
样本编号以“01”结尾的代表癌症组织,“11”结尾的代表正常组织;
求解思路
利用xlread读取文件,根据表头01和11的区别把癌症组织数据和正常组织数据区分开。再通过vartest2求各组数据方差,分别按两种情况进行ttest2检验。去除无效行,并将结果用sort函数排序。将结果输出为result.xls。
程序代码
[data text]= xlsread("methylationData.csv"); %%文件读取
[data_r data_c]=size(data);
[text_r text_c]=size(text);
name=text(2:text_r,1);
cancer=[];
health=[];
for i=2:text_c
k=data(:,i-1);
if contains(cell2mat(text(1, i)), '-01')
cancer=[cancer k];
else
health=[health k];
end
end
all_p=[];%%判断方差做t检验
for i=1:data_r
var=vartest2(cancer(i,:),health(i,:));
if var==0
[h,p]=ttest2(cancer(i,:),health(i,:), 'Vartype', 'equal');
else
[h,p]=ttest2(cancer(i,:),health(i,:), 'Vartype', 'unequal');
all_p=[all_p;p];
end
end
[all_p_sorted,I] = sort(all_p);%%排序
name_sorted=name(I);
all_p_sorted=all_p_sorted(~isnan(all_p_sorted));
[name_r name_c]=size(all_p_sorted);
name_sorted=name_sorted(1:name_r,1);
all_p_sorted=num2cell(all_p_sorted);
result=[name_sorted all_p_sorted];
xlswrite('result.xls',result);
大学在读,一些作业随便发发给自己做个记录。(实验报告删了好多东西)